def access_controlled_app(app):
    """
    An app where all the routes are access-controlled to the 'buyer' role, and there are some login routes if we need.
    """
    login_manager = LoginManager()
    login_manager.init_app(app)

    @login_manager.user_loader
    def load_user(user_id):
        # simulate loading a user from the API
        return User.from_json({"users": USERS[user_id]})

    app.register_blueprint(login_for_tests)
    app.secret_key = 'secret'

    main = Blueprint('main', 'main')

    @main.route('/')
    def simple_route():
        return "Hello"

    main.before_request(functools.partial(require_login, role='buyer'))
    app.register_blueprint(main)

    return app
Пример #2
0
def blueprint():
    bp = Blueprint('locks', __name__, url_prefix='/locks')

    lock_by_rse_view = LockByRSE.as_view('lock_by_rse')
    bp.add_url_rule('/<rse>', view_func=lock_by_rse_view, methods=[
        'get',
    ])

    lock_by_scope_name_view = LocksByScopeName.as_view('locks_by_scope_name')
    bp.add_url_rule('/<path:scope_name>',
                    view_func=lock_by_scope_name_view,
                    methods=[
                        'get',
                    ])

    locks_for_dids_view = DatasetLocksForDids.as_view('locks_for_dids')
    bp.add_url_rule('/bulk_locks_for_dids',
                    view_func=locks_for_dids_view,
                    methods=[
                        'post',
                    ])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
Пример #3
0
def create_app(name=__name__, config=None, skip_defaults=False):
    """
    app factory
    If config is not passed, env is inspected for 'APP_CONFIG'. If not present,
    the base defaults from settings.BaseConfig apply (local server, etc)
    """

    app = Flask(name)
    if not config:
        log.warning("Using default config")
        config = Config()
    app.config.from_object(config)

    blueprint = Blueprint('api', __name__, url_prefix='/api')

    api.add_namespace(healthcheck_namespace)
    api.add_namespace(activities_namespace)
    api.add_namespace(blobs_namespace)
    api.add_namespace(items_namespace)
    init_app(app)
    api.init_app(blueprint)

    blueprint.before_request(setup_db)
    app.register_blueprint(blueprint)

    got_request_exception.connect(drop_into_pdb)
    try:
        if '-echo' in str(subprocess.check_output("stty", shell=True)):
            log.debug("Re-enabling echo w/ stty")
            subprocess.check_call("stty echo", shell=True)
    except subprocess.CalledProcessError:
        pass

    return app
Пример #4
0
def set_up_view(app: Flask):
    mod = Blueprint('', __name__)

    mod.add_url_rule(
        '',
        view_func=RadioView.as_view('RadioView'),
    )

    mod.add_url_rule(
        'history',
        view_func=RadioHistoryView.as_view('RadioHistoryView'),
    )

    mod.add_url_rule(
        'login',
        view_func=LoginView.as_view('LoginView'),
    )

    mod.add_url_rule(
        'logout',
        view_func=LogoutView.as_view('LogoutView'),
    )

    mod.before_request(g_login)

    # Реєстрація блюпрінта
    app.register_blueprint(mod, url_prefix='/')
Пример #5
0
class Playground(object):
    def __init__(self, app, auth_func=None, setup=True):
        self.app = app
        self.blueprint = Blueprint('playground', __name__,
                                   template_folder='templates')

        if auth_func:
            self.blueprint.before_request(auth_func)

        self.blueprint.route('/')(self.index)

        if setup:
            self.setup()

    def index(self):
        endpoints = self.get_endpoints().values()
        endpoints.sort(key=itemgetter('url'))
        blueprints = current_app.blueprints.keys()
        return render_template('playground/index.html',
                               blueprints=blueprints, endpoints=endpoints)

    def setup(self):
        self.blueprint.route('/')(self.index)
        self.app.register_blueprint(self.blueprint,
                                    url_prefix='/playground')

    @property
    def route(self):
        return self.blueprint.route

    def get_endpoints(self, blueprint=None):
        endpoints = {}

        for rule in current_app.url_map.iter_rules():
            if blueprint and not rule.endpoint.startswith(blueprint + '.'):
                continue

            func = current_app.view_functions[rule.endpoint]
            docstring = inspect.getdoc(func)
            spec = inspect.getargspec(func)

            if spec.args:
                defaults = spec.defaults or []
                defaults = [None]*(len(spec.args)-len(defaults))+list(defaults)
                args = dict(zip(spec.args, defaults))
            else:
                args = []

            endpoints[str(rule)] = {
                'endpoint': rule.endpoint,
                'blueprint': rule.endpoint.split('.')[0] if '.' in rule.endpoint else '.',
                'url': str(rule),
                'methods': list(rule.methods),
                'args': args,
                'defaults': rule.defaults,
                'headers': '',
                'description': docstring,
            }

        return endpoints
Пример #6
0
def blueprint():
    bp = Blueprint('identities', __name__, url_prefix='/identities')

    userpass_view = UserPass.as_view('userpass')
    bp.add_url_rule('/<account>/userpass',
                    view_func=userpass_view,
                    methods=[
                        'put',
                    ])
    x509_view = X509.as_view('x509')
    bp.add_url_rule('/<account>/x509', view_func=x509_view, methods=[
        'put',
    ])
    gss_view = GSS.as_view('gss')
    bp.add_url_rule('/<account>/gss', view_func=gss_view, methods=[
        'put',
    ])
    accounts_view = Accounts.as_view('accounts')
    bp.add_url_rule('/<identity_key>/<type>/accounts',
                    view_func=accounts_view,
                    methods=[
                        'get',
                    ])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
Пример #7
0
def create_blueprint(name, import_name, before_request=None, **kwargs):
    kwargs.setdefault('url_prefix', '/mine')
    bp = Blueprint('mine.%s' % name, import_name, **kwargs)
    if not before_request:
        before_request = _before_request
    bp.before_request(before_request)
    return bp
Пример #8
0
def _factory(
    partial_module_string: str,
    url_prefix: str,
    auth_function: Callable | None = None,
    new_endpoint: str | None = None,
) -> Blueprint:
    """Generate a blueprint registration."""
    # Build out the module import path
    endpoint_folder = "public" if auth_function is None else "protected"
    import_name = [
        "src",
        "blueprints",
        "v1",
        endpoint_folder,
        partial_module_string,
    ]
    import_path: str = ".".join(import_name)

    # Actually create the blueprint
    blueprint = Blueprint(partial_module_string,
                          import_path,
                          url_prefix=f"/v1/{url_prefix}")

    # Protect the endpoint with an authorization routine
    # if one was given
    if auth_function is not None:
        blueprint.before_request(auth_function)

    # This endpoint has been deprecated, attach a HTTP header
    # stating this and transition info
    if new_endpoint is not None:
        x = partial(send_deprecation_warning, new_endpoint)
        blueprint.after_request(x)  # type: ignore

    return blueprint
Пример #9
0
def blueprint():
    bp = Blueprint('requests', __name__, url_prefix='/requests')

    request_get_view = RequestGet.as_view('request_get')
    bp.add_url_rule('/<path:scope_name>/<rse>',
                    view_func=request_get_view,
                    methods=[
                        'get',
                    ])
    request_history_get_view = RequestHistoryGet.as_view('request_history_get')
    bp.add_url_rule('/history/<path:scope_name>/<rse>',
                    view_func=request_history_get_view,
                    methods=[
                        'get',
                    ])
    request_list_view = RequestList.as_view('request_list')
    bp.add_url_rule('/list', view_func=request_list_view, methods=[
        'get',
    ])
    request_history_list_view = RequestHistoryList.as_view(
        'request_history_list')
    bp.add_url_rule('/history/list',
                    view_func=request_history_list_view,
                    methods=[
                        'get',
                    ])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
