Trees | Indices | Help |
---|
|
1 import flask 2 import sqlalchemy 3 from requests.exceptions import RequestException, InvalidSchema 4 from wtforms import ValidationError 5 from . import query_params, get_copr, file_upload, POST 6 from coprs import db, models, forms 7 from coprs.views.apiv3_ns import apiv3_ns 8 from coprs.views.misc import api_login_required 9 from coprs.exceptions import ApiError, DuplicateException, BadRequest 10 from coprs.logic.modules_logic import ModuleProvider, ModuleBuildFacade 1718 19 @apiv3_ns.route("/module/build/<ownername>/<projectname>", methods=POST) 20 @api_login_required 21 @file_upload() 22 -def build_module(ownername, projectname):23 copr = get_copr(ownername, projectname) 24 form = forms.ModuleBuildForm(csrf_enabled=False) 25 if not form.validate_on_submit(): 26 raise BadRequest(form.errors) 27 28 facade = None 29 try: 30 mod_info = ModuleProvider.from_input(form.modulemd.data or form.scmurl.data) 31 facade = ModuleBuildFacade(flask.g.user, copr, mod_info.yaml, mod_info.filename) 32 module = facade.submit_build() 33 db.session.commit() 34 return flask.jsonify(to_dict(module)) 35 36 except (ValidationError, RequestException, InvalidSchema) as ex: 37 raise BadRequest(str(ex)) 38 39 except sqlalchemy.exc.IntegrityError: 40 raise DuplicateException("Module {}-{}-{} already exists".format( 41 facade.modulemd.name, facade.modulemd.stream, facade.modulemd.version))42
Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 | http://epydoc.sourceforge.net |