Move param_required into the decorators module
This commit is contained in:
parent
98e2ccf74d
commit
5d69fc2aa3
3 changed files with 20 additions and 23 deletions
|
@ -24,24 +24,6 @@ from _init import __version__
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
route_data = None
|
|
||||||
|
|
||||||
|
|
||||||
def truthy_param(param):
|
|
||||||
return param not in {False, 'false', 'False', '0', 'FALSE', '', 'null'}
|
|
||||||
|
|
||||||
|
|
||||||
def param_required(param_name, allow_body=False):
|
|
||||||
def wrapper(wrapped):
|
|
||||||
@wraps(wrapped)
|
|
||||||
def decorated(*args, **kwargs):
|
|
||||||
if param_name not in request.args:
|
|
||||||
if not allow_body or param_name not in request.values:
|
|
||||||
abort(make_response('Required param: %s' % param_name, 400))
|
|
||||||
return wrapped(*args, **kwargs)
|
|
||||||
return decorated
|
|
||||||
return wrapper
|
|
||||||
|
|
||||||
|
|
||||||
def common_login(db_user, permanent_session=True):
|
def common_login(db_user, permanent_session=True):
|
||||||
if login_user(LoginWrappedDBUser(db_user.uuid, db_user)):
|
if login_user(LoginWrappedDBUser(db_user.uuid, db_user)):
|
||||||
|
@ -85,8 +67,6 @@ def _list_files(path, extension):
|
||||||
|
|
||||||
|
|
||||||
def render_page_template(name, route_data=None, **kwargs):
|
def render_page_template(name, route_data=None, **kwargs):
|
||||||
debugging = app.config.get('DEBUGGING', False)
|
|
||||||
|
|
||||||
library_styles = []
|
library_styles = []
|
||||||
main_styles = []
|
main_styles = []
|
||||||
library_scripts = []
|
library_scripts = []
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
""" Various decorators for endpoint and API handlers. """
|
""" Various decorators for endpoint and API handlers. """
|
||||||
|
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
from flask import abort
|
from flask import abort, request, make_response
|
||||||
|
|
||||||
import features
|
import features
|
||||||
|
|
||||||
|
@ -35,6 +35,22 @@ def parse_repository_name(include_tag=False,
|
||||||
return inner
|
return inner
|
||||||
|
|
||||||
|
|
||||||
|
def param_required(param_name, allow_body=False):
|
||||||
|
""" Marks a route as requiring a parameter with the given name to exist in the request's arguments
|
||||||
|
or (if allow_body=True) in its body values. If the parameter is not present, the request will
|
||||||
|
fail with a 400.
|
||||||
|
"""
|
||||||
|
def wrapper(wrapped):
|
||||||
|
@wraps(wrapped)
|
||||||
|
def decorated(*args, **kwargs):
|
||||||
|
if param_name not in request.args:
|
||||||
|
if not allow_body or param_name not in request.values:
|
||||||
|
abort(make_response('Required param: %s' % param_name, 400))
|
||||||
|
return wrapped(*args, **kwargs)
|
||||||
|
return decorated
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
|
||||||
def anon_allowed(func):
|
def anon_allowed(func):
|
||||||
""" Marks a method to allow anonymous access where it would otherwise be disallowed. """
|
""" Marks a method to allow anonymous access where it would otherwise be disallowed. """
|
||||||
func.__anon_allowed = True
|
func.__anon_allowed = True
|
||||||
|
|
|
@ -27,9 +27,10 @@ from buildtrigger.triggerutil import TriggerProviderException
|
||||||
from data import model
|
from data import model
|
||||||
from data.database import db
|
from data.database import db
|
||||||
from endpoints.api.discovery import swagger_route_data
|
from endpoints.api.discovery import swagger_route_data
|
||||||
from endpoints.common import (common_login, render_page_template, param_required)
|
from endpoints.common import common_login, render_page_template
|
||||||
from endpoints.csrf import csrf_protect, generate_csrf_token, verify_csrf
|
from endpoints.csrf import csrf_protect, generate_csrf_token, verify_csrf
|
||||||
from endpoints.decorators import anon_protect, anon_allowed, route_show_if, parse_repository_name
|
from endpoints.decorators import (anon_protect, anon_allowed, route_show_if, parse_repository_name,
|
||||||
|
param_required)
|
||||||
from health.healthcheck import get_healthchecker
|
from health.healthcheck import get_healthchecker
|
||||||
from util.cache import no_cache
|
from util.cache import no_cache
|
||||||
from util.headers import parse_basic_auth
|
from util.headers import parse_basic_auth
|
||||||
|
|
Reference in a new issue