Пример #10
0
def blueprint():
    bp = Blueprint('rses', __name__, url_prefix='/rses')

    attributes_view = Attributes.as_view('attributes')
    bp.add_url_rule('/<rse>/attr/<key>', view_func=attributes_view, methods=['post', 'delete'])
    bp.add_url_rule('/<rse>/attr/', view_func=attributes_view, methods=['get', ])
    distance_view = Distance.as_view('distance')
    bp.add_url_rule('/<source>/distances/<destination>', view_func=distance_view, methods=['get', 'post', 'put'])
    protocol_view = Protocol.as_view('protocol')
    bp.add_url_rule('/<rse>/protocols/<scheme>/<hostname>/<port>', view_func=protocol_view, methods=['delete', 'put'])
    bp.add_url_rule('/<rse>/protocols/<scheme>/<hostname>', view_func=protocol_view, methods=['delete', 'put'])
    bp.add_url_rule('/<rse>/protocols/<scheme>', view_func=protocol_view, methods=['get', 'post', 'delete', 'put'])
    protocol_list_view = ProtocolList.as_view('protocol_list')
    bp.add_url_rule('/<rse>/protocols', view_func=protocol_list_view, methods=['get', ])
    lfns2pfns_view = LFNS2PFNS.as_view('lfns2pfns')
    bp.add_url_rule('/<rse>/lfns2pfns', view_func=lfns2pfns_view, methods=['get', ])
    rse_account_usage_limit_view = RSEAccountUsageLimit.as_view('rse_account_usage_limit')
    bp.add_url_rule('/<rse>/accounts/usage', view_func=rse_account_usage_limit_view, methods=['get', ])
    usage_view = Usage.as_view('usage')
    bp.add_url_rule('/<rse>/usage', view_func=usage_view, methods=['get', 'put'])
    usage_history_view = UsageHistory.as_view('usage_history')
    bp.add_url_rule('/<rse>/usage/history', view_func=usage_history_view, methods=['get', ])
    limits_view = Limits.as_view('limits')
    bp.add_url_rule('/<rse>/limits', view_func=limits_view, methods=['get', 'put'])
    qos_policy_view = QoSPolicy.as_view('qos_policy')
    bp.add_url_rule('/<rse>/qos_policy', view_func=qos_policy_view, methods=['get', ])
    bp.add_url_rule('/<rse>/qos_policy/<policy>', view_func=qos_policy_view, methods=['post', 'delete'])
    rse_view = RSE.as_view('rse')
    bp.add_url_rule('/<rse>', view_func=rse_view, methods=['get', 'delete', 'put', 'post'])
    rses_view = RSEs.as_view('rses')
    bp.add_url_rule('/', view_func=rses_view, methods=['get', ])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
Пример #11
0
def set_up_admin(app: Flask):
    from .roles.helpers import is_admin_view
    mod = Blueprint('admin', __name__)

    # Дивимось на ролі
    mod.before_request(is_admin_view)

    # Реєстрація блюпрінта
    app.register_blueprint(mod, url_prefix='/admin')
Пример #12
0
def blueprint():
    bp = Blueprint('archives', __name__, url_prefix='/archives')

    archive_view = Archive.as_view('archive')
    bp.add_url_rule('/<path:scope_name>/files', view_func=archive_view, methods=['get', ])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
Пример #13
0
def blueprint():
    bp = Blueprint('heartbeats', __name__, url_prefix='/heartbeats')

    heartbeat_view = Heartbeat.as_view('heartbeat')
    bp.add_url_rule('', view_func=heartbeat_view, methods=['get', 'post'])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
def create_blueprint(apiname='api'):
    from .main.decorators import before_request, after_request

    blueprint = Blueprint(apiname, __name__)

    #add decorators to blueprint
    blueprint.before_request(before_request)
    blueprint.after_app_request(after_request)

    return blueprint
Пример #15
0
def blueprint(no_doc=True):
    bp = Blueprint('dirac', __name__, url_prefix='/dirac')

    add_file_view = AddFiles.as_view('addfiles')
    bp.add_url_rule('/addfiles', view_func=add_file_view, methods=['post', ])
    bp.add_url_rule('/addfiles/', view_func=add_file_view, methods=['post', ])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
Пример #16
0
def blueprint():
    bp = Blueprint('lifetime_exceptions', __name__, url_prefix='/lifetime_exceptions')

    lifetime_exception_view = LifetimeException.as_view('lifetime_exception')
    bp.add_url_rule('/', view_func=lifetime_exception_view, methods=['get', 'post'])
    lifetime_exception_id_view = LifetimeExceptionId.as_view('lifetime_exception_id')
    bp.add_url_rule('/<exception_id>', view_func=lifetime_exception_id_view, methods=['get', 'put'])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
Пример #17
0
def blueprint():
    bp = Blueprint('tmp_dids', __name__, url_prefix='/tmp_dids')

    bulk_dids_view = BulkDIDS.as_view('bulk_dids')
    bp.add_url_rule('', view_func=bulk_dids_view, methods=[
        'post',
    ])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
Пример #18
0
def blueprint(no_doc=True):
    bp = Blueprint('import', __name__, url_prefix='/import')

    import_view = Import.as_view('scope')
    if no_doc:
        # rule without trailing slash needs to be added before rule with trailing slash
        bp.add_url_rule('', view_func=import_view, methods=['post', ])
    bp.add_url_rule('/', view_func=import_view, methods=['post', ])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
Пример #19
0
def blueprint():
    bp = Blueprint('scope', __name__, url_prefix='/scopes')

    scope_view = Scope.as_view('scope')
    bp.add_url_rule('/', view_func=scope_view, methods=['get', ])
    bp.add_url_rule('/<account>/<scope>', view_func=scope_view, methods=['post', ])
    account_scope_list_view = AccountScopeList.as_view('account_scope_list')
    bp.add_url_rule('/<account>/scopes', view_func=account_scope_list_view, methods=['get', ])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
