Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # app.py
- from flask import Flask, request, redirect, url_for, make_response, session, flash, jsonify
- from os import urandom
- from functools import wraps
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates'))
- app = Flask(__name__)
- app.secret_key = urandom(24)
- @app.route('/')
- def welcome():
- return 'Welcome my friend!'
- def ensure_logged_in(fn):
- @wraps(fn)
- def wrapper(*args, **kwargs):
- if not session.get('user_id'):
- flash("Please log in first")
- return redirect(url_for('login'))
- return fn(*args, **kwargs)
- return wrapper
- @app.route('/hello', methods=['GET'])
- @ensure_logged_in
- def hello():
- template = env.get_template('index.html')
- return template.render(username=session['user_id'])
- @app.route('/login', methods=['GET', 'POST'])
- def login():
- r = request
- if r.authorization and r.authorization.username == 'TRAIN' and r.authorization.password == 'TuN3L':
- session['user_id'] = 'TRAIN'
- return redirect(url_for('hello'))
- return make_response('Could not verify!', 401, {'WWW-Authenticate': 'Basic realm="Login Required'})
- @app.route('/logout', methods=['GET', 'POST'])
- @ensure_logged_in
- def logout():
- session.pop('user_id')
- return redirect(url_for('welcome'))
- @app.route('/trains', methods=['GET', 'POST'])
- @ensure_logged_in
- def trains():
- if request.method == 'POST':
- new_data = request.get_json()
- new_train_dict = {
- "who": new_data['who'],
- "where": new_data['where'],
- "trucks": new_data['trucks'],
- "locomotive": new_data['locomotive'],
- "date": new_data['date']
- }
- if 'trains' not in session.keys():
- dict_of_trains = {}
- else:
- dict_of_trains = session['trains']
- number_of_trains = len(dict_of_trains)
- number_of_trains = number_of_trains + 1
- dict_of_trains[number_of_trains] = new_train_dict
- session['trains'] = dict_of_trains
- adress = 'https://jfpio-da.herokuapp.com/trains/<' + str(number_of_trains) + '>?format=json'
- #return redirect(adress, code=302)
- return jsonify(new_train_dict)
- if request.method == 'GET':
- if 'trains' not in session.keys():
- dict_of_trains = {}
- else:
- dict_of_trains = session['trains']
- format_of_info = request.args.get('format')
- if format_of_info == 'json':
- return jsonify(dict_of_trains)
- else:
- return dict_of_trains
- @app.route('/trains/<id>')
- def show_train_info(id):
- list_of_trains = session['trains']
- try:
- train_info = list_of_trains[id]
- except IndexError:
- return 'Nie ma takiego pociągu'
- format_of_info = request.args.get('format')
- if format_of_info == 'json':
- return jsonify(train_info)
- else:
- return train_info
- if __name__ == '__main__':
- app.run(debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement