from flask import Blueprint, request, jsonify from geruecht.finanzer import LOGGER from datetime import datetime import geruecht.controller.userController as uc from geruecht.model import MONEY from geruecht.decorator import login_required finanzer = Blueprint("finanzer", __name__) userController = uc.UserController() @finanzer.route("/getFinanzerMain") @login_required(groups=[MONEY]) def _getFinanzer(**kwargs): """ Function for /getFinanzerMain Retrieves all User for the groupe 'moneymaster' Returns: A JSON-File with Users or ERROR 401 Permission Denied. """ LOGGER.debug("Get all Useres") users = userController.getAllUsersfromDB() dic = {} for user in users: LOGGER.debug("Add User {} to ReturnValue".format(user)) dic[user.uid] = user.toJSON() dic[user.uid]['creditList'] = {credit.year: credit.toJSON() for credit in user.geruechte} LOGGER.debug("ReturnValue is {}".format(dic)) LOGGER.info("Send main for Finanzer") return jsonify(dic) @finanzer.route("/finanzerAddAmount", methods=['POST']) @login_required(groups=[MONEY]) def _addAmount(**kwargs): """ Add Amount to User This Function add an amount to the user with posted userID. If year is not posted the default is the actual Year. If month is not posted the default is the actual Month. Returns: JSON-File with geruecht of year or ERROR 401 Permission Denied """ data = request.get_json() LOGGER.debug("Get data {}".format(data)) userID = data['userId'] amount = int(data['amount']) LOGGER.debug("UserID is {} and amount is {}".format(userID, amount)) try: year = int(data['year']) except KeyError as er: LOGGER.error("KeyError in year. Year is set to default.") year = datetime.now().year try: month = int(data['month']) except KeyError as er: LOGGER.error("KeyError in month. Month is set to default.") month = datetime.now().month LOGGER.debug("Year is {} and Month is {}".format(year, month)) userController.addAmount(userID, amount, year=year, month=month, finanzer=True) user = userController.getUser(userID) retVal = {str(geruecht.year): geruecht.toJSON() for geruecht in user.geruechte} retVal['locked'] = user.locked LOGGER.info("Send updated Geruecht") return jsonify(retVal) @finanzer.route("/finanzerAddCredit", methods=['POST']) @login_required(groups=[MONEY]) def _addCredit(**kwargs): """ Add Credit to User This Function add an credit to the user with posted userID. If year is not posted the default is the actual Year. If month is not posted the default is the actual Month. Returns: JSON-File with geruecht of year or ERROR 401 Permission Denied """ data = request.get_json() print(data) LOGGER.debug("Get data {}".format(data)) userID = data['userId'] credit = int(data['credit']) LOGGER.debug("UserID is {} and credit is {}".format(userID, credit)) try: year = int(data['year']) except KeyError as er: LOGGER.error("KeyError in year. Year is set to default.") year = datetime.now().year try: month = int(data['month']) except KeyError as er: LOGGER.error("KeyError in month. Month is set to default.") month = datetime.now().month LOGGER.debug("Year is {} and Month is {}".format(year, month)) userController.addCredit(userID, credit, year=year, month=month).toJSON() user = userController.getUser(userID) retVal = {str(geruecht.year): geruecht.toJSON() for geruecht in user.geruechte} retVal['locked'] = user.locked LOGGER.info("Send updated Geruecht") return jsonify(retVal) @finanzer.route("/finanzerLock", methods=['POST']) @login_required(groups=[MONEY]) def _finanzerLock(**kwargs): data = request.get_json() username = data['userId'] locked = bool(data['locked']) retVal = userController.lockUser(username, locked).toJSON() return jsonify(retVal) @finanzer.route("/finanzerSetConfig", methods=['POST']) @login_required(groups=[MONEY]) def _finanzerSetConfig(**kwargs): data = request.get_json() username = data['userId'] autoLock = bool(data['autoLock']) limit = int(data['limit']) retVal = userController.updateConfig(username, {'lockLimit': limit, 'autoLock': autoLock}).toJSON() return jsonify(retVal) @finanzer.route("/finanzerAddUser", methods=['POST']) @login_required(groups=[MONEY]) def _finanzerAddUser(**kwargs): data = request.get_json() username = data['userId'] userController.getUser(username) LOGGER.debug("Get all Useres") users = userController.getAllUsersfromDB() dic = {} for user in users: LOGGER.debug("Add User {} to ReturnValue".format(user)) dic[user.uid] = user.toJSON() dic[user.uid]['creditList'] = {credit.year: credit.toJSON() for credit in user.geruechte} LOGGER.debug("ReturnValue is {}".format(dic)) return jsonify(dic), 200 @finanzer.route("/finanzerSendOneMail", methods=['POST']) @login_required(groups=[MONEY]) def _finanzerSendOneMail(**kwargs): data = request.get_json() username = data['userId'] retVal = userController.sendMail(username) return jsonify(retVal) @finanzer.route("/finanzerSendAllMail", methods=['GET']) @login_required(groups=[MONEY]) def _finanzerSendAllMail(**kwargs): retVal = userController.sendAllMail() return jsonify(retVal)