Пример #20
0
def blueprint(no_doc=True):
    bp = Blueprint('replicas', __name__, url_prefix='/replicas')

    list_replicas_view = ListReplicas.as_view('list_replicas')
    bp.add_url_rule('/list', view_func=list_replicas_view, methods=['post', ])
    replicas_view = Replicas.as_view('replicas')
    if no_doc:
        # rule without trailing slash needs to be added before rule with trailing slash
        bp.add_url_rule('', view_func=replicas_view, methods=['post', 'put', 'delete'])
    bp.add_url_rule('/', view_func=replicas_view, methods=['post', 'put', 'delete'])
    suspicious_replicas_view = SuspiciousReplicas.as_view('suspicious_replicas')
    bp.add_url_rule('/suspicious', view_func=suspicious_replicas_view, methods=['get', 'post'])
    bad_replicas_states_view = BadReplicasStates.as_view('bad_replicas_states')
    bp.add_url_rule('/bad/states', view_func=bad_replicas_states_view, methods=['get', ])
    bad_replicas_summary_view = BadReplicasSummary.as_view('bad_replicas_summary')
    bp.add_url_rule('/bad/summary', view_func=bad_replicas_summary_view, methods=['get', ])
    bad_replicas_pfn_view = BadPFNs.as_view('add_bad_pfns')
    bp.add_url_rule('/bad/pfns', view_func=bad_replicas_pfn_view, methods=['post', ])
    bad_replicas_dids_view = BadDIDs.as_view('add_bad_dids')
    bp.add_url_rule('/bad/dids', view_func=bad_replicas_dids_view, methods=['post', ])
    replicas_rse_view = ReplicasRSE.as_view('replicas_rse')
    bp.add_url_rule('/rse/<rse>', view_func=replicas_rse_view, methods=['get', ])
    bad_replicas_view = BadReplicas.as_view('bad_replicas')
    bp.add_url_rule('/bad', view_func=bad_replicas_view, methods=['post', ])
    replicas_dids_view = ReplicasDIDs.as_view('replicas_dids')
    bp.add_url_rule('/dids', view_func=replicas_dids_view, methods=['post', ])
    dataset_replicas_view = DatasetReplicas.as_view('dataset_replicas')
    bp.add_url_rule('/<path:scope_name>/datasets', view_func=dataset_replicas_view, methods=['get', ])
    dataset_replicas_bulk_view = DatasetReplicasBulk.as_view('dataset_replicas_bulk')
    bp.add_url_rule('/datasets_bulk', view_func=dataset_replicas_bulk_view, methods=['post', ])
    dataset_replicas_vp_view = DatasetReplicasVP.as_view('dataset_replicas_vp')
    bp.add_url_rule('/<path:scope_name>', view_func=replicas_view, methods=['get', ])
    set_tombstone_view = Tombstone.as_view('set_tombstone')
    bp.add_url_rule('/tombstone', view_func=set_tombstone_view, methods=['post', ])

    if no_doc:
        bp.add_url_rule('/list/', view_func=list_replicas_view, methods=['post', ])
        bp.add_url_rule('/suspicious/', view_func=suspicious_replicas_view, methods=['get', 'post'])
        bp.add_url_rule('/bad/states/', view_func=bad_replicas_states_view, methods=['get', ])
        bp.add_url_rule('/bad/summary/', view_func=bad_replicas_summary_view, methods=['get', ])
        bp.add_url_rule('/bad/pfns/', view_func=bad_replicas_pfn_view, methods=['post', ])
        bp.add_url_rule('/bad/dids/', view_func=bad_replicas_dids_view, methods=['post', ])
        bp.add_url_rule('/rse/<rse>/', view_func=replicas_rse_view, methods=['get', ])
        bp.add_url_rule('/bad/', view_func=bad_replicas_view, methods=['post', ])
        bp.add_url_rule('/dids/', view_func=replicas_dids_view, methods=['post', ])
        bp.add_url_rule('/datasets_bulk/', view_func=dataset_replicas_bulk_view, methods=['post', ])
        bp.add_url_rule('/<path:scope_name>/datasets_vp', view_func=dataset_replicas_vp_view, methods=['get', ])
        bp.add_url_rule('/<path:scope_name>/', view_func=replicas_view, methods=['get', ])
        bp.add_url_rule('/tombstone/', view_func=set_tombstone_view, methods=['post', ])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
Пример #21
0
def blueprint(no_doc=True):
    bp = Blueprint('accountlimits', __name__, url_prefix='/accountlimits')

    local_account_limit_view = LocalAccountLimit.as_view('local_account_limit')
    bp.add_url_rule('/local/<account>/<rse>', view_func=local_account_limit_view, methods=['post', 'delete'])
    if no_doc:
        bp.add_url_rule('/<account>/<rse>', view_func=local_account_limit_view, methods=['post', 'delete'])
    global_account_limit_view = GlobalAccountLimit.as_view('global_account_limit')
    bp.add_url_rule('/global/<account>/<rse_expression>', view_func=global_account_limit_view, methods=['post', 'delete'])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
Пример #22
0
def register_routes(app, di_container):
    for bp_name, actions in routing.items():
        blueprint = Blueprint(name=bp_name, import_name=__name__)

        for middleware in actions['middlewares']:
            blueprint.before_request(di_container[middleware])

        for route in actions['routes']:
            blueprint.add_url_rule(route['uri'],
                                   view_func=di_container[route['action']],
                                   methods=route['methods'])

        app.register_blueprint(blueprint)
Пример #23
0
def create_api_bp(name='api_bp'):
    api_bp = Blueprint(name, __name__)
    api = Api(api_bp, errors=errors)
    CORS(api_bp)

    api_bp.add_url_rule('/search', view_func=search)
    api_bp.add_url_rule('/token', view_func=get_token)

    register_errors(api_bp)
    register_resources(api)

    api_bp.before_request(auth_required)
    return api_bp
Пример #24
0
def blueprint():
    bp = Blueprint('vos', __name__, url_prefix='/vos')

    recover_view = RecoverVO.as_view('recover')
    bp.add_url_rule('/<vo>/recover', view_func=recover_view, methods=['post', ])
    vo_view = VO.as_view('vo')
    bp.add_url_rule('/<vo>', view_func=vo_view, methods=['put', 'post'])
    vos_view = VOs.as_view('vos')
    bp.add_url_rule('/', view_func=vos_view, methods=['get', ])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
Пример #25
0
    def create_blueprint(cls, app):
        """
        Method to create a blueprint, derived from a SilverFlask Controller.
        It is one instance per blueprint. TODO: This might be a bad design and
        it should probably better be one instance per request.
        :param app: current app (in flask initialization)
        :return: Blueprint
        """
        inst = cls()
        endpoint = cls.__name__
        url_prefix = cls.url_prefix

        static_folder = 'static'
        static_url_path = '/static'
        if hasattr(cls, 'static_folder'):
            static_folder = cls.static_folder
            static_url_path = '/static'
        print(static_folder)
        blueprint = Blueprint(endpoint,
                              __name__,
                              url_prefix=url_prefix,
                              static_folder=static_folder,
                              static_url_path=static_url_path)
        blueprint.jinja_loader = ThemeTemplateLoader()

        view_funcs = {}
        for url in cls.urls:
            action = cls.urls[url]
            kwargs = {'methods': ['GET']}
            if action in cls.allowed_actions:
                kwargs['methods'] += ['POST']

            blueprint.add_url_rule(url, cls.urls[url],
                                   getattr(inst, cls.urls[url]), **kwargs)

        if hasattr(cls, 'before_request'):
            blueprint.before_request(getattr(inst, 'before_request'))

        template_functions = {}
        for fun in cls.template_functions:
            template_functions[fun] = getattr(inst,
                                              inst.template_functions[fun])

        blueprint.context_processor(lambda: template_functions)

        for m in cls.mro():
            if hasattr(m, 'init_blueprint'):
                m.init_blueprint(blueprint)

        return blueprint
Пример #26
0
def blueprint():
    bp = Blueprint('rules', __name__, url_prefix='/rules')

    rule_view = Rule.as_view('rule')
    bp.add_url_rule('/<rule_id>',
                    view_func=rule_view,
                    methods=['get', 'put', 'delete'])
    all_rule_view = AllRule.as_view('all_rule')
    bp.add_url_rule('/', view_func=all_rule_view, methods=['get', 'post'])
    replica_locks_view = ReplicaLocks.as_view('replica_locks')
    bp.add_url_rule('/<rule_id>/locks',
                    view_func=replica_locks_view,
                    methods=[
                        'get',
                    ])
    reduce_rule_view = ReduceRule.as_view('reduce_rule')
    bp.add_url_rule('/<rule_id>/reduce',
                    view_func=reduce_rule_view,
                    methods=[
                        'post',
                    ])
    move_rule_view = MoveRule.as_view('move_rule')
    bp.add_url_rule('/<rule_id>/move',
                    view_func=move_rule_view,
                    methods=[
                        'post',
                    ])
    rule_history_view = RuleHistory.as_view('rule_history')
    bp.add_url_rule('/<rule_id>/history',
                    view_func=rule_history_view,
                    methods=[
                        'get',
                    ])
    rule_history_full_view = RuleHistoryFull.as_view('rule_history_full')
    bp.add_url_rule('/<path:scope_name>/history',
                    view_func=rule_history_full_view,
                    methods=[
                        'get',
                    ])
    rule_analysis_view = RuleAnalysis.as_view('rule_analysis')
    bp.add_url_rule('/<rule_id>/analysis',
                    view_func=rule_analysis_view,
                    methods=[
                        'get',
                    ])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
