[Plugin] balance: Added config option to add a default limit
This commit is contained in:
		
							parent
							
								
									66d559f63b
								
							
						
					
					
						commit
						425eb1c849
					
				| 
						 | 
					@ -56,6 +56,8 @@ enabled = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[balance]
 | 
					[balance]
 | 
				
			||||||
enabled = true
 | 
					enabled = true
 | 
				
			||||||
 | 
					# Enable a default limit, will be set if no other limit is set
 | 
				
			||||||
 | 
					# limit = -10.00
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[geruecht]
 | 
					[geruecht]
 | 
				
			||||||
enabled = false
 | 
					enabled = false
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
from flask import current_app
 | 
					from flask import current_app
 | 
				
			||||||
from werkzeug.exceptions import NotFound, BadRequest
 | 
					from werkzeug.exceptions import NotFound, BadRequest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from flaschengeist.hook import Hook
 | 
				
			||||||
from flaschengeist.models.user import User, Role
 | 
					from flaschengeist.models.user import User, Role
 | 
				
			||||||
from flaschengeist.database import db
 | 
					from flaschengeist.database import db
 | 
				
			||||||
from flaschengeist import logger
 | 
					from flaschengeist import logger
 | 
				
			||||||
| 
						 | 
					@ -18,6 +19,7 @@ def login_user(username, password):
 | 
				
			||||||
    return None
 | 
					    return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Hook
 | 
				
			||||||
def update_user(user):
 | 
					def update_user(user):
 | 
				
			||||||
    current_app.config["FG_AUTH_BACKEND"].update_user(user)
 | 
					    current_app.config["FG_AUTH_BACKEND"].update_user(user)
 | 
				
			||||||
    if not user.display_name:
 | 
					    if not user.display_name:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,7 @@ from werkzeug.exceptions import MethodNotAllowed
 | 
				
			||||||
from flaschengeist.hook import HookCall
 | 
					from flaschengeist.hook import HookCall
 | 
				
			||||||
 | 
					
 | 
				
			||||||
send_message_hook = HookCall("send_message")
 | 
					send_message_hook = HookCall("send_message")
 | 
				
			||||||
 | 
					update_user_hook = HookCall("update_user")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Plugin:
 | 
					class Plugin:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,10 +9,11 @@ from flask import Blueprint, jsonify, request
 | 
				
			||||||
from werkzeug.exceptions import Forbidden, BadRequest
 | 
					from werkzeug.exceptions import Forbidden, BadRequest
 | 
				
			||||||
from backports.datetime_fromisoformat import MonkeyPatch
 | 
					from backports.datetime_fromisoformat import MonkeyPatch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from flaschengeist.plugins import Plugin
 | 
					from flaschengeist import logger
 | 
				
			||||||
from flaschengeist.models.session import Session
 | 
					from flaschengeist.models.session import Session
 | 
				
			||||||
from flaschengeist.decorator import login_required
 | 
					from flaschengeist.decorator import login_required
 | 
				
			||||||
from flaschengeist.controller import userController
 | 
					from flaschengeist.controller import userController
 | 
				
			||||||
 | 
					from flaschengeist.plugins import Plugin, update_user_hook
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from . import balance_controller, permissions
 | 
					from . import balance_controller, permissions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,6 +25,13 @@ class BalancePlugin(Plugin):
 | 
				
			||||||
    def __init__(self, config):
 | 
					    def __init__(self, config):
 | 
				
			||||||
        super().__init__(blueprint=balance_bp, permissions=permissions.permissions)
 | 
					        super().__init__(blueprint=balance_bp, permissions=permissions.permissions)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @update_user_hook
 | 
				
			||||||
 | 
					        def set_default_limit(user):
 | 
				
			||||||
 | 
					            if "limit" in config:
 | 
				
			||||||
 | 
					                limit = config["limit"]
 | 
				
			||||||
 | 
					                logger.debug("Setting default limit of {} to user {}".format(limit, user.userid))
 | 
				
			||||||
 | 
					                balance_controller.set_limit(user, limit, override=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def install(self):
 | 
					    def install(self):
 | 
				
			||||||
        from flaschengeist.database import db
 | 
					        from flaschengeist.database import db
 | 
				
			||||||
        from .models import Transaction
 | 
					        from .models import Transaction
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,9 +14,10 @@ from . import permissions
 | 
				
			||||||
__attribute_limit = "balance_limit"
 | 
					__attribute_limit = "balance_limit"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def set_limit(user: User, limit: float):
 | 
					def set_limit(user: User, limit: float, override=True):
 | 
				
			||||||
    user.set_attribute(__attribute_limit, limit)
 | 
					    if override or not user.has_attribute(__attribute_limit):
 | 
				
			||||||
    db.session.commit()
 | 
					        user.set_attribute(__attribute_limit, limit)
 | 
				
			||||||
 | 
					        db.session.commit()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_limit(user: User) -> float:
 | 
					def get_limit(user: User) -> float:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue