From e4b4db3405844f905c80a7d5a2a00b3a5eab9dd2 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Wed, 2 Sep 2020 01:10:54 +0200 Subject: [PATCH] Init of schedule plugin --- flaschengeist/modules/schedule/__init__.py | 660 ++++++++++----------- flaschengeist/modules/schedule/routes.py | 413 ------------- setup.py | 5 +- 3 files changed, 317 insertions(+), 761 deletions(-) delete mode 100644 flaschengeist/modules/schedule/routes.py diff --git a/flaschengeist/modules/schedule/__init__.py b/flaschengeist/modules/schedule/__init__.py index ff2fc7d..41b70ee 100644 --- a/flaschengeist/modules/schedule/__init__.py +++ b/flaschengeist/modules/schedule/__init__.py @@ -1,24 +1,287 @@ from flask import Blueprint, request, jsonify -#from geruecht.decorator import login_required -#import geruecht.controller.mainController as mc -#import geruecht.controller.accesTokenController as ac -#from geruecht.model import USER -#from datetime import datetime, time, date -#from geruecht.exceptions import DayLocked -#from geruecht.logger import getDebugLogger, getCreditLogger, getJobsLogger -#from geruecht.model.accessToken import AccessToken +from flaschengeist.system.decorator import login_required +from flaschengeist import logger +from datetime import datetime -user = Blueprint("user", __name__) +import .roles -#mainController = mc.MainController() -#accesTokenController = ac.AccesTokenController() +schedule = Blueprint("schedule", __name__) -debug = getDebugLogger() +@schedule.route("/schedule/jobs", methods=['POST']) +@login_required(roles=['schedule_read']) +def _getUsers(**kwrags): + logger.debug("/schedule/jobs") + try: + data = request.get_json() + from_date = data['from_date'] + to_date = data['to_date'] + from_date = datetime(from_date['year'], from_date['month'], from_date['day']) + to_date = datetime(to_date['year'], to_date['month'], to_date['day']) + lockedDays = mainController.getLockedDays(from_date, to_date) + retVal = [] + for lockedDay in lockedDays: + day = datetime.combine(lockedDay['daydate'], time(12)) + retDay = { + "worker": mainController.getWorker(day), + "day": { + "date": { + "year": day.year, + "month": day.month, + "day": day.day + }, + "locked": lockedDay['locked'] + }, + "jobkinddate": mainController.getJobKindDates(day.date()) + } + retVal.append(retDay) + + logger.debug("return {{ {} }}".format(retVal)) + return jsonify(retVal) + except Exception as err: + logger.warn("exception", exc_info=True) + return jsonify({"error": str(err)}), 500 + +@schedule.route("/user/jobsOnDates", methods=['POST']) +@login_required(groups=[USER]) +def _getJobsOnDates(**kwargs): + debug.info("/user/jobsOnDates") + try: + data = request.get_json() + lockedDays = mainController.getLockedDaysFromList(data) + retVal = [] + for lockedDay in lockedDays: + day = datetime.combine(lockedDay['daydate'], time(12)) + retDay = { + "worker": mainController.getWorker(day), + "day": { + "date": { + "year": day.year, + "month": day.month, + "day": day.day + }, + "locked": lockedDay['locked'] + }, + "jobkinddate": mainController.getJobKindDates(day.date()) + } + retVal.append(retDay) + + debug.debug("return {{ {} }}".format(retVal)) + return jsonify(retVal) + except Exception as err: + debug.debug("exception", exc_info=True) + return jsonify({"error": str(err)}), 500 + +@schedule.route("/user/job", methods=['POST']) +@login_required(groups=[USER]) +def _getUser(**kwargs): + debug.info("/user/job") + try: + data = request.get_json() + day = data['day'] + month = data['month'] + year = data['year'] + date = datetime(year, month, day, 12) + lockedDay = mainController.getLockedDay(date) + if not lockedDay: + lockedDay = { + 'date': { + 'year': year, + 'month': month, + 'day': day + }, + 'locked': False + } + else: + lockedDay = { + 'date': { + 'year': year, + 'month': month, + 'day': day + }, + 'locked': lockedDay['locked'] + } + retVal = { + 'worker': mainController.getWorker(date), + 'day': lockedDay + } + debug.debug("retrun {{ {} }}".format(retVal)) + return jsonify(retVal) + except Exception as err: + debug.debug("exception", exc_info=True) + return jsonify({"error": str(err)}), 500 + + +@schedule.route("/user/addJob", methods=['POST']) +@login_required(groups=[USER]) +def _addUser(**kwargs): + debug.info("/user/addJob") + try: + if 'accToken' in kwargs: + accToken = kwargs['accToken'] + user = accToken.user + data = request.get_json() + day = data['day'] + month = data['month'] + year = data['year'] + date = datetime(year, month, day, 12) + job_kind = None + if 'job_kind' in data: + job_kind = data['job_kind'] + mainController.addWorker(user.uid, date, job_kind=job_kind, userExc=True) + retVal = mainController.getWorker(date) + debug.debug("return {{ {} }}".format(retVal)) + jobL.info("Mitglied {} {} schreib sich am {} zum Dienst ein.".format( + user.firstname, user.lastname, date.date())) + return jsonify(retVal) + except DayLocked as err: + debug.debug("exception", exc_info=True) + return jsonify({'error': str(err)}), 403 + except Exception as err: + debug.debug("exception", exc_info=True) + return jsonify({'error': str(err)}), 409 + + +@schedule.route("/user/deleteJob", methods=['POST']) +@login_required(groups=[USER]) +def _deletJob(**kwargs): + debug.info("/user/deleteJob") + try: + if 'accToken' in kwargs: + accToken = kwargs['accToken'] + user = accToken.user + data = request.get_json() + day = data['day'] + month = data['month'] + year = data['year'] + date = datetime(year, month, day, 12) + mainController.deleteWorker(user.uid, date, True) + retVal = mainController.getWorker(date) + debug.debug("return ok") + jobL.info("Mitglied {} {} entfernt sich am {} aus dem Dienst".format( + user.firstname, user.lastname, date.date())) + return jsonify(retVal) + except DayLocked as err: + debug.debug("exception", exc_info=True) + return jsonify({"error": str(err)}), 403 + except Exception as err: + debug.debug("exception", exc_info=True) + return jsonify({"error": str(err)}), 409 + +@schedule.route("/user/getJobInvites", methods=['POST']) +@login_required(groups=[USER]) +def _getJobInvites(**kwargs): + try: + debug.info("/user/getJobInvites") + from_user = None + to_user = None + on_date = None + + data = request.get_json() + + if 'from_user' in data: + from_user = data['from_user'] + if 'to_user' in data: + to_user = data['to_user'] + on_date = date(data['date']['year'], data['date']['month'], data['date']['day']) + retVal = mainController.getJobInvites(from_user, to_user, on_date) + debug.debug("return {{ {} }}".format(retVal)) + return jsonify(retVal) + except Exception as err: + debug.debug("exception", exc_info=True) + return jsonify({"error": str(err)}), 500 + +@schedule.route("/user/JobInvites", methods=['PUT', 'POST']) +@login_required(groups=[USER]) +def _JobInvites(**kwargs): + try: + debug.info("/user/JobInvites") + data = request.get_json() + if request.method == 'PUT': + mainController.setJobInvites(data) + retVal = mainController.getJobInvites(kwargs['accToken'].user.toJSON(), None, datetime.now().date()) + debug.debug("return {{ {} }}".format(retVal)) + if request.method == 'POST': + retVal = mainController.updateJobInvites(data) + + return jsonify(retVal) + except Exception as err: + debug.debug("exception", exc_info=True) + return jsonify({"error": str(err)}), 500 + +@schedule.route("/user/deleteJobInvite", methods=['POST']) +@login_required(groups=[USER]) +def _deleteJobInvite(**kwargs): + try: + debug.info("/user/deleteJobInvite") + data = request.get_json() + mainController.deleteJobInvite(data) + retVal = mainController.getJobInvites(data['from_user'], None, datetime.now().date()) + debug.debug("return {{ {} }}".format(retVal)) + return jsonify(retVal) + except Exception as err: + debug.debug("exception", exc_info=True) + return jsonify({"error": str(err)}), 500 + + +@schedule.route("/user/getJobRequests", methods=['POST']) +@login_required(groups=[USER]) +def _getJobRequests(**kwargs): + try: + debug.info("/user/getJobRequests") + from_user = None + to_user = None + on_date = None + + data = request.get_json() + + if 'from_user' in data: + from_user = data['from_user'] + if 'to_user' in data: + to_user = data['to_user'] + on_date = date(data['date']['year'], data['date']['month'], data['date']['day']) + retVal = mainController.getJobRequests(from_user, to_user, on_date) + debug.debug("return {{ {} }}".format(retVal)) + return jsonify(retVal) + except Exception as err: + debug.debug("exception", exc_info=True) + return jsonify({"error": str(err)}), 500 + +@schedule.route("/user/JobRequests", methods=['PUT', 'POST']) +@login_required(groups=[USER]) +def _JobRequests(**kwargs): + try: + debug.info("/user/JobRequests") + data = request.get_json() + if request.method == 'PUT': + mainController.setJobRequests(data) + retVal = mainController.getJobRequests(kwargs['accToken'].user.toJSON(), None, datetime.now().date()) + debug.debug("return {{ {} }}".format(retVal)) + if request.method == 'POST': + data['on_date'] = date(data['on_date']['year'], data['on_date']['month'], data['on_date']['day']) + retVal = mainController.updateJobRequests(data) + + return jsonify(retVal) + except Exception as err: + debug.debug("exception", exc_info=True) + return jsonify({"error": str(err)}), 500 + +@schedule.route("/user/deleteJobRequest", methods=['POST']) +@login_required(groups=[USER]) +def _deleteJobRequest(**kwargs): + try: + debug.info("/user/deleteJobRequest") + data = request.get_json() + mainController.deleteJobRequest(data) + retVal = mainController.getJobRequests(data['from_user'], None, datetime.now().date()) + debug.debug("return {{ {} }}".format(retVal)) + return jsonify(retVal) + except Exception as err: + debug.debug("exception", exc_info=True) + return jsonify({"error": str(err)}), 500 + +# CREDIT == Gerücht? CreditList? #creditL = getCreditLogger() -#jobL = getJobsLogger() - - -#@user.route("/user/main") +#@schedule.route("/user/main") #@login_required(groups=[USER]) #def _main(**kwargs): # debug.info("/user/main") @@ -36,7 +299,7 @@ debug = getDebugLogger() # return jsonify("error", "something went wrong"), 500 -#@user.route("/user/addAmount", methods=['POST']) +#@schedule.route("/user/addAmount", methods=['POST']) #@login_required(groups=[USER]) #def _addAmount(**kwargs): # debug.info("/user/addAmount") @@ -61,7 +324,7 @@ debug = getDebugLogger() # return jsonify({"error": "something went wrong"}), 500 -#@user.route("/user/saveConfig", methods=['POST']) +#@schedule.route("/user/saveConfig", methods=['POST']) #@login_required(groups=[USER]) #def _saveConfig(**kwargs): # debug.info("/user/saveConfig") @@ -81,333 +344,38 @@ debug = getDebugLogger() # except Exception as err: # debug.debug("exception", exc_info=True) # return jsonify({"error": str(err)}), 409 - - -#@user.route("/user/jobs", methods=['POST']) -#@login_required(groups=[USER]) -#def _getUsers(**kwrags): -# debug.info("/user/jobs") -# try: -# data = request.get_json() - #from_date = data['from_date'] - #to_date = data['to_date'] - #from_date = datetime( - #from_date['year'], from_date['month'], from_date['day']) - #to_date = datetime(to_date['year'], to_date['month'], to_date['day']) - #lockedDays = mainController.getLockedDays(from_date, to_date) - #retVal = [] - #for lockedDay in lockedDays: - #day = datetime.combine(lockedDay['daydate'], time(12)) - #retDay = { - #"worker": mainController.getWorker(day), - #"day": { - #"date": { - #"year": day.year, - #"month": day.month, - #"day": day.day - #}, - #"locked": lockedDay['locked'] - #}, - #"jobkinddate": mainController.getJobKindDates(day.date()) - #} - #retVal.append(retDay) - - #debug.debug("return {{ {} }}".format(retVal)) - #return jsonify(retVal) - #except Exception as err: - #debug.debug("exception", exc_info=True) - #return jsonify({"error": str(err)}), 500 - -#@user.route("/user/jobsOnDates", methods=['POST']) -#@login_required(groups=[USER]) -#def _getJobsOnDates(**kwargs): - #debug.info("/user/jobsOnDates") - #try: - #data = request.get_json() - #lockedDays = mainController.getLockedDaysFromList(data) - #retVal = [] - #for lockedDay in lockedDays: - #day = datetime.combine(lockedDay['daydate'], time(12)) - #retDay = { - #"worker": mainController.getWorker(day), - #"day": { - #"date": { - #"year": day.year, - #"month": day.month, - #"day": day.day - #}, - #"locked": lockedDay['locked'] - #}, - #"jobkinddate": mainController.getJobKindDates(day.date()) - #} - #retVal.append(retDay) - - #debug.debug("return {{ {} }}".format(retVal)) - #return jsonify(retVal) - #except Exception as err: - #debug.debug("exception", exc_info=True) - #return jsonify({"error": str(err)}), 500 - -#@user.route("/user/job", methods=['POST']) -#@login_required(groups=[USER]) -#def _getUser(**kwargs): - #debug.info("/user/job") - #try: - #data = request.get_json() - #day = data['day'] - #month = data['month'] - #year = data['year'] - #date = datetime(year, month, day, 12) - #lockedDay = mainController.getLockedDay(date) - #if not lockedDay: - #lockedDay = { - #'date': { - #'year': year, - #'month': month, - #'day': day - #}, - #'locked': False - #} - #else: - #lockedDay = { - #'date': { - #'year': year, - #'month': month, - #'day': day - #}, - #'locked': lockedDay['locked'] - #} - #retVal = { - #'worker': mainController.getWorker(date), - #'day': lockedDay - #} - #debug.debug("retrun {{ {} }}".format(retVal)) - #return jsonify(retVal) - #except Exception as err: - #debug.debug("exception", exc_info=True) - #return jsonify({"error": str(err)}), 500 - - -#@user.route("/user/addJob", methods=['POST']) -#@login_required(groups=[USER]) -#def _addUser(**kwargs): - #debug.info("/user/addJob") - #try: - #if 'accToken' in kwargs: - #accToken = kwargs['accToken'] - #user = accToken.user - #data = request.get_json() - #day = data['day'] - #month = data['month'] - #year = data['year'] - #date = datetime(year, month, day, 12) - #job_kind = None - #if 'job_kind' in data: - #job_kind = data['job_kind'] - #mainController.addWorker(user.uid, date, job_kind=job_kind, userExc=True) - #retVal = mainController.getWorker(date) - #debug.debug("return {{ {} }}".format(retVal)) - #jobL.info("Mitglied {} {} schreib sich am {} zum Dienst ein.".format( - #user.firstname, user.lastname, date.date())) - #return jsonify(retVal) - #except DayLocked as err: - #debug.debug("exception", exc_info=True) - #return jsonify({'error': str(err)}), 403 - #except Exception as err: - #debug.debug("exception", exc_info=True) - #return jsonify({'error': str(err)}), 409 - - -#@user.route("/user/deleteJob", methods=['POST']) -#@login_required(groups=[USER]) -#def _deletJob(**kwargs): - #debug.info("/user/deleteJob") - #try: - #if 'accToken' in kwargs: - #accToken = kwargs['accToken'] - #user = accToken.user - #data = request.get_json() - #day = data['day'] - #month = data['month'] - #year = data['year'] - #date = datetime(year, month, day, 12) - #mainController.deleteWorker(user.uid, date, True) - #retVal = mainController.getWorker(date) - #debug.debug("return ok") - #jobL.info("Mitglied {} {} entfernt sich am {} aus dem Dienst".format( - #user.firstname, user.lastname, date.date())) - #return jsonify(retVal) - #except DayLocked as err: - #debug.debug("exception", exc_info=True) - #return jsonify({"error": str(err)}), 403 - #except Exception as err: - #debug.debug("exception", exc_info=True) - #return jsonify({"error": str(err)}), 409 - -#@user.route("/user/storno", methods=['POST']) +# +#@schedule.route("/user/storno", methods=['POST']) #@login_required(groups=[USER]) #def _storno(**kwargs): - #""" Function for Baruser to storno amount - - #This function added to the user with the posted userID the posted amount. - - #Returns: - #JSON-File with userID and the amount - #or ERROR 401 Permission Denied - #""" - - #debug.info("/user/storno") - #try: - #if 'accToken' in kwargs: - #accToken = kwargs['accToken'] - #user = accToken.user - #data = request.get_json() - #amount = int(data['amount']) - - #date = datetime.now() - #mainController.addCredit( - #user.uid, amount, year=date.year, month=date.month) - #accToken.user = mainController.getUser(accToken.user.uid) - #retVal = accToken.user.toJSON() - #retVal['creditList'] = {credit.year: credit.toJSON() - #for credit in accToken.user.geruechte} - #debug.debug("return {{ {} }}".format(retVal)) - #creditL.info("{} {} {} storniert {} €".format( - #date, user.firstname, user.lastname, amount/100)) - #return jsonify(retVal) - #except Exception as err: - #debug.debug("exception", exc_info=True) - #return jsonify({"error": str(err)}), 500 - - -#@user.route("/user/getJobInvites", methods=['POST']) -#@login_required(groups=[USER]) -#def _getJobInvites(**kwargs): - #try: - #debug.info("/user/getJobInvites") - #from_user = None - #to_user = None - #on_date = None - - #data = request.get_json() - - #if 'from_user' in data: - #from_user = data['from_user'] - #if 'to_user' in data: - #to_user = data['to_user'] - #on_date = date(data['date']['year'], data['date']['month'], data['date']['day']) - #retVal = mainController.getJobInvites(from_user, to_user, on_date) - #debug.debug("return {{ {} }}".format(retVal)) - #return jsonify(retVal) - #except Exception as err: - #debug.debug("exception", exc_info=True) - #return jsonify({"error": str(err)}), 500 - -#@user.route("/user/JobInvites", methods=['PUT', 'POST']) -#@login_required(groups=[USER]) -#def _JobInvites(**kwargs): - #try: - #debug.info("/user/JobInvites") - #data = request.get_json() - #if request.method == 'PUT': - #mainController.setJobInvites(data) - #retVal = mainController.getJobInvites(kwargs['accToken'].user.toJSON(), None, datetime.now().date()) - #debug.debug("return {{ {} }}".format(retVal)) - #if request.method == 'POST': - #retVal = mainController.updateJobInvites(data) - - #return jsonify(retVal) - #except Exception as err: - #debug.debug("exception", exc_info=True) - #return jsonify({"error": str(err)}), 500 - -#@user.route("/user/deleteJobInvite", methods=['POST']) -#@login_required(groups=[USER]) -#def _deleteJobInvite(**kwargs): - #try: - #debug.info("/user/deleteJobInvite") - #data = request.get_json() - #mainController.deleteJobInvite(data) - #retVal = mainController.getJobInvites(data['from_user'], None, datetime.now().date()) - #debug.debug("return {{ {} }}".format(retVal)) - #return jsonify(retVal) - #except Exception as err: - #debug.debug("exception", exc_info=True) - #return jsonify({"error": str(err)}), 500 - - -#@user.route("/user/getJobRequests", methods=['POST']) -#@login_required(groups=[USER]) -#def _getJobRequests(**kwargs): - #try: - #debug.info("/user/getJobRequests") - #from_user = None - #to_user = None - #on_date = None - - #data = request.get_json() - - #if 'from_user' in data: - #from_user = data['from_user'] - #if 'to_user' in data: - #to_user = data['to_user'] - #on_date = date(data['date']['year'], data['date']['month'], data['date']['day']) - #retVal = mainController.getJobRequests(from_user, to_user, on_date) - #debug.debug("return {{ {} }}".format(retVal)) - #return jsonify(retVal) - #except Exception as err: - #debug.debug("exception", exc_info=True) - #return jsonify({"error": str(err)}), 500 - -#@user.route("/user/JobRequests", methods=['PUT', 'POST']) -#@login_required(groups=[USER]) -#def _JobRequests(**kwargs): - #try: - #debug.info("/user/JobRequests") - #data = request.get_json() - #if request.method == 'PUT': - #mainController.setJobRequests(data) - #retVal = mainController.getJobRequests(kwargs['accToken'].user.toJSON(), None, datetime.now().date()) - #debug.debug("return {{ {} }}".format(retVal)) - #if request.method == 'POST': - #data['on_date'] = date(data['on_date']['year'], data['on_date']['month'], data['on_date']['day']) - #retVal = mainController.updateJobRequests(data) - - #return jsonify(retVal) - #except Exception as err: - #debug.debug("exception", exc_info=True) - #return jsonify({"error": str(err)}), 500 - -#@user.route("/user/deleteJobRequest", methods=['POST']) -#@login_required(groups=[USER]) -#def _deleteJobRequest(**kwargs): - #try: - #debug.info("/user/deleteJobRequest") - #data = request.get_json() - #mainController.deleteJobRequest(data) - #retVal = mainController.getJobRequests(data['from_user'], None, datetime.now().date()) - #debug.debug("return {{ {} }}".format(retVal)) - #return jsonify(retVal) - #except Exception as err: - #debug.debug("exception", exc_info=True) - #return jsonify({"error": str(err)}), 500 - - -#@user.route("/user/getAccessTokens", methods=['GET', 'POST']) -#@login_required(groups=[USER]) -#def _getAccessTokens(**kwargs): - #try: - #debug.info("/user/getAccessTokens") - #if request.method == 'POST': - #data = request.get_json() - #delAccToken = AccessToken(data['id'], kwargs['accToken'].user, None, None, None) - #accesTokenController.deleteAccessToken(delAccToken) - #tokens = accesTokenController.getAccessTokensFromUser(kwargs['accToken'].user) - #retVal = [] - #for token in tokens: - #retVal.append(token.toJSON()) - #debug.debug("return {{ {} }}".format(retVal)) - #return jsonify(retVal) - #except Exception as err: - #debug.debug("exception", exc_info=True) - #return jsonify({"error": str(err)}), 500 +# """ Function for Baruser to storno amount +# +# This function added to the user with the posted userID the posted amount. +# +# Returns: +# JSON-File with userID and the amount +# or ERROR 401 Permission Denied +# """ +# +# debug.info("/user/storno") +# try: +# if 'accToken' in kwargs: +# accToken = kwargs['accToken'] +# user = accToken.user +# data = request.get_json() +# amount = int(data['amount']) +# +# date = datetime.now() +# mainController.addCredit( +# user.uid, amount, year=date.year, month=date.month) +# accToken.user = mainController.getUser(accToken.user.uid) +# retVal = accToken.user.toJSON() +# retVal['creditList'] = {credit.year: credit.toJSON() +# for credit in accToken.user.geruechte} +# debug.debug("return {{ {} }}".format(retVal)) +# creditL.info("{} {} {} storniert {} €".format( +# date, user.firstname, user.lastname, amount/100)) +# return jsonify(retVal) +# except Exception as err: +# debug.debug("exception", exc_info=True) +# return jsonify({"error": str(err)}), 500 diff --git a/flaschengeist/modules/schedule/routes.py b/flaschengeist/modules/schedule/routes.py deleted file mode 100644 index 6b5e3c2..0000000 --- a/flaschengeist/modules/schedule/routes.py +++ /dev/null @@ -1,413 +0,0 @@ -from flask import Blueprint, request, jsonify -from geruecht.decorator import login_required -import geruecht.controller.mainController as mc -import geruecht.controller.accesTokenController as ac -from geruecht.model import USER -from datetime import datetime, time, date -from geruecht.exceptions import DayLocked -from geruecht.logger import getDebugLogger, getCreditLogger, getJobsLogger -from geruecht.model.accessToken import AccessToken - -user = Blueprint("user", __name__) - -mainController = mc.MainController() -accesTokenController = ac.AccesTokenController() - -debug = getDebugLogger() -creditL = getCreditLogger() -jobL = getJobsLogger() - - -@user.route("/user/main") -@login_required(groups=[USER]) -def _main(**kwargs): - debug.info("/user/main") - try: - if 'accToken' in kwargs: - accToken = kwargs['accToken'] - accToken.user = mainController.getUser(accToken.user.uid) - retVal = accToken.user.toJSON() - retVal['creditList'] = {credit.year: credit.toJSON() - for credit in accToken.user.geruechte} - debug.debug("return {{ {} }}".format(retVal)) - return jsonify(retVal) - except Exception: - debug.debug("exception", exc_info=True) - return jsonify("error", "something went wrong"), 500 - - -@user.route("/user/addAmount", methods=['POST']) -@login_required(groups=[USER]) -def _addAmount(**kwargs): - debug.info("/user/addAmount") - try: - if 'accToken' in kwargs: - accToken = kwargs['accToken'] - data = request.get_json() - amount = int(data['amount']) - date = datetime.now() - mainController.addAmount( - accToken.user.uid, amount, year=date.year, month=date.month) - accToken.user = mainController.getUser(accToken.user.uid) - retVal = accToken.user.toJSON() - retVal['creditList'] = {credit.year: credit.toJSON() - for credit in accToken.user.geruechte} - debug.debug("return {{ {} }}".format(retVal)) - creditL.info("{} {} {} fügt sich selbst {} € Schulden hinzu".format( - date, accToken.user.firstname, accToken.user.lastname, amount/100)) - return jsonify(retVal) - except Exception: - debug.debug("exception", exc_info=True) - return jsonify({"error": "something went wrong"}), 500 - - -@user.route("/user/saveConfig", methods=['POST']) -@login_required(groups=[USER]) -def _saveConfig(**kwargs): - debug.info("/user/saveConfig") - try: - if 'accToken' in kwargs: - accToken = kwargs['accToken'] - data = request.get_json() - password = data['acceptedPassword'] - data.pop('acceptedPassword') - accToken.user = mainController.modifyUser( - accToken.user, data, password) - retVal = accToken.user.toJSON() - retVal['creditList'] = {credit.year: credit.toJSON() - for credit in accToken.user.geruechte} - debug.debug("return {{ {} }}".format(retVal)) - return jsonify(retVal) - except Exception as err: - debug.debug("exception", exc_info=True) - return jsonify({"error": str(err)}), 409 - - -@user.route("/user/jobs", methods=['POST']) -@login_required(groups=[USER]) -def _getUsers(**kwrags): - debug.info("/user/jobs") - try: - data = request.get_json() - from_date = data['from_date'] - to_date = data['to_date'] - from_date = datetime( - from_date['year'], from_date['month'], from_date['day']) - to_date = datetime(to_date['year'], to_date['month'], to_date['day']) - lockedDays = mainController.getLockedDays(from_date, to_date) - retVal = [] - for lockedDay in lockedDays: - day = datetime.combine(lockedDay['daydate'], time(12)) - retDay = { - "worker": mainController.getWorker(day), - "day": { - "date": { - "year": day.year, - "month": day.month, - "day": day.day - }, - "locked": lockedDay['locked'] - }, - "jobkinddate": mainController.getJobKindDates(day.date()) - } - retVal.append(retDay) - - debug.debug("return {{ {} }}".format(retVal)) - return jsonify(retVal) - except Exception as err: - debug.debug("exception", exc_info=True) - return jsonify({"error": str(err)}), 500 - -@user.route("/user/jobsOnDates", methods=['POST']) -@login_required(groups=[USER]) -def _getJobsOnDates(**kwargs): - debug.info("/user/jobsOnDates") - try: - data = request.get_json() - lockedDays = mainController.getLockedDaysFromList(data) - retVal = [] - for lockedDay in lockedDays: - day = datetime.combine(lockedDay['daydate'], time(12)) - retDay = { - "worker": mainController.getWorker(day), - "day": { - "date": { - "year": day.year, - "month": day.month, - "day": day.day - }, - "locked": lockedDay['locked'] - }, - "jobkinddate": mainController.getJobKindDates(day.date()) - } - retVal.append(retDay) - - debug.debug("return {{ {} }}".format(retVal)) - return jsonify(retVal) - except Exception as err: - debug.debug("exception", exc_info=True) - return jsonify({"error": str(err)}), 500 - -@user.route("/user/job", methods=['POST']) -@login_required(groups=[USER]) -def _getUser(**kwargs): - debug.info("/user/job") - try: - data = request.get_json() - day = data['day'] - month = data['month'] - year = data['year'] - date = datetime(year, month, day, 12) - lockedDay = mainController.getLockedDay(date) - if not lockedDay: - lockedDay = { - 'date': { - 'year': year, - 'month': month, - 'day': day - }, - 'locked': False - } - else: - lockedDay = { - 'date': { - 'year': year, - 'month': month, - 'day': day - }, - 'locked': lockedDay['locked'] - } - retVal = { - 'worker': mainController.getWorker(date), - 'day': lockedDay - } - debug.debug("retrun {{ {} }}".format(retVal)) - return jsonify(retVal) - except Exception as err: - debug.debug("exception", exc_info=True) - return jsonify({"error": str(err)}), 500 - - -@user.route("/user/addJob", methods=['POST']) -@login_required(groups=[USER]) -def _addUser(**kwargs): - debug.info("/user/addJob") - try: - if 'accToken' in kwargs: - accToken = kwargs['accToken'] - user = accToken.user - data = request.get_json() - day = data['day'] - month = data['month'] - year = data['year'] - date = datetime(year, month, day, 12) - job_kind = None - if 'job_kind' in data: - job_kind = data['job_kind'] - mainController.addWorker(user.uid, date, job_kind=job_kind, userExc=True) - retVal = mainController.getWorker(date) - debug.debug("return {{ {} }}".format(retVal)) - jobL.info("Mitglied {} {} schreib sich am {} zum Dienst ein.".format( - user.firstname, user.lastname, date.date())) - return jsonify(retVal) - except DayLocked as err: - debug.debug("exception", exc_info=True) - return jsonify({'error': str(err)}), 403 - except Exception as err: - debug.debug("exception", exc_info=True) - return jsonify({'error': str(err)}), 409 - - -@user.route("/user/deleteJob", methods=['POST']) -@login_required(groups=[USER]) -def _deletJob(**kwargs): - debug.info("/user/deleteJob") - try: - if 'accToken' in kwargs: - accToken = kwargs['accToken'] - user = accToken.user - data = request.get_json() - day = data['day'] - month = data['month'] - year = data['year'] - date = datetime(year, month, day, 12) - mainController.deleteWorker(user.uid, date, True) - retVal = mainController.getWorker(date) - debug.debug("return ok") - jobL.info("Mitglied {} {} entfernt sich am {} aus dem Dienst".format( - user.firstname, user.lastname, date.date())) - return jsonify(retVal) - except DayLocked as err: - debug.debug("exception", exc_info=True) - return jsonify({"error": str(err)}), 403 - except Exception as err: - debug.debug("exception", exc_info=True) - return jsonify({"error": str(err)}), 409 - -@user.route("/user/storno", methods=['POST']) -@login_required(groups=[USER]) -def _storno(**kwargs): - """ Function for Baruser to storno amount - - This function added to the user with the posted userID the posted amount. - - Returns: - JSON-File with userID and the amount - or ERROR 401 Permission Denied - """ - - debug.info("/user/storno") - try: - if 'accToken' in kwargs: - accToken = kwargs['accToken'] - user = accToken.user - data = request.get_json() - amount = int(data['amount']) - - date = datetime.now() - mainController.addCredit( - user.uid, amount, year=date.year, month=date.month) - accToken.user = mainController.getUser(accToken.user.uid) - retVal = accToken.user.toJSON() - retVal['creditList'] = {credit.year: credit.toJSON() - for credit in accToken.user.geruechte} - debug.debug("return {{ {} }}".format(retVal)) - creditL.info("{} {} {} storniert {} €".format( - date, user.firstname, user.lastname, amount/100)) - return jsonify(retVal) - except Exception as err: - debug.debug("exception", exc_info=True) - return jsonify({"error": str(err)}), 500 - - -@user.route("/user/getJobInvites", methods=['POST']) -@login_required(groups=[USER]) -def _getJobInvites(**kwargs): - try: - debug.info("/user/getJobInvites") - from_user = None - to_user = None - on_date = None - - data = request.get_json() - - if 'from_user' in data: - from_user = data['from_user'] - if 'to_user' in data: - to_user = data['to_user'] - on_date = date(data['date']['year'], data['date']['month'], data['date']['day']) - retVal = mainController.getJobInvites(from_user, to_user, on_date) - debug.debug("return {{ {} }}".format(retVal)) - return jsonify(retVal) - except Exception as err: - debug.debug("exception", exc_info=True) - return jsonify({"error": str(err)}), 500 - -@user.route("/user/JobInvites", methods=['PUT', 'POST']) -@login_required(groups=[USER]) -def _JobInvites(**kwargs): - try: - debug.info("/user/JobInvites") - data = request.get_json() - if request.method == 'PUT': - mainController.setJobInvites(data) - retVal = mainController.getJobInvites(kwargs['accToken'].user.toJSON(), None, datetime.now().date()) - debug.debug("return {{ {} }}".format(retVal)) - if request.method == 'POST': - retVal = mainController.updateJobInvites(data) - - return jsonify(retVal) - except Exception as err: - debug.debug("exception", exc_info=True) - return jsonify({"error": str(err)}), 500 - -@user.route("/user/deleteJobInvite", methods=['POST']) -@login_required(groups=[USER]) -def _deleteJobInvite(**kwargs): - try: - debug.info("/user/deleteJobInvite") - data = request.get_json() - mainController.deleteJobInvite(data) - retVal = mainController.getJobInvites(data['from_user'], None, datetime.now().date()) - debug.debug("return {{ {} }}".format(retVal)) - return jsonify(retVal) - except Exception as err: - debug.debug("exception", exc_info=True) - return jsonify({"error": str(err)}), 500 - - -@user.route("/user/getJobRequests", methods=['POST']) -@login_required(groups=[USER]) -def _getJobRequests(**kwargs): - try: - debug.info("/user/getJobRequests") - from_user = None - to_user = None - on_date = None - - data = request.get_json() - - if 'from_user' in data: - from_user = data['from_user'] - if 'to_user' in data: - to_user = data['to_user'] - on_date = date(data['date']['year'], data['date']['month'], data['date']['day']) - retVal = mainController.getJobRequests(from_user, to_user, on_date) - debug.debug("return {{ {} }}".format(retVal)) - return jsonify(retVal) - except Exception as err: - debug.debug("exception", exc_info=True) - return jsonify({"error": str(err)}), 500 - -@user.route("/user/JobRequests", methods=['PUT', 'POST']) -@login_required(groups=[USER]) -def _JobRequests(**kwargs): - try: - debug.info("/user/JobRequests") - data = request.get_json() - if request.method == 'PUT': - mainController.setJobRequests(data) - retVal = mainController.getJobRequests(kwargs['accToken'].user.toJSON(), None, datetime.now().date()) - debug.debug("return {{ {} }}".format(retVal)) - if request.method == 'POST': - data['on_date'] = date(data['on_date']['year'], data['on_date']['month'], data['on_date']['day']) - retVal = mainController.updateJobRequests(data) - - return jsonify(retVal) - except Exception as err: - debug.debug("exception", exc_info=True) - return jsonify({"error": str(err)}), 500 - -@user.route("/user/deleteJobRequest", methods=['POST']) -@login_required(groups=[USER]) -def _deleteJobRequest(**kwargs): - try: - debug.info("/user/deleteJobRequest") - data = request.get_json() - mainController.deleteJobRequest(data) - retVal = mainController.getJobRequests(data['from_user'], None, datetime.now().date()) - debug.debug("return {{ {} }}".format(retVal)) - return jsonify(retVal) - except Exception as err: - debug.debug("exception", exc_info=True) - return jsonify({"error": str(err)}), 500 - - -@user.route("/user/getAccessTokens", methods=['GET', 'POST']) -@login_required(groups=[USER]) -def _getAccessTokens(**kwargs): - try: - debug.info("/user/getAccessTokens") - if request.method == 'POST': - data = request.get_json() - delAccToken = AccessToken(data['id'], kwargs['accToken'].user, None, None, None) - accesTokenController.deleteAccessToken(delAccToken) - tokens = accesTokenController.getAccessTokensFromUser(kwargs['accToken'].user) - retVal = [] - for token in tokens: - retVal.append(token.toJSON()) - debug.debug("return {{ {} }}".format(retVal)) - return jsonify(retVal) - except Exception as err: - debug.debug("exception", exc_info=True) - return jsonify({"error": str(err)}), 500 diff --git a/setup.py b/setup.py index 9409bc6..e2fd23a 100644 --- a/setup.py +++ b/setup.py @@ -17,9 +17,10 @@ setup( 'ldap3' ] }, - entry_points = { + entry_points={ 'flaschengeist.plugin': [ - 'auth = flaschengeist.modules.auth:register' + 'auth = flaschengeist.modules.auth:register', + 'schedule = flaschengeist.modules.schedule:register' ], 'flaschengeist.auth': [ 'auth_plain = flaschengeist.modules.auth_plain:AuthPlain',