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