Пример #27
0
def _factory(bp_name, url_prefix, restricted=False):
    import_name = 'project.{}.views'.format(bp_name)
    template_folder = 'templates'

    blueprint = Blueprint(
        bp_name,
        import_name,
        template_folder=template_folder,
        url_prefix=url_prefix,
    )

    if restricted:
        blueprint.before_request(_only_authenticated_user_hook)

    return blueprint
Пример #28
0
def register_api(app):
    blueprint = Blueprint(name='api',
                          import_name=__name__,
                          url_prefix="/api/v1")
    api = Api(
        app=blueprint,
        version='1.0',
        title='New Api',
    )
    api.add_namespace(auth_wx_ns, path="/")
    api.add_namespace(message_wx_ns, path="/callback")

    blueprint.before_request(test)

    app.register_blueprint(blueprint)
Пример #29
0
def _factory(
    partial_module_string: str, url_prefix: str, protected: bool = False
) -> Blueprint:
    # Create the blueprint
    blueprint = Blueprint(
        partial_module_string,
        f"src.blueprint.{partial_module_string}",
        url_prefix=url_prefix,
    )

    # This endpoint is not to be publicly used,
    # protect the endpoint with an authorization routine
    if protected:
        blueprint.before_request(authorize_blueprint)
    return blueprint
Пример #30
0
def blueprint():
    bp = Blueprint('config', __name__, url_prefix='/config')

    option_set_view = OptionSet.as_view('option_set')
    bp.add_url_rule('/<section>/<option>/<value>', view_func=option_set_view, methods=['put', ])
    option_get_del_view = OptionGetDel.as_view('option_get_del')
    bp.add_url_rule('/<section>/<option>', view_func=option_get_del_view, methods=['get', 'delete'])
    section_view = Section.as_view('section')
    bp.add_url_rule('/<section>', view_func=section_view, methods=['get', ])
    config_view = Config.as_view('config')
    bp.add_url_rule('', view_func=config_view, methods=['get', 'post'])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
Пример #31
0
def blueprint():
    bp = Blueprint('subscriptions', __name__, url_prefix='/subscriptions')

    subscription_id_view = SubscriptionId.as_view('subscription_id')
    bp.add_url_rule('/Id/<subscription_id>',
                    view_func=subscription_id_view,
                    methods=[
                        'get',
                    ])
    states_view = States.as_view('states')
    bp.add_url_rule('/<account>/<name>/Rules/States',
                    view_func=states_view,
                    methods=[
                        'get',
                    ])
    bp.add_url_rule('/<account>/Rules/States',
                    view_func=states_view,
                    methods=[
                        'get',
                    ])
    rules_view = Rules.as_view('rules')
    bp.add_url_rule('/<account>/<name>/Rules',
                    view_func=rules_view,
                    methods=[
                        'get',
                    ])
    subscription_view = Subscription.as_view('subscription')
    bp.add_url_rule('/<account>/<name>',
                    view_func=subscription_view,
                    methods=['get', 'post', 'put'])
    bp.add_url_rule('/<account>',
                    view_func=subscription_view,
                    methods=[
                        'get',
                    ])
    bp.add_url_rule('/', view_func=subscription_view, methods=[
        'get',
    ])
    subscription_name_view = SubscriptionName.as_view('subscription_name')
    bp.add_url_rule('/Name/<name>',
                    view_func=subscription_name_view,
                    methods=[
                        'get',
                    ])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
Пример #32
0
def blueprint():
    bp = Blueprint('dids', __name__, url_prefix='/dids')

    scope_view = Scope.as_view('scope')
    bp.add_url_rule('/<scope>/', view_func=scope_view, methods=['get', ])
    guid_lookup_view = GUIDLookup.as_view('guid_lookup')
    bp.add_url_rule('/<guid>/guid', view_func=guid_lookup_view, methods=['get', ])
    search_view = Search.as_view('search')
    bp.add_url_rule('/<scope>/dids/search', view_func=search_view, methods=['get', ])
    search_extended_view = SearchExtended.as_view('search_extended')
    bp.add_url_rule('/<scope>/dids/search_extended', view_func=search_extended_view, methods=['get', ])
    dids_view = DIDs.as_view('dids')
    bp.add_url_rule('/<path:scope_name>/status', view_func=dids_view, methods=['put', ])
    files_view = Files.as_view('files')
    bp.add_url_rule('/<path:scope_name>/files', view_func=files_view, methods=['get', ])
    attachment_history_view = AttachmentHistory.as_view('attachment_history')
    bp.add_url_rule('/<path:scope_name>/dids/history', view_func=attachment_history_view, methods=['get', ])
    attachment_view = Attachment.as_view('attachment')
    bp.add_url_rule('/<path:scope_name>/dids', view_func=attachment_view, methods=['get', 'post', 'delete'])
    meta_view = Meta.as_view('meta')
    bp.add_url_rule('/<path:scope_name>/meta', view_func=meta_view, methods=['get', 'post', 'delete'])
    singlemeta_view = SingleMeta.as_view('singlemeta')
    bp.add_url_rule('/<path:scope_name>/meta/<key>', view_func=singlemeta_view, methods=['post', ])
    rules_view = Rules.as_view('rules')
    bp.add_url_rule('/<path:scope_name>/rules', view_func=rules_view, methods=['get', ])
    parents_view = Parents.as_view('parents')
    bp.add_url_rule('/<path:scope_name>/parents', view_func=parents_view, methods=['get', ])
    associated_rules_view = AssociatedRules.as_view('associated_rules')
    bp.add_url_rule('/<path:scope_name>/associated_rules', view_func=associated_rules_view, methods=['get', ])
    follow_view = Follow.as_view('follow')
    bp.add_url_rule('/<path:scope_name>/follow', view_func=follow_view, methods=['get', 'post', 'delete'])
    bp.add_url_rule('/<path:scope_name>', view_func=dids_view, methods=['get', 'post'])
    bulkdids_view = BulkDIDS.as_view('bulkdids')
    bp.add_url_rule('', view_func=bulkdids_view, methods=['post', ])
    sample_view = Sample.as_view('sample')
    bp.add_url_rule('/<input_scope>/<input_name>/<output_scope>/<output_name>/<nbfiles>/sample', view_func=sample_view, methods=['post', ])
    attachements_view = Attachments.as_view('attachments')
    bp.add_url_rule('/attachments', view_func=attachements_view, methods=['post', ])
    new_dids_view = NewDIDs.as_view('new_dids')
    bp.add_url_rule('/new', view_func=new_dids_view, methods=['get', ])
    resurrect_view = Resurrect.as_view('resurrect')
    bp.add_url_rule('/resurrect', view_func=resurrect_view, methods=['post', ])
    bulkmeta_view = BulkMeta.as_view('bulkmeta')
    bp.add_url_rule('/bulkmeta', view_func=bulkmeta_view, methods=['post', ])

    bp.before_request(request_auth_env)
    bp.after_request(response_headers)
    return bp
