From 34ea4a8efec54b0060a5c9c3272f49a94ae9c32b Mon Sep 17 00:00:00 2001 From: Jakub Kadlčík Date: Feb 26 2017 21:23:50 +0000 Subject: Move validate_optional_params function to utils.py --- diff --git a/module_build_service/utils.py b/module_build_service/utils.py index 2f3e2f2..ef9351c 100644 --- a/module_build_service/utils.py +++ b/module_build_service/utils.py @@ -583,6 +583,12 @@ def submit_module_build(username, url, mmd, scm, yaml, optional_params=None): mmd.name, mmd.stream, mmd.version) return module + +def validate_optional_params(params): + forbidden_params = [k for k in params if k not in models.ModuleBuild.__table__.columns] + if forbidden_params: + raise ValidationError('The request contains unspecified parameters: {}'.format(", ".join(forbidden_params))) + def scm_url_schemes(terse=False): """ Definition of URL schemes supported by both frontend and scheduler. diff --git a/module_build_service/views.py b/module_build_service/views.py index 9cf93af..097f4d9 100644 --- a/module_build_service/views.py +++ b/module_build_service/views.py @@ -35,7 +35,7 @@ from module_build_service import app, conf, log from module_build_service import models, db from module_build_service.utils import ( pagination_metadata, filter_module_builds, submit_module_build_from_scm, - submit_module_build_from_yaml, scm_url_schemes, get_scm_url_re) + submit_module_build_from_yaml, scm_url_schemes, get_scm_url_re, validate_optional_params) from module_build_service.errors import ( ValidationError, Unauthorized, NotFound) @@ -97,18 +97,13 @@ class ModuleBuildAPI(MethodView): raise Unauthorized("%s is not in any of %r, only %r" % ( username, conf.allowed_groups, groups)) - def validate_optional_params(params): - forbidden_params = [k for k in params if k not in models.ModuleBuild.__table__.columns] - if forbidden_params: - raise ValidationError('The request contains unspecified parameters: {}'.format(", ".join(forbidden_params))) - - kwargs = {"username": username, "validate_optional_params": validate_optional_params} + kwargs = {"username": username} module = (self.post_file(**kwargs) if "multipart/form-data" in request.headers.get("Content-Type") else self.post_scm(**kwargs)) return jsonify(module.json()), 201 - def post_scm(self, username, validate_optional_params): + def post_scm(self, username): try: r = json.loads(request.get_data().decode("utf-8")) except: @@ -132,7 +127,7 @@ class ModuleBuildAPI(MethodView): optional_params = {k: v for k, v in r.items() if k != "scmurl"} return submit_module_build_from_scm(username, url, allow_local_url=False, optional_params=optional_params) - def post_file(self, username, validate_optional_params): + def post_file(self, username): if not conf.yaml_submit_allowed: raise Unauthorized("YAML submission is not enabled") validate_optional_params(request.form)