Added cron field to database

This commit is contained in:
2022-04-05 10:51:09 +02:00
parent e65933ac52
commit 835beed17d
10 changed files with 203 additions and 63 deletions

View File

@@ -1,12 +1,10 @@
import os
from apiflask import APIBlueprint, abort
from app.db import database as db
from app.helper_functions import make_response, get_email_or_abort_401
from app.auth import auth
from app.db import database as db
from app.helper_functions import make_response, get_email_or_abort_401, get_user
from app.schema import TelegramIdSchema, UsersSchema
from app.models import User
telegram_blueprint = APIBlueprint('telegram', __name__, url_prefix='/api')
__location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__)))
@@ -23,7 +21,8 @@ def add_keyword(data):
if not check_if_telegram_user_id_data_exists(data):
abort(400, message="User ID missing")
query_user = db.session.query(User).filter_by(email=email).first()
query_user = get_user(email)
query_user.telegram_user_id = data['telegram_user_id']
db.session.commit()

View File

@@ -1,15 +1,14 @@
import datetime
import os
from flask import current_app
import jwt
from apiflask import APIBlueprint, abort
from app.db import database as db
from app.helper_functions import check_password, hash_password, abort_if_no_admin, make_response, get_email_or_abort_401
from app.models import User
from app.schema import UsersSchema, TokenSchema, LoginDataSchema, AdminDataSchema, DeleteUserSchema, RegisterDataSchema, UpdateUserDataSchema
from app.auth import auth
from app.db import database as db
from app.helper_functions import check_password, hash_password, abort_if_no_admin, make_response, get_email_or_abort_401, get_user
from app.models import User
from app.schema import UsersSchema, TokenSchema, LoginDataSchema, AdminDataSchema, DeleteUserSchema, RegisterDataSchema, UpdateUserDataSchema, CronDataSchema
from flask import current_app
users_blueprint = APIBlueprint('users', __name__, url_prefix='/api')
__location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__)))
@@ -36,9 +35,9 @@ def users():
def user():
email = get_email_or_abort_401()
res = db.session.query(User).filter_by(email=email).first().as_dict()
query_user = get_user(email)
return make_response(res, 200, "Successfully received current user data")
return make_response(query_user.as_dict(), 200, "Successfully received current user data")
@users_blueprint.route('/user/login', methods=['POST'])
@@ -55,10 +54,7 @@ def login(data):
email = data['email']
password = data['password']
query_user = db.session.query(User).filter_by(email=email).first()
if query_user is None: # email doesn't exist
abort(500, message="Unable to login")
query_user = get_user(email)
if not check_password(query_user.password, password.encode("utf-8")): # Password incorrect
abort(500, message="Unable to login")
@@ -98,7 +94,8 @@ def register(data):
email=email,
username=username,
password=hash_password(password),
admin=False
admin=False,
cron="0 8 * * *"
)
db.session.add(new_user)
db.session.commit()
@@ -114,7 +111,7 @@ def register(data):
def update_user(data):
email = get_email_or_abort_401()
query_user = db.session.query(User).filter_by(email=email).first()
query_user = get_user(email)
if check_if_password_data_exists(data):
query_user.password = hash_password(data['password'])
@@ -144,10 +141,7 @@ def set_admin(data):
email = data['email']
admin = data['admin']
query_user = db.session.query(User).filter_by(email=email).first()
if query_user is None: # Username doesn't exist
abort(500, message="Unable to update user")
query_user = get_user(email)
query_user.admin = admin
db.session.commit()
@@ -155,6 +149,23 @@ def set_admin(data):
return make_response({}, 200, "Successfully updated users admin rights")
@users_blueprint.route('/user/setCron', methods=['PUT'])
@users_blueprint.output({}, 200)
@users_blueprint.input(schema=CronDataSchema)
@users_blueprint.auth_required(auth)
@users_blueprint.doc(summary="Set update cron", description="Set update cron of specified user")
def set_cron(data):
email = get_email_or_abort_401()
if not check_if_cron_data_exists(data):
abort(400, "Cron data missing")
get_user(email).cron = data['cron']
db.session.commit()
return make_response({}, 200, "Successfully updated users cron")
@users_blueprint.route('/user', methods=['DELETE'])
@users_blueprint.output({}, 200)
@users_blueprint.input(schema=DeleteUserSchema)
@@ -216,3 +227,13 @@ def check_if_admin_data_exists(data):
return False
return True
def check_if_cron_data_exists(data):
if "cron" not in data:
return False
if data['cron'] == "" or data['cron'] is None:
return False
return True