Пример #33
0
def Blueprint(name, **kwargs):
    from flask import Blueprint
    from werkzeug.exceptions import default_exceptions
    from cloudapp.authentication.decorators import load_user
    error_if_exists = kwargs.pop('subdomain', None)
    if error_if_exists:
       raise RuntimeError("[cloudapp_api] Blueprint: subdomain is not an allowed keyword")
    bp = Blueprint(name, __name__, subdomain="api", **kwargs)
    bp.before_request(load_user)
    bp.before_request(_process_request_json)
    for code in default_exceptions.iterkeys():
        if code >= 500: continue
        @bp.errorhandler(code)
        def errorhandler(code):
            return _json_errorhandler(code)
    return bp
Пример #34
0
    def create_blueprint(cls, app):
        """
        Method to create a blueprint, derived from a SilverFlask Controller.
        It is one instance per blueprint. TODO: This might be a bad design and
        it should probably better be one instance per request.
        :param app: current app (in flask initialization)
        :return: Blueprint
        """
        inst = cls()
        endpoint = cls.__name__
        url_prefix = cls.url_prefix

        static_folder = "static"
        static_url_path = "/static"
        if hasattr(cls, "static_folder"):
            static_folder = cls.static_folder
            static_url_path = "/static"
        print(static_folder)
        blueprint = Blueprint(
            endpoint, __name__, url_prefix=url_prefix, static_folder=static_folder, static_url_path=static_url_path
        )
        blueprint.jinja_loader = ThemeTemplateLoader()

        view_funcs = {}
        for url in cls.urls:
            action = cls.urls[url]
            kwargs = {"methods": ["GET"]}
            if action in cls.allowed_actions:
                kwargs["methods"] += ["POST"]

            blueprint.add_url_rule(url, cls.urls[url], getattr(inst, cls.urls[url]), **kwargs)

        if hasattr(cls, "before_request"):
            blueprint.before_request(getattr(inst, "before_request"))

        template_functions = {}
        for fun in cls.template_functions:
            template_functions[fun] = getattr(inst, inst.template_functions[fun])

        blueprint.context_processor(lambda: template_functions)

        for m in cls.mro():
            if hasattr(m, "init_blueprint"):
                m.init_blueprint(blueprint)

        return blueprint
Пример #35
0
def check_forced_registration_blueprint(name, import_name, **kwargs):
    ignore_patterns = kwargs.pop('ignore_patterns', [])
    bp = Blueprint(name, import_name, **kwargs)

    def match_any_ignore_pattern():
        for methods, path in ignore_patterns:
            if request.method in methods and path.match(request.path):
                return True
        return False

    def check_impl():
        if not g.user or match_any_ignore_pattern():
            return
        if g.user.has_not_registered_schedule_yet():
            return redirect(url_for('schedule.schedule'))

    bp.before_request(check_impl)
    return bp
Пример #36
0
def blueprint(
    name,
    import_name,
    objects,
    setup=setup_tree,
    path=path,
    methods=['get', 'post', 'put', 'patch', 'delete', 'head'],
    super_root_class=TreeRootView,
    **kwargs
    ):

    bp = Blueprint(name, import_name)
    bp.before_request(partial(setup_tree, objects, super_root_class,
                      **kwargs))

    if hasattr(super_root_class, 'view'):
        bp.route('/', methods=methods)(path)

    bp.route('/<path:path>', methods=methods)(path)
    return bp
Пример #37
0
from flask import Blueprint
from app.main.authentication.auth import requires_auth

AUTHORIZATION_HEADER = "Authorization"
AUTHORIZATION_SCHEME = "Bearer"
WINDOW = 1

main = Blueprint("main", __name__)


main.before_request(requires_auth)


from app.main.views import notifications, index
from app.main import errors
Пример #38
0
from flask import Blueprint

delivery_ws = Blueprint("delivery_ws", __name__, static_folder="static",
                        template_folder="templates")

from litefac.apis.auth import load_user_from_token
delivery_ws.before_request(load_user_from_token)

from litefac.portal.delivery_ws import webservices

Пример #39
0
from . import printer as api_printer
from . import job as api_job
from . import connection as api_connection
from . import files as api_files
from . import settings as api_settings
from . import timelapse as api_timelapse
from . import users as api_users
from . import log as api_logs
from . import slicing as api_slicing
from . import printer_profiles as api_printer_profiles
from . import languages as api_languages


VERSION = "0.1"

api.before_request(apiKeyRequestHandler)
api.after_request(corsResponseHandler)

#~~ data from plugins

@api.route("/plugin/<string:name>", methods=["GET"])
def pluginData(name):
	api_plugins = octoprint.plugin.plugin_manager().get_filtered_implementations(lambda p: p._identifier == name, octoprint.plugin.SimpleApiPlugin)
	if not api_plugins:
		return make_response("Not found", 404)

	if len(api_plugins) > 1:
		return make_response("More than one api provider registered for {name}, can't proceed".format(name=name), 500)

	api_plugin = api_plugins[0]
	if api_plugin.is_api_adminonly() and not current_user.is_admin():
Пример #40
0
from gbi_server.lib.helper import send_mail
from gbi_server.lib.couchdb import init_user_boxes
from gbi_server.lib.external_wms import write_mapproxy_config


admin = Blueprint("admin", __name__, template_folder="../templates")

def assert_admin_user():
    if current_app.config.get('ADMIN_PARTY'):
        return
    if current_user.is_anonymous():
        raise Unauthorized()
    if not current_user.is_admin:
        raise Forbidden()

admin.before_request(assert_admin_user)

@admin.route('/admin')
def index():
    return render_template('admin/index.html')

@admin.route('/admin/user_list', methods=["GET"])
def user_list():
    return render_template('admin/user_list.html', users=User.query.all())

@admin.route('/admin/user_detail/<int:id>', methods=["GET", "POST"])
def user_detail(id):
    user = User.by_id(id)
    return render_template('admin/user_detail.html', user=user)

@admin.route('/admin/verify_user/<int:id>', methods=["GET"])
Пример #41
0
	#	return redirect('/')
	form = FriendForm()
	if request.method == 'GET':
		return render_template('template_friends.html',form=form, isLogged=True)
	else:
		if form.validate_on_submit():

			temp = Friends(form.name.data,form.address.data,form.age.data,session['user_id'])

			#Save the image if present
			if form.upload_file.data:
				filename = secure_filename(form.upload_file.data.filename)
				form.upload_file.data.save('app/static/images' + form.upload_file.data.filename)			
				temp.filename ='/static/images/' + filename
			
			db.session.add(temp)
			db.session.commit()	
			#tapa 2
			user = Users.query.get(session['user_id'])
			print(user.friends)
			return render_template('template_user.html',isLogged=True,friends=user.friends)			            
		else:
			flash('At least one field is empty')
			return render_template('template_friends.html',isLogged=True,form=form)			

def before_request():
	if not 'isLogged' in session:
		return redirect('/')
	
ud.before_request(before_request) #tehään ennen routeen siirtymistä	
Пример #42
0
from flask import g
from flask import make_response
from flask import request
from flask import session
from flask import redirect
from flask import url_for

from pinserver.helpers import before_request
from pinserver.models.user import User
from pinserver.models.pin import Pin
from pinserver.models.comment import Comment


comment = Blueprint('comment', __name__)

comment.before_request(before_request)

