100 lines
3.1 KiB
Python
100 lines
3.1 KiB
Python
from flask import Blueprint, render_template, redirect, url_for, request
|
|||
|
|
from flask_login import login_required, current_user
|
||
|
|
from models import db
|
||
|
|
from models import User, Item
|
||
|
|
import json
|
||
|
|
from sqlalchemy import desc, text
|
||
|
|
|
||
|
|
api_bp = Blueprint("api", __name__, url_prefix="/api")
|
||
|
|
|
||
|
|
@api_bp.route("/validate_key", methods=["POST"])
|
||
|
|
def validate_key():
|
||
|
|
result={}
|
||
|
|
result['status']=0
|
||
|
|
result['data'] = ''
|
||
|
|
if "key" in request.form:
|
||
|
|
key = request.form["key"]
|
||
|
|
print(key)
|
||
|
|
if key == 'NogNietNodigHier':
|
||
|
|
result['status'] = 1
|
||
|
|
else:
|
||
|
|
result['message'] = 'Unknown Application-Key'
|
||
|
|
return json.dumps(result), 200
|
||
|
|
|
||
|
|
@api_bp.route("/login", methods=["POST"])
|
||
|
|
def login():
|
||
|
|
result={}
|
||
|
|
result['status']=0
|
||
|
|
result['data'] = ''
|
||
|
|
if "user" in request.form and "password" in request.form:
|
||
|
|
user = request.form["user"]
|
||
|
|
password = request.form["password"]
|
||
|
|
print(user)
|
||
|
|
user = User.query.filter_by(name=user).first()
|
||
|
|
if user and user.check_password(password):
|
||
|
|
if not user.is_approved:
|
||
|
|
result['message'] = 'User is pending approval.'
|
||
|
|
else:
|
||
|
|
result['status'] = 1
|
||
|
|
result['data'] = user.as_dict()
|
||
|
|
else:
|
||
|
|
result['message'] = 'User or password unknown'
|
||
|
|
return json.dumps(result), 200
|
||
|
|
|
||
|
|
@api_bp.route("/register", methods=["POST"])
|
||
|
|
def register():
|
||
|
|
result={}
|
||
|
|
result['status']=0
|
||
|
|
result['data'] = ''
|
||
|
|
if "user" in request.form and "password" in request.form:
|
||
|
|
username = request.form["user"]
|
||
|
|
password = request.form["password"]
|
||
|
|
print(username)
|
||
|
|
user = User.query.filter_by(name=username).first()
|
||
|
|
if user:
|
||
|
|
result['message'] = 'Username is not unique. Pick something else please.'
|
||
|
|
else:
|
||
|
|
result['status'] = 2
|
||
|
|
result['message'] = 'Registration Ok. Awaiting approval.'
|
||
|
|
user = User(name=username)
|
||
|
|
user.set_password(password)
|
||
|
|
db.session.add(user)
|
||
|
|
db.session.commit()
|
||
|
|
|
||
|
|
return json.dumps(result), 200
|
||
|
|
|
||
|
|
@api_bp.route("/load_lists", methods=["POST"])
|
||
|
|
def load_lists():
|
||
|
|
print("Trying to load lists")
|
||
|
|
result={}
|
||
|
|
result['status']=1 # from this call the result is always 1, empty or not
|
||
|
|
result['data'] = ''
|
||
|
|
if "userid" in request.form:
|
||
|
|
userid = int(request.form["userid"])
|
||
|
|
|
||
|
|
print(userid)
|
||
|
|
user = User.query.filter_by(id=userid).first()
|
||
|
|
if user:
|
||
|
|
result['data'] = user.all_my_lists_as_dict()
|
||
|
|
|
||
|
|
return json.dumps(result), 200
|
||
|
|
|
||
|
|
@api_bp.route("/load_items", methods=["POST"])
|
||
|
|
def load_items():
|
||
|
|
print("Trying to load items")
|
||
|
|
result={}
|
||
|
|
result['status']=1 # from this call the result is always 1, empty or not
|
||
|
|
result['data'] = ''
|
||
|
|
if "listid" in request.form:
|
||
|
|
listid = int(request.form["listid"])
|
||
|
|
|
||
|
|
print(listid)
|
||
|
|
items=Item.query.filter_by(listofitems_id=listid, is_suggestion=False).order_by(text("is_checked, category, label")).all()
|
||
|
|
print(items)
|
||
|
|
if items:
|
||
|
|
result['data'] = [ i.as_dict() for i in items]
|
||
|
|
|
||
|
|
print(result)
|
||
|
|
return json.dumps(result), 200
|
||
|
|
|