Advertisement
Guest User

Untitled

a guest
Mar 31st, 2019
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.05 KB | None | 0 0
  1. # app.py
  2. from flask import Flask, request, redirect, url_for, make_response, session, flash, jsonify
  3. from os import urandom
  4. from functools import wraps
  5. from jinja2 import Environment, FileSystemLoader
  6.  
  7. env = Environment(loader=FileSystemLoader('templates'))
  8. app = Flask(__name__)
  9. app.secret_key = urandom(24)
  10.  
  11.  
  12. @app.route('/')
  13. def welcome():
  14.    return 'Welcome my friend!'
  15.  
  16.  
  17. def ensure_logged_in(fn):
  18.     @wraps(fn)
  19.     def wrapper(*args, **kwargs):
  20.         if not session.get('user_id'):
  21.             flash("Please log in first")
  22.             return redirect(url_for('login'))
  23.         return fn(*args, **kwargs)
  24.  
  25.     return wrapper
  26.  
  27.  
  28. @app.route('/hello', methods=['GET'])
  29. @ensure_logged_in
  30. def hello():
  31.     template = env.get_template('index.html')
  32.     return template.render(username=session['user_id'])
  33.  
  34.  
  35. @app.route('/login', methods=['GET', 'POST'])
  36. def login():
  37.     r = request
  38.     if r.authorization and r.authorization.username == 'TRAIN' and r.authorization.password == 'TuN3L':
  39.         session['user_id'] = 'TRAIN'
  40.         return redirect(url_for('hello'))
  41.  
  42.     return make_response('Could not verify!', 401, {'WWW-Authenticate': 'Basic realm="Login Required'})
  43.  
  44.  
  45. @app.route('/logout', methods=['GET', 'POST'])
  46. @ensure_logged_in
  47. def logout():
  48.     session.pop('user_id')
  49.     return redirect(url_for('welcome'))
  50.  
  51.  
  52. @app.route('/trains', methods=['GET', 'POST'])
  53. @ensure_logged_in
  54. def trains():
  55.     if request.method == 'POST':
  56.         new_data = request.get_json()
  57.         new_train_dict = {
  58.                 "who": new_data['who'],
  59.                 "where": new_data['where'],
  60.                 "trucks": new_data['trucks'],
  61.                 "locomotive": new_data['locomotive'],
  62.                 "date": new_data['date']
  63.         }
  64.         if 'trains' not in session.keys():
  65.             dict_of_trains = {}
  66.         else:
  67.             dict_of_trains = session['trains']
  68.         number_of_trains = len(dict_of_trains)
  69.         number_of_trains = number_of_trains + 1
  70.         dict_of_trains[number_of_trains] = new_train_dict
  71.         session['trains'] = dict_of_trains
  72.         adress = 'https://jfpio-da.herokuapp.com/trains/<' + str(number_of_trains) + '>?format=json'
  73.         #return redirect(adress, code=302)
  74.         return jsonify(new_train_dict)
  75.  
  76.     if request.method == 'GET':
  77.         if 'trains' not in session.keys():
  78.             dict_of_trains = {}
  79.         else:
  80.             dict_of_trains = session['trains']
  81.         format_of_info = request.args.get('format')
  82.         if format_of_info == 'json':
  83.             return jsonify(dict_of_trains)
  84.         else:
  85.             return dict_of_trains
  86.  
  87.  
  88.  
  89. @app.route('/trains/<id>')
  90. def show_train_info(id):
  91.     list_of_trains = session['trains']
  92.     try:
  93.         train_info = list_of_trains[id]
  94.     except IndexError:
  95.         return 'Nie ma takiego pociągu'
  96.     format_of_info = request.args.get('format')
  97.     if format_of_info == 'json':
  98.         return jsonify(train_info)
  99.     else:
  100.         return train_info
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108. if __name__ == '__main__':
  109.     app.run(debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement