Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # app.py
- from flask import Flask, request, make_response, render_template, jsonify, redirect
- from functools import wraps
- import json
- app = Flask(__name__)
- fishes_db = {}
- last_id = 0
- def get_new_id():
- global last_id
- last_id += 1
- return f'id_{last_id}'
- def login_required(f):
- @wraps(f)
- def decorated(*args, **kwargs):
- is_logged = request.cookies.get('logged')
- if is_logged == 'True':
- return f(*args, **kwargs)
- else:
- return make_response(
- 'You are not logged in',
- 401,
- {'WWW-Authenticate': 'Basic realm="Login Required"'}
- )
- return decorated
- @app.route('/')
- def hello_world():
- return f''
- @app.route('/login', methods=['POST'])
- def login():
- auth = request.authorization
- print(auth)
- if auth and auth.username == 'Akwarysta69' and auth.password == 'J3si07r':
- resp = redirect('/hello')
- resp.set_cookie('logged', 'True')
- return resp
- else:
- return make_response(
- 'Wrong login or password',
- 401,
- {}
- )
- @app.route('/logout', methods=['POST'])
- @login_required
- def logout():
- resp = make_response('OK', 200, '')
- resp.set_cookie('logged', '', expires=0)
- return resp
- @app.route('/hello', methods=['GET'])
- @login_required
- def hello_user():
- return render_template(
- 'hello_user.html',
- user='Akwarysta69'
- )
- @app.route('/fishes', methods=['GET', 'POST'])
- @login_required
- def fishes_info():
- global fishes_db
- if request.method == 'GET':
- return jsonify(fishes_db)
- elif request.method == 'POST':
- new_fish = dict(request.get_json())
- fishes_db[get_new_id()] = new_fish
- return 'OK'
- @app.route('/fishes/<fish_id>', methods=['GET', 'PUT', 'DELETE', 'PATCH'])
- @login_required
- def fish_info(fish_id):
- global fishes_db
- if request.method == 'GET':
- return jsonify(fishes_db[fish_id])
- elif request.method == 'PUT':
- new_fish = dict(request.get_json())
- fishes_db[fish_id] = new_fish
- return 'OK'
- elif request.method == 'DELETE':
- fishes_db.pop(fish_id)
- return 'OK'
- elif request.method == 'PATCH':
- new_values = dict(request.get_json())
- for k, v in new_values.items():
- fishes_db[fish_id][k] = v
- return 'OK'
- if __name__ == '__main__':
- app.run(debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement