[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]
 | 
			
		||||
enabled = true
 | 
			
		||||
# Enable a default limit, will be set if no other limit is set
 | 
			
		||||
# limit = -10.00
 | 
			
		||||
 | 
			
		||||
[geruecht]
 | 
			
		||||
enabled = false
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
from flask import current_app
 | 
			
		||||
from werkzeug.exceptions import NotFound, BadRequest
 | 
			
		||||
 | 
			
		||||
from flaschengeist.hook import Hook
 | 
			
		||||
from flaschengeist.models.user import User, Role
 | 
			
		||||
from flaschengeist.database import db
 | 
			
		||||
from flaschengeist import logger
 | 
			
		||||
| 
						 | 
				
			
			@ -18,6 +19,7 @@ def login_user(username, password):
 | 
			
		|||
    return None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@Hook
 | 
			
		||||
def update_user(user):
 | 
			
		||||
    current_app.config["FG_AUTH_BACKEND"].update_user(user)
 | 
			
		||||
    if not user.display_name:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,7 @@ from werkzeug.exceptions import MethodNotAllowed
 | 
			
		|||
from flaschengeist.hook import HookCall
 | 
			
		||||
 | 
			
		||||
send_message_hook = HookCall("send_message")
 | 
			
		||||
update_user_hook = HookCall("update_user")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Plugin:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,10 +9,11 @@ from flask import Blueprint, jsonify, request
 | 
			
		|||
from werkzeug.exceptions import Forbidden, BadRequest
 | 
			
		||||
from backports.datetime_fromisoformat import MonkeyPatch
 | 
			
		||||
 | 
			
		||||
from flaschengeist.plugins import Plugin
 | 
			
		||||
from flaschengeist import logger
 | 
			
		||||
from flaschengeist.models.session import Session
 | 
			
		||||
from flaschengeist.decorator import login_required
 | 
			
		||||
from flaschengeist.controller import userController
 | 
			
		||||
from flaschengeist.plugins import Plugin, update_user_hook
 | 
			
		||||
 | 
			
		||||
from . import balance_controller, permissions
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -24,6 +25,13 @@ class BalancePlugin(Plugin):
 | 
			
		|||
    def __init__(self, config):
 | 
			
		||||
        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):
 | 
			
		||||
        from flaschengeist.database import db
 | 
			
		||||
        from .models import Transaction
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,8 @@ from . import permissions
 | 
			
		|||
__attribute_limit = "balance_limit"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def set_limit(user: User, limit: float):
 | 
			
		||||
def set_limit(user: User, limit: float, override=True):
 | 
			
		||||
    if override or not user.has_attribute(__attribute_limit):
 | 
			
		||||
        user.set_attribute(__attribute_limit, limit)
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue