Skip to content
Snippets Groups Projects
decorators.py 1.11 KiB
Newer Older
  • Learn to ignore specific revisions
  • from flask import abort, current_app
    
    from flask_login import current_user
    
    from flask_socketio import disconnect
    
    from functools import wraps
    
    from threading import Thread
    
    def admin_required(f):
        @wraps(f)
        def wrapped(*args, **kwargs):
    
            if current_user.is_administrator:
                return f(*args, **kwargs)
            else:
    
    def background(f):
        ''' This decorator executes a function in a Thread '''
    
        @wraps(f)
        def wrapped(*args, **kwargs):
    
            kwargs['app'] = current_app._get_current_object()
            thread = Thread(target=f, args=args, kwargs=kwargs)
    
            thread.start()
            return thread
    
    def socketio_admin_required(f):
        @wraps(f)
        def wrapped(*args, **kwargs):
    
            if current_user.is_administrator:
                return f(*args, **kwargs)
            else:
                disconnect()
        return wrapped
    
    
    def socketio_login_required(f):
        @wraps(f)
        def wrapped(*args, **kwargs):
            if not current_user.is_authenticated:
    
                disconnect()
            else:
                return f(*args, **kwargs)
        return wrapped