def process_package_add_or_edit(copr, source_type_text, package=None, data=None): if not flask.g.user.can_edit(copr): raise InsufficientRightsException( "You are not allowed to add or edit packages in this copr.") formdata = data or flask.request.form try: if package and data: formdata = data.copy() for key in package.source_json_dict.keys() - data.keys(): value = package.source_json_dict[key] add_function = formdata.setlist if type( value) == list else formdata.add add_function(key, value) form = forms.get_package_form_cls_by_source_type_text( source_type_text)(formdata, meta={ 'csrf': False }) except UnknownSourceTypeException: raise LegacyApiError( "Unsupported package source type {source_type_text}".format( source_type_text=source_type_text)) if form.validate_on_submit(): if not package: try: package = PackagesLogic.add(flask.app.g.user, copr.main_dir, form.package_name.data) except InsufficientRightsException: raise LegacyApiError("Insufficient permissions.") except DuplicateException: raise LegacyApiError( "Package {0} already exists in copr {1}.".format( form.package_name.data, copr.full_name)) try: source_type = helpers.BuildSourceEnum(source_type_text) except KeyError: source_type = helpers.BuildSourceEnum("scm") package.source_type = source_type package.source_json = form.source_json if "webhook_rebuild" in formdata: package.webhook_rebuild = form.webhook_rebuild.data if "max_builds" in formdata: package.max_builds = form.max_builds.data db.session.add(package) db.session.commit() else: raise LegacyApiError(form.errors) return flask.jsonify({ "output": "ok", "message": "Create or edit operation was successful.", "package": package.to_dict(), })
def process_package_add_or_edit(copr, source_type_text, package=None): try: form = forms.get_package_form_cls_by_source_type_text( source_type_text)(csrf_enabled=False) except UnknownSourceTypeException: raise LegacyApiError( "Unsupported package source type {source_type_text}".format( source_type_text=source_type_text)) if form.validate_on_submit(): if not package: try: package = PackagesLogic.add(flask.app.g.user, copr, form.package_name.data) except InsufficientRightsException: raise LegacyApiError("Insufficient permissions.") except DuplicateException: raise LegacyApiError( "Package {0} already exists in copr {1}.".format( form.package_name.data, copr.full_name)) package.source_type = helpers.BuildSourceEnum(source_type_text) package.webhook_rebuild = form.webhook_rebuild.data package.source_json = form.source_json db.session.add(package) db.session.commit() else: raise LegacyApiError(form.errors) return flask.jsonify({ "output": "ok", "message": "Create or edit operation was successful.", "package": package.to_dict(), })
def process_package_add_or_edit(copr, source_type_text, package=None): try: form = forms.get_package_form_cls_by_source_type_text(source_type_text)(csrf_enabled=False) except UnknownSourceTypeException: raise LegacyApiError("Unsupported package source type {source_type_text}".format(source_type_text=source_type_text)) if form.validate_on_submit(): if not package: try: package = PackagesLogic.add(flask.app.g.user, copr, form.package_name.data) except InsufficientRightsException: raise LegacyApiError("Insufficient permissions.") except DuplicateException: raise LegacyApiError("Package {0} already exists in copr {1}.".format(form.package_name.data, copr.full_name)) package.source_type = helpers.BuildSourceEnum(source_type_text) package.webhook_rebuild = form.webhook_rebuild.data package.source_json = form.source_json db.session.add(package) db.session.commit() else: raise LegacyApiError(form.errors) return flask.jsonify({ "output": "ok", "message": "Create or edit operation was successful.", "package": package.to_dict(), })
def process_save_package(copr, source_type_text, package_name, view, view_method, url_on_success): form = forms.get_package_form_cls_by_source_type_text(source_type_text)() if "reset" in flask.request.form: try: package = PackagesLogic.get(copr.main_dir.id, package_name)[0] except IndexError: flask.flash( "Package {package_name} does not exist in copr_dir {copr_dir}." .format(package_name, copr.main_dir.full_name)) return flask.redirect(url_on_success) # should be url_on_fail try: PackagesLogic.reset_package(flask.g.user, package) db.session.commit() except InsufficientRightsException as e: flask.flash(str(e)) return flask.redirect(url_on_success) # should be url_on_fail flask.flash("Package default source successfully reset.") return flask.redirect(url_on_success) if form.validate_on_submit(): try: if package_name: package = PackagesLogic.get(copr.main_dir.id, package_name)[0] else: package = PackagesLogic.add(flask.app.g.user, copr.main_dir, form.package_name.data) package.source_type = helpers.BuildSourceEnum(source_type_text) package.webhook_rebuild = form.webhook_rebuild.data package.source_json = form.source_json package.chroot_blacklist_raw = form.chroot_blacklist.data package.max_builds = form.max_builds.data db.session.add(package) db.session.commit() except (InsufficientRightsException, IndexError) as e: db.session.rollback() flask.flash(str(e), "error") else: flask.flash( "Package successfully saved" if package_name else "New package has been created.", "success") return flask.redirect(url_on_success) kwargs = { "coprname": copr.name, "package_name": package_name, "source_type_text": source_type_text, "form": form, } kwargs.update({"group_name": copr.group.name} if copr. is_a_group_project else {"username": copr.user.name}) return view_method(**kwargs)
def process_save_package(copr, source_type_text, package_name, view, view_method, url_on_success): form = forms.get_package_form_cls_by_source_type_text(source_type_text)() if "reset" in flask.request.form: try: package = PackagesLogic.get(copr.id, package_name)[0] except IndexError: flask.flash("Package {package_name} does not exist in copr {copr}.".format(package_name, copr.full_name)) return flask.redirect(url_on_success) # should be url_on_fail try: PackagesLogic.reset_package(flask.g.user, package) db.session.commit() except InsufficientRightsException as e: flask.flash(str(e)) return flask.redirect(url_on_success) # should be url_on_fail flask.flash("Package default source successfully reset.") return flask.redirect(url_on_success) if form.validate_on_submit(): try: if package_name: package = PackagesLogic.get(copr.id, package_name)[0] else: package = PackagesLogic.add(flask.app.g.user, copr, form.package_name.data) package.source_type = helpers.BuildSourceEnum(source_type_text) package.webhook_rebuild = form.webhook_rebuild.data package.source_json = form.source_json db.session.add(package) db.session.commit() except (InsufficientRightsException, IndexError) as e: db.session.rollback() flask.flash(str(e), "error") else: flask.flash("Package successfully saved" if package_name else "New package has been created.") return flask.redirect(url_on_success) kwargs = { "coprname": copr.name, "package_name": package_name, "source_type_text": source_type_text, "form": form, } kwargs.update({"group_name": copr.group.name} if copr.is_a_group_project else {"username": copr.user.name}) return view_method(**kwargs)