# support functions
def comments_pack(comments):
    comment_list = []
    for comment in comments:
        comment_item = {}
        comment_item['comment_id'] = str(comment.id)
        comment_item['content'] = comment.content
        comment_item['author_id'] = str(comment.author.id)
        comment_item['author_name'] = comment.author.nickname
        comment_item['avatar'] = comment.author.avatar
        comment_item['create_at'] = comment.create_at.strftime('%Y-%m-%d %H:%M:%S')
        comment_list.append(comment_item)
    res_data = {
        'total':len(comment_list),
Пример #43
0
from flask import Blueprint

order_ws = Blueprint("order_ws", __name__, static_folder="static",
    template_folder="templates")

from lite_mms.apis.auth import load_user_from_token
order_ws.before_request(load_user_from_token)

from lite_mms.portal.order_ws import webservices

Пример #44
0
    form = FriendForm()
    if request.method == 'GET':
        return render_template('template_friends.html',form=form,isLogged=True)
    else:
        if form.validate_on_submit():
            print('friends from submit ok')
            temp = Friends(form.name.data,form.address.data,form.age.data,session['user_id'])
            
            # save the image if present
            if form.upload_file.data:
                filename = secure_filename(form.upload_file.data.filename)
                form.upload_file.data.save('app/static/images/' + filename)
                temp.filename = '/static/images/' + filename
            
            db.session.add(temp)
            db.session.commit()
            #2. tapa listata ystävät. Kts db_models.py
            user = Users.query.get(session['user_id'])
            print(user.friends)
            return render_template('template_user.html',isLogged=True,friends=user.friends)
        else:
            flash('Give proper values to all fields')
            return render_template('template_friends.html',form=form,isLogged=True)

def before_request():
    if not 'isLogged' in session:
        return redirect('/')

#tämä suoritetaan aina ennen minkään route:n suorittamista
ud.before_request(before_request)
Пример #45
0
from flask import Blueprint, render_template, g, request, current_app
from flask_login import login_required
from ..models import UserNotice
from ..g_func import user_and_session
from ..util.async_task import mark_notice_read
from .. import db

notice = Blueprint('notice', __name__, template_folder='../templates/notice')

notice.before_request(user_and_session)


@notice.route('/')
def index():
    page = request.args.get('page', 1, type=int)
    # need pip install https://github.com/mitsuhiko/flask-sqlalchemy/pull/328
    # n_paginate = db.session.query(UserNotice).\
    #     filter_by(to_uid=g.user.id).\
    #     paginate(page, current_app.config.get(
    #                                     'NOTICES_PER_PAGE', 30))
    n_paginate = g.user.r_notices.paginate(page, current_app.config.get(
                                                    'NOTICES_PER_PAGE', 30))
    notices = n_paginate.items

    mark_notice_read.delay(g.user.id)
    return render_template('notices.html', paginate=n_paginate, notices=notices)
Пример #46
0
class Admin(object):
    """Class that provides a way to add admin interface to Flask applications.

    :param app: The Flask application
    :param url_prefix: The url prefix
    :param main_dashboard: The main dashboard object
    :param endpoint: The endpoint
    """
    def __init__(self, app, url_prefix="/admin", title="flask-dashed",
            main_dashboard=None, endpoint='admin'):

        if not main_dashboard:
            from dashboard import DefaultDashboard
            main_dashboard = DefaultDashboard

        self.blueprint = Blueprint(endpoint, __name__,
            static_folder='static', template_folder='templates')
        self.app = app
        self.url_prefix = url_prefix
        self.endpoint = endpoint
        self.title = title
        self.secure_functions = OrderedMultiDict()
        # Checks security for current path
        self.blueprint.before_request(
            lambda: self.check_path_security(request.path))

        self.app.register_blueprint(self.blueprint, url_prefix=url_prefix)
        self.root_nodes = []

        self._add_node(main_dashboard, '/', 'main-dashboard', 'dashboard')
        # Registers recursive_getattr filter
        self.app.jinja_env.filters['recursive_getattr'] = recursive_getattr

    def register_node(self, url_prefix, endpoint, short_title, title=None,
            parent=None, node_class=AdminNode):
        """Registers admin node.

        :param url_prefix: The url prefix
        :param endpoint: The endpoint
        :param short_title: The short title
        :param title: The long title
        :param parent: The parent node path
        :param node_class: The class for node objects
        """
        return self._add_node(node_class, url_prefix, endpoint, short_title,
            title=title, parent=parent)

    def register_module(self, module_class, url_prefix, endpoint, short_title,
            title=None, parent=None):
        """Registers new module to current admin.
        """
        return self._add_node(module_class, url_prefix, endpoint, short_title,
            title=title, parent=parent)

    def _add_node(self, node_class, url_prefix, endpoint, short_title,
        title=None, parent=None):
        """Registers new node object to current admin object.
        """
        title = short_title if not title else title
        if parent and not issubclass(parent.__class__, AdminNode):
            raise Exception('`parent` class must be AdminNode subclass')
        new_node = node_class(self, url_prefix, endpoint, short_title,
            title=title, parent=parent)
        if parent:
            parent.children.append(new_node)
        else:
            self.root_nodes.append(new_node)
        return new_node

    @property
    def main_dashboard(self):
        return self.root_nodes[0]

    def add_path_security(self, path, function, http_code=403):
        """Registers security function for given path.

        :param path: The endpoint to secure
        :param function: The security function
        :param http_code: The response http code
        """
        self.secure_functions.add(path, (function, http_code))

    def check_path_security(self, path):
        """Checks security for specific and path.

        :param path: The path to check
        """
        for key in self.secure_functions.iterkeys():
            if path.startswith("%s%s" % (self.url_prefix, key)):
                for function, http_code in self.secure_functions.getlist(key):
                    if not function():
                        return abort(http_code)
Пример #47
0
def create_blueprint():

    gitpages_web_ui = Blueprint(
        'gitpages_web_ui',
        __name__,
        template_folder='templates',
    )

    gitpages_web_ui.add_url_rule(
        '/',
        'index_view',
        index_view_default_ref,
        defaults={
            'page_number': 1,
        },
    )

    gitpages_web_ui.add_url_rule(
        '/index/page/<int:page_number>/',
        'index_view',
        index_view_default_ref,
    )

    gitpages_web_ui.add_url_rule(
        '/feed/atom',
        'atom_feed',
        atom_feed,
    )
    gitpages_web_ui.add_url_rule(
        '/feed/rss',
        'rss_feed_redirect',
        rss_feed_redirect,
    )

    gitpages_web_ui.add_url_rule(
        '/' + '/'.join(
            [
                'archives',
                '<git_ref:tree_id>',
                '<int(fixed_digits=4):year>',
                '<int(fixed_digits=2):month>',
                '<int(fixed_digits=2):day>',
                '<slug>',
            ]
        ) + '/',
        'page_archive_view_ref',
        page_archive_view,
    )
    gitpages_web_ui.add_url_rule(
        '/' + '/'.join(
            [
                'archives',
                '<int(fixed_digits=4):year>',
                '<int(fixed_digits=2):month>',
                '<int(fixed_digits=2):day>',
                '<slug>',
            ]
        ) + '/',
        'page_archive_view',
        page_archive_view_default_ref,
    )

    gitpages_web_ui.add_url_rule(
        '/' + '/'.join(
            [
                'archives',
                '<int(fixed_digits=4):year>',
                '<int(fixed_digits=2):month>',
                '<int(fixed_digits=2):day>',
            ]
        ) + '/',
        'daily_archive',
        daily_archive_default,
        defaults={
            'page_number': 1,
        },
    )

    gitpages_web_ui.add_url_rule(
        '/' + '/'.join(
            [
                'archives',
                '<int(fixed_digits=4):year>',
                '<int(fixed_digits=2):month>',
            ]
        ) + '/',
        'monthly_archive',
        monthly_archive_default,
        defaults={
            'page_number': 1,
        },
    )

    gitpages_web_ui.add_url_rule(
        '/' + '/'.join(
            [
                'archives',
                '<int(fixed_digits=4):year>',
            ]
        ) + '/',
        'yearly_archive',
        yearly_archive_default,
        defaults={
            'page_number': 1,
        },
    )

    gitpages_web_ui.add_url_rule(
        '/' + '/'.join(
            [
                'attachment',
                '<git_ref:tree_id>',
            ]
        ),
        'attachment',
        attachment,
        defaults=dict(
            inline=False,
        ),
    )

    gitpages_web_ui.add_url_rule(
        '/' + '/'.join(
            [
                'attachment',
                '<git_ref:tree_id>',
                'inline',
            ]
        ),
        'inline_attachment',
        attachment,
        defaults=dict(
            inline=True,
        ),
    )

    gitpages_web_ui.before_app_first_request(setup_gitpages_application)
    gitpages_web_ui.before_request(setup_gitpages)
    gitpages_web_ui.teardown_request(teardown_gitpages)

    return gitpages_web_ui
Пример #48
0
            abort(401)
        if not token_is_valid(incoming_token):
            abort(403, incoming_token)


def token_is_valid(incoming_token):
    if Token.query.filter(Token.token == incoming_token).first():
        return True
    return False


def get_token_from_headers(headers):
    auth_header = headers.get('Authorization', '')
    if auth_header[:7] != 'Bearer ':
        return None
    return auth_header[7:]


main.before_request(check_url_scheme)
main.before_request(requires_authentication)


@main.after_request
def add_cache_control(response):
    response.cache_control.max_age = 24 * 60 * 60
    return response


from .views import notification, organisation, job, service, user, index
from . import errors, encryption
Пример #49
0
                   session, redirect, url_for,
                   abort, flash)

