Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • intros
  • live_sources
  • bootstrap4
  • modules
5 results

config.py.example

Blame
  • Forked from Video AG Infrastruktur / website
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    decorators.py NaN GiB
    from functools import wraps
    
    from flask import flash
    
    from models.database import ALL_MODELS
    from shared import current_user
    from common import back
    
    
    def default_redirect():
        return back.redirect()
    
    
    def login_redirect():
        return back.redirect("login")
    
    
    MISSING_VIEW_RIGHT = "Dir fehlenden die nötigen Zugriffsrechte."
    
    
    def require_right(right, require_exist):
        necessary_right_name = "has_{}_right".format(right)
    
        def _decorator(function):
            @wraps(function)
            def _decorated_function(*args, **kwargs):
                user = current_user()
                for model in ALL_MODELS:
                    model_name = model.__model_name__
                    if model_name in kwargs:
                        model = kwargs[model_name]
                        if model is None:
                            if require_exist:
                                flash(MISSING_VIEW_RIGHT, "alert-error")
                                return login_redirect()
                            else:
                                continue
                        necessary_right = getattr(model, necessary_right_name)
                        if not necessary_right(user):
                            flash(MISSING_VIEW_RIGHT, "alert-error")
                            return login_redirect()
                return function(*args, **kwargs)
            return _decorated_function
        return _decorator
    
    
    def require_public_view_right(require_exist=True):
        return require_right("public_view", require_exist)
    
    
    def require_private_view_right(require_exist=True):
        return require_right("private_view", require_exist)
    
    
    def require_modify_right(require_exist=True):
        return require_right("modify", require_exist)
    
    
    def require_publish_right(require_exist=True):
        return require_right("publish", require_exist)
    
    
    def require_admin_right(require_exist=True):
        return require_right("admin", require_exist)