from flask import Blueprint, request, jsonify from geruecht.decorator import login_required import geruecht.controller.userController as uc from geruecht.model import USER from datetime import datetime from geruecht.exceptions import DayLocked user = Blueprint("user", __name__) userController = uc.UserController() @user.route("/user/main") @login_required(groups=[USER]) def _main(**kwargs): if 'accToken' in kwargs: accToken = kwargs['accToken'] accToken.user = userController.getUser(accToken.user.uid) retVal = accToken.user.toJSON() retVal['creditList'] = {credit.year: credit.toJSON() for credit in accToken.user.geruechte} return jsonify(retVal) return jsonify("error", "something went wrong"), 500 @user.route("/user/addAmount", methods=['POST']) @login_required(groups=[USER]) def _addAmount(**kwargs): if 'accToken' in kwargs: accToken = kwargs['accToken'] data = request.get_json() amount = int(data['amount']) date = datetime.now() userController.addAmount(accToken.user.uid, amount, year=date.year, month=date.month) accToken.user = userController.getUser(accToken.user.uid) retVal = accToken.user.toJSON() retVal['creditList'] = {credit.year: credit.toJSON() for credit in accToken.user.geruechte} return jsonify(retVal) return jsonify({"error": "something went wrong"}), 500 @user.route("/user/saveConfig", methods=['POST']) @login_required(groups=[USER]) def _saveConfig(**kwargs): try: if 'accToken' in kwargs: accToken = kwargs['accToken'] data = request.get_json() accToken.user = userController.modifyUser(accToken.user, accToken.ldap_conn, data) retVal = accToken.user.toJSON() retVal['creditList'] = {credit.year: credit.toJSON() for credit in accToken.user.geruechte} return jsonify(retVal) except Exception as err: return jsonify({"error": err}), 409 @user.route("/user/job", methods=['POST']) @login_required(groups=[USER]) def _getUser(**kwargs): data = request.get_json() day = data['day'] month = data['month'] year = data['year'] date = datetime(year, month, day, 12) lockedDay = userController.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': userController.getWorker(date), 'day': lockedDay } print(retVal) return jsonify(retVal) @user.route("/user/addJob", methods=['POST']) @login_required(groups=[USER]) def _addUser(**kwargs): 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) retVal = userController.addWorker(user.uid, date, userExc=True) print(retVal) return jsonify(retVal) except DayLocked as err: return jsonify({'error': err}), 403 except Exception as err: return jsonify({'error': err}), 409 @user.route("/user/deleteJob", methods=['POST']) @login_required(groups=[USER]) def _deletJob(**kwargs): 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) userController.deleteWorker(user.uid, date, True) return jsonify({"ok": "ok"}) except DayLocked as err: return jsonify({"error": err}), 403 except Exception as err: return jsonify({"error": err}), 409