from ..models import Session, ModelError
from ..models.user import User, UserOperator
from .helpers import (save_account_to_session,
                      check_consistency, get_next_url,
                      render_template, login_and_sid_matching_required)
from .oauth import providers, BaseOAuthError, BaseOAuth


account_bp = Blueprint('account', __name__)
user_op = UserOperator(Session())


account_bp.before_request(check_consistency)


@account_bp.route('/')
def profile():
    next_url = get_next_url()
    if g.is_login:
        session.pop('provider', None)
        session.pop('token', None)
    if g.is_login or ('token' in session and 'provider' in session):
        return render_template('account/profile.html', next=next_url)
    else:
        return redirect(url_for('session.render_login'))


@account_bp.route('/delete', methods=['POST'])
Пример #50
0
from . import files as api_files
from . import settings as api_settings
from . import timelapse as api_timelapse
from . import users as api_users
from . import log as api_logs
from . import slicing as api_slicing
from . import printer_profiles as api_printer_profiles
from . import languages as api_languages
from . import system as api_system


VERSION = "0.1"

api.after_request(noCachingExceptGetResponseHandler)

api.before_request(corsRequestHandler)
api.before_request(enforceApiKeyRequestHandler)
api.before_request(loginFromApiKeyRequestHandler)
api.after_request(corsResponseHandler)

#~~ data from plugins

@api.route("/plugin/<string:name>", methods=["GET"])
def pluginData(name):
	api_plugins = octoprint.plugin.plugin_manager().get_filtered_implementations(lambda p: p._identifier == name, octoprint.plugin.SimpleApiPlugin)
	if not api_plugins:
		return make_response("Not found", 404)

	if len(api_plugins) > 1:
		return make_response("More than one api provider registered for {name}, can't proceed".format(name=name), 500)
Пример #51
0
def flaskbb_load_blueprints(app):
    forum = Blueprint("forum", __name__)
    register_view(
        forum,
        routes=[
            "/category/<int:category_id>", "/category/<int:category_id>-<slug>"
        ],
        view_func=ViewCategory.as_view("view_category")
    )
    register_view(
        forum,
        routes=[
            "/forum/<int:forum_id>/edit", "/forum/<int:forum_id>-<slug>/edit"
        ],
        view_func=ManageForum.as_view("manage_forum")
    )
    register_view(
        forum,
        routes=["/forum/<int:forum_id>", "/forum/<int:forum_id>-<slug>"],
        view_func=ViewForum.as_view("view_forum")
    )
    register_view(
        forum,
        routes=["/<int:forum_id>/markread", "/<int:forum_id>-<slug>/markread"],
        view_func=MarkRead.as_view("markread")
    )
    register_view(
        forum,
        routes=[
            "/<int:forum_id>/topic/new", "/<int:forum_id>-<slug>/topic/new"
        ],
        view_func=NewTopic.as_view("new_topic")
    )
    register_view(
        forum,
        routes=["/memberlist"],
        view_func=MemberList.as_view("memberlist")
    )
    register_view(
        forum,
        routes=["/post/<int:post_id>/delete"],
        view_func=DeletePost.as_view("delete_post")
    )
    register_view(
        forum,
        routes=["/post/<int:post_id>/edit"],
        view_func=EditPost.as_view("edit_post")
    )
    register_view(
        forum,
        routes=["/post/<int:post_id>/raw"],
        view_func=RawPost.as_view("raw_post")
    )
    register_view(
        forum,
        routes=["/post/<int:post_id>/report"],
        view_func=ReportView.as_view("report_post")
    )
    register_view(
        forum,
        routes=["/post/<int:post_id>"],
        view_func=ViewPost.as_view("view_post")
    )
    register_view(
        forum,
        routes=["/search"],
        view_func=Search.as_view("search")
    )
    register_view(
        forum,
        routes=[
            "/topic/<int:topic_id>/delete",
            "/topic/<int:topic_id>-<slug>/delete"
        ],
        view_func=DeleteTopic.as_view("delete_topic")
    )
    register_view(
        forum,
        routes=[
            "/topic/<int:topic_id>/highlight",
            "/topic/<int:topic_id>-<slug>/highlight"
        ],
        view_func=HighlightTopic.as_view("highlight_topic")
    )
    register_view(
        forum,
        routes=[
            "/topic/<int:topic_id>/lock", "/topic/<int:topic_id>-<slug>/lock"
        ],
        view_func=LockTopic.as_view("lock_topic")
    )
    register_view(
        forum,
        routes=[
            "/topic/<int:topic_id>/post/<int:post_id>/reply",
            "/topic/<int:topic_id>-<slug>/post/<int:post_id>/reply"
        ],
        view_func=NewPost.as_view("reply_post")
    )
    register_view(
        forum,
        routes=[
            "/topic/<int:topic_id>/post/new",
            "/topic/<int:topic_id>-<slug>/post/new"
        ],
        view_func=NewPost.as_view("new_post")
    )
    register_view(
        forum,
        routes=["/topic/<int:topic_id>", "/topic/<int:topic_id>-<slug>"],
        view_func=ViewTopic.as_view("view_topic")
    )
    register_view(
        forum,
        routes=[
            "/topic/<int:topic_id>/trivialize",
            "/topic/<int:topic_id>-<slug>/trivialize"
        ],
        view_func=TrivializeTopic.as_view("trivialize_topic")
    )
    register_view(
        forum,
        routes=[
            "/topic/<int:topic_id>/unlock",
            "/topic/<int:topic_id>-<slug>/unlock"
        ],
        view_func=UnlockTopic.as_view("unlock_topic")
    )
    register_view(
        forum,
        routes=[
            "/topictracker/<int:topic_id>/add",
            "/topictracker/<int:topic_id>-<slug>/add"
        ],
        view_func=TrackTopic.as_view("track_topic")
    )
    register_view(
        forum,
        routes=[
            "/topictracker/<int:topic_id>/delete",
            "/topictracker/<int:topic_id>-<slug>/delete"
        ],
        view_func=UntrackTopic.as_view("untrack_topic")
    )
    register_view(
        forum,
        routes=["/topictracker"],
        view_func=TopicTracker.as_view("topictracker")
    )
    register_view(forum, routes=["/"], view_func=ForumIndex.as_view("index"))
    register_view(
        forum,
        routes=["/who-is-online"],
        view_func=WhoIsOnline.as_view("who_is_online")
    )
    register_view(
        forum,
        routes=[
            "/topic/<int:topic_id>/hide", "/topic/<int:topic_id>-<slug>/hide"
        ],
        view_func=HideTopic.as_view("hide_topic")
    )
    register_view(
        forum,
        routes=[
            "/topic/<int:topic_id>/unhide",
            "/topic/<int:topic_id>-<slug>/unhide"
        ],
        view_func=UnhideTopic.as_view("unhide_topic")
    )
    register_view(
        forum,
        routes=["/post/<int:post_id>/hide"],
        view_func=HidePost.as_view("hide_post")
    )
    register_view(
        forum,
        routes=["/post/<int:post_id>/unhide"],
        view_func=UnhidePost.as_view("unhide_post")
    )
    register_view(
        forum,
        routes=[
            "/markdown",
            "/markdown/<path:mode>"
        ],
        view_func=MarkdownPreview.as_view("markdown_preview")
    )

    forum.before_request(force_login_if_needed)
    app.register_blueprint(forum, url_prefix=app.config["FORUM_URL_PREFIX"])
