Trees | Indices | Help |
---|
|
1 import flask 2 import sqlalchemy 3 from requests.exceptions import RequestException, InvalidSchema 4 from wtforms import ValidationError 5 from . import get_copr, file_upload, POST 6 from coprs import db, forms 7 from coprs.views.apiv3_ns import apiv3_ns 8 from coprs.views.misc import api_login_required 9 from coprs.exceptions import 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.get_module_build_form(meta={'csrf': 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, 32 mod_info.filename, form.distgit.data) 33 module = facade.submit_build() 34 db.session.commit() 35 return flask.jsonify(to_dict(module)) 36 37 except (ValidationError, RequestException, InvalidSchema) as ex: 38 raise BadRequest(str(ex)) 39 40 except sqlalchemy.exc.IntegrityError: 41 raise DuplicateException("Module {}-{}-{} already exists" 42 .format(facade.modulemd.get_name(), 43 facade.modulemd.get_stream(), 44 facade.modulemd.get_version()))45
Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 | http://epydoc.sourceforge.net |