Пример #52
0
from flask import Blueprint

from ..authentication import requires_authentication

main = Blueprint('main', __name__)

main.before_request(requires_authentication)


@main.after_request
def add_cache_control(response):
    response.cache_control.max_age = 24 * 60 * 60
    return response


from .views import suppliers, services, users, drafts
from . import errors
Пример #53
0
from . import connection as api_connection
from . import files as api_files
from . import settings as api_settings
from . import timelapse as api_timelapse
from . import users as api_users
from . import slicing as api_slicing
from . import printer_profiles as api_printer_profiles
from . import languages as api_languages
from . import system as api_system


VERSION = "0.1"

api.after_request(noCachingExceptGetResponseHandler)

api.before_request(corsRequestHandler)
api.before_request(loginFromAuthorizationHeaderRequestHandler)
api.before_request(loginFromApiKeyRequestHandler)
api.after_request(corsResponseHandler)

#~~ data from plugins

@api.route("/plugin/<string:name>", methods=["GET"])
def pluginData(name):
	api_plugins = octoprint.plugin.plugin_manager().get_filtered_implementations(lambda p: p._identifier == name, octoprint.plugin.SimpleApiPlugin)
	if not api_plugins:
		return make_response("Not found", 404)

	if len(api_plugins) > 1:
		return make_response("More than one api provider registered for {name}, can't proceed".format(name=name), 500)
Пример #54
0
from copy import deepcopy
from bson import ObjectId
import datetime
from flask import Blueprint, current_app, render_template, request, make_response, jsonify, g
from flask.views import MethodView
from ..utils import get_payload, send_response, str_to_date, serialize, Validator, get_docs
from ..login import check_valid_auth

# for CRUD operations see http://stackoverflow.com/a/630475/1607448
# TODO check for special forbidden operators see: http://docs.mongodb.org/manual/reference/limits/
mod = Blueprint('accounting', __name__, url_prefix='/api/accounting')
# secure the whole blueprint
mod.before_request(check_valid_auth)

buchungs_schema = {
    'date':{'type':'datetime','required':True},
    'client':{'type':'string','required':True,'empty':False},
    'tags':{'type':'list'},
    'account':{'type':'string','required':True,'empty':False},
    'info':{'type':'string'},
    'amount':{'type':'float','required':True,'forbidden':[0.0]},
    'category':{'type':'string','required':False},
    'comment':{'type':'string'},
    '_edit_time':{'type':'datetime','required':False},
    '_edit_by':{'type':'string','required':False},
    '_id':{'type':'objectid','required':False},
}
buchungs_validator = Validator(buchungs_schema)

def serialize_for_search(payload):
    for key in ('date','_edit_time'):
Пример #55
0
from flask import Blueprint

manufacture_ws = Blueprint("manufacture_ws", __name__, static_folder="static",
                             template_folder="templates")
from litefac.apis.auth import load_user_from_token
manufacture_ws.before_request(load_user_from_token)

from litefac.portal.manufacture_ws import webservices

Пример #56
0
    url_for,
    jsonify,
    render_template
)
from validate_email import validate_email
from time import time

SESSION_LIFETIME_S = 259200 # 3 days

ui = Blueprint('ui', __name__)

def make_session_permanent():
    session.permanent = True
    current_app.permanent_session_lifetime = SESSION_LIFETIME_S

ui.before_request(make_session_permanent)

def current_user():
    if 'uid' not in session or session['expiry'] < time():
        return None
    return User.query.filter_by(id=session['uid']).first()

def require_user():
    if 'uid' not in session or session['expiry'] < time():
        abort(401)
    return User.query.filter_by(id=session['uid']).first_or_404()

##############
# HTML Pages #
##############
@ui.route('/', methods=['GET'])
Пример #57
0
from flask import Blueprint

from ..authentication import requires_authentication

auth = Blueprint('auth', __name__)

auth.before_request(requires_authentication)

from . import views  # noqa
Пример #58
0
from flask import Blueprint

cargo_ws = Blueprint("cargo_ws", __name__, static_folder="static", 
    template_folder="templates")

from litefac.apis.auth import load_user_from_token
cargo_ws.before_request(load_user_from_token)

from litefac.portal.cargo_ws import webservices
Пример #59
0
"""

import ujson as json
from datetime import datetime

from flask import Blueprint
from flask import g

from pinserver.helpers import before_request
from pinserver.models.user import User
from pinserver.models.pin import Pin
from pinserver.models.fav import Fav

fav = Blueprint('fav', __name__)

fav.before_request(before_request)

@fav.route('/fav/<pin_id>')
def fav_pin(pin_id):
    if g.user_id:
        already_fav = Fav.objects(owner=g.user_id, pin=pin_id).first()
        if not already_fav:
            pin = Pin.objects(id=pin_id).first()
            user = User.objects(id=g.user_id).first()
            fav = Fav(owner=user,
                      pin=pin,
                      create_at=datetime.utcnow())
            fav.save()
            return ('fav success', 200)
        return ('already fav', 400)
    return ('fav pin session timeout', 400)
Пример #60
0
# -*- coding: utf-8 -*-

from flask import Blueprint, g, session, redirect, flash

from ..models import Session
from ..models.user import UserOperator
from .helpers import check_consistency, login_and_sid_matching_required, render_template, get_next_url


session_bp = Blueprint("session", __name__)
user_op = UserOperator(Session())


session_bp.before_request(check_consistency)


@session_bp.route("/login")
def render_login():
    next_url = get_next_url()
    if g.is_login:
        return redirect(next_url)
    else:
        return render_template("session/login.html", next=next_url)


@session_bp.route("/logout", methods=["GET", "POST"])
@login_and_sid_matching_required
def logout():
    session.clear()
    flash("You have been logout", category="success")
    return redirect(get_next_url())