def copr_rebuild_package(copr, package_name): package = ComplexLogic.get_package_safe(copr, package_name) data = package.source_json_dict if package.source_type_text == "git_and_tito": data["git_directory"] = data["git_dir"] # @FIXME workaround form = forms.BuildFormTitoFactory f = render_add_build_tito view_suffix = "_tito" elif package.source_type_text == "mock_scm": form = forms.BuildFormMockFactory f = render_add_build_mock view_suffix = "_mock" elif package.source_type_text == "pypi": form = forms.BuildFormPyPIFactory f = render_add_build_pypi view_suffix = "_pypi" else: flask.flash( "Package {} has not the default source which is required for rebuild. Please configure some source" .format(package_name, copr.full_name)) return flask.redirect( helpers.copr_url("coprs_ns.copr_edit_package", copr, package_name=package_name)) form = form(copr.active_chroots)(data=data) return f(copr, form, view="coprs_ns.copr_new_build" + view_suffix, package=package)
def copr_edit_package(copr, package_name, source_type=None, **kwargs): package = ComplexLogic.get_package_safe(copr, package_name) data = package.source_json_dict data["webhook_rebuild"] = package.webhook_rebuild if package.source_type and not source_type: source_type = package.source_type_text elif not source_type: source_type = "git_and_tito" form_classes = { "git_and_tito": forms.PackageFormTito, "mock_scm": forms.PackageFormMock, "pypi": forms.PackageFormPyPI, } form = {k: v(formdata=None) for k, v in form_classes.items()} if "form" in kwargs: form[kwargs["form"].source_type.data] = kwargs["form"] elif package.source_type: if package.source_type_text == "git_and_tito" and "git_dir" in data: data["git_directory"] = data["git_dir"] # @FIXME workaround form[package.source_type_text] = form_classes[package.source_type_text](data=data) return flask.render_template("coprs/detail/package_edit.html", package=package, copr=copr, source_type=source_type, view="coprs_ns.copr_edit_package", form_tito=form["git_and_tito"], form_mock=form["mock_scm"], form_pypi=form["pypi"])
def copr_edit_package(copr, package_name, source_type_text=None, **kwargs): package = ComplexLogic.get_package_safe(copr, package_name) data = package.source_json_dict data["webhook_rebuild"] = package.webhook_rebuild if package.has_source_type_set and not source_type_text: source_type_text = package.source_type_text elif not source_type_text: source_type_text = "git_and_tito" form_classes = { "git_and_tito": forms.PackageFormTito, "mock_scm": forms.PackageFormMock, "pypi": forms.PackageFormPyPI, "rubygems": forms.PackageFormRubyGems, } form = {k: v(formdata=None) for k, v in form_classes.items()} if "form" in kwargs: form[source_type_text] = kwargs["form"] elif package.has_source_type_set: if package.source_type_text == "git_and_tito" and "git_dir" in data: data["git_directory"] = data["git_dir"] # @FIXME workaround form[package.source_type_text] = form_classes[ package.source_type_text](data=data) return flask.render_template("coprs/detail/edit_package.html", package=package, copr=copr, source_type_text=source_type_text, view="coprs_ns.copr_edit_package", form_tito=form["git_and_tito"], form_mock=form["mock_scm"], form_pypi=form["pypi"], form_rubygems=form["rubygems"])
def copr_rebuild_all_packages(copr): form = forms.RebuildAllPackagesFormFactory( copr.active_chroots, [package.name for package in copr.packages])() if flask.request.method == "POST" and form.validate_on_submit(): try: packages = [] for package_name in form.packages.data: packages.append( ComplexLogic.get_package_safe(copr.main_dir, package_name)) PackagesLogic.batch_build(flask.g.user, copr, packages, form.selected_chroots, enable_net=form.enable_net.data) except (ObjectNotFound, ActionInProgressException, NoPackageSourceException, \ InsufficientRightsException, MalformedArgumentException) as e: db.session.rollback() flask.flash(str(e), "error") else: db.session.commit() flask.flash("Batch build successfully started.", "success") return flask.redirect(helpers.url_for_copr_builds(copr)) return flask.render_template("coprs/detail/packages_rebuild_all.html", view="coprs_ns.copr_rebuild_all_packages", form=form, copr=copr)
def copr_edit_package(copr, package_name, source_type_text=None, **kwargs): package = ComplexLogic.get_package_safe(copr.main_dir, package_name) data = package.source_json_dict data["webhook_rebuild"] = package.webhook_rebuild data["chroot_blacklist"] = package.chroot_blacklist_raw data["max_builds"] = package.max_builds if package.has_source_type_set and not source_type_text: source_type_text = package.source_type_text elif not source_type_text: source_type_text = "scm" form_classes = { "scm": forms.PackageFormScm, "pypi": forms.PackageFormPyPI, "rubygems": forms.PackageFormRubyGems, "custom": forms.PackageFormCustom, } form = {k: v(formdata=None) for k, v in form_classes.items()} if "form" in kwargs: form[source_type_text] = kwargs["form"] elif package.has_source_type_set: form[package.source_type_text] = form_classes[ package.source_type_text](data=data) return flask.render_template("coprs/detail/edit_package.html", package=package, copr=copr, source_type_text=source_type_text, view="coprs_ns.copr_edit_package", form_scm=form["scm"], form_pypi=form["pypi"], form_rubygems=form["rubygems"], form_custom=form['custom'])
def copr_rebuild_package(copr, package_name): package = ComplexLogic.get_package_safe(copr.main_dir, package_name) data = package.source_json_dict if package.source_type_text == "scm": form = forms.BuildFormScmFactory f = render_add_build_scm view_suffix = "_scm" elif package.source_type_text == "pypi": form = forms.BuildFormPyPIFactory f = render_add_build_pypi view_suffix = "_pypi" elif package.source_type_text == "custom": form = forms.BuildFormCustomFactory f = render_add_build_custom view_suffix = "_custom" else: flask.flash( "Package {} has not the default source which is required for rebuild. Please configure some source" .format(package_name, copr.full_name)) return flask.redirect( helpers.copr_url("coprs_ns.copr_edit_package", copr, package_name=package_name)) form = form(copr.active_chroots, package)(data=data) return f(copr, form, view="coprs_ns.copr_new_build" + view_suffix, package=package)
def copr_package_icon(copr, package_name): try: package = ComplexLogic.get_package_safe(copr.main_dir, package_name) except ObjectNotFound: return send_file("static/status_images/bad_url.png", mimetype='image/png') return send_build_icon(package.last_build())
def decorated_function(copr, **kwargs): if not 'package_name' in kwargs: return 'PACKAGE_NAME_REQUIRED\n', 400 package_name = kwargs.pop('package_name') try: package = ComplexLogic.get_package_safe(copr.main_dir, package_name) except ObjectNotFound: return "PACKAGE_NOT_FOUND\n", 404 return route(copr, package, **kwargs)
def render_package_edit(copr, package_name, view, form_tito=None, form_mock=None): package = ComplexLogic.get_package_safe(copr, package_name) if not form_tito: data = package.source_json_dict if "git_dir" in data: data["git_directory"] = data["git_dir"] # @FIXME workaround form_tito = forms.PackageFormTitoFactory.create_form_cls()(data=data) if not form_mock: data = package.source_json_dict form_mock = forms.PackageFormMockFactory.create_form_cls()(data=data) return flask.render_template("coprs/detail/package_edit.html", package=package, copr=copr, form_tito=form_tito, form_mock=form_mock, view=view)
def render_copr_package_rebuild(copr, package_name, view): package = ComplexLogic.get_package_safe(copr, package_name) data = package.source_json_dict if package.source_type_text == "git_and_tito": data["git_directory"] = data["git_dir"] # @FIXME workaround form = forms.BuildFormTitoFactory f = render_add_build_tito view_suffix = "_tito" elif package.source_type_text == "mock_scm": form = forms.BuildFormMockFactory f = render_add_build_mock view_suffix = "_mock" form = form.create_form_cls(copr.active_chroots)(data=data) return f(copr, form, view=view + view_suffix)
def copr_package_icon(copr, package_name): try: package = ComplexLogic.get_package_safe(copr, package_name) except ObjectNotFound: return send_file("static/status_images/bad_url.png", mimetype='image/png') last_build = package.last_build() if last_build: if last_build.state in ["importing", "pending", "starting", "running"]: return send_file("static/status_images/in_progress.png", mimetype='image/png') if last_build.state in ["succeeded", "skipped"]: return send_file("static/status_images/succeeded.png", mimetype='image/png') if last_build.state == "failed": return send_file("static/status_images/failed.png", mimetype='image/png') else: return send_file("static/status_images/unknown.png", mimetype='image/png')
def copr_rebuild_package(copr, package_name): package = ComplexLogic.get_package_safe(copr, package_name) data = package.source_json_dict if package.source_type_text == "git_and_tito": data["git_directory"] = data["git_dir"] # @FIXME workaround form = forms.BuildFormTitoFactory f = render_add_build_tito view_suffix = "_tito" elif package.source_type_text == "mock_scm": form = forms.BuildFormMockFactory f = render_add_build_mock view_suffix = "_mock" elif package.source_type_text == "pypi": form = forms.BuildFormPyPIFactory f = render_add_build_pypi view_suffix = "_pypi" else: flask.flash("Package {} has not the default source which is required for rebuild. Please configure some source" .format(package_name, copr.full_name)) return flask.redirect(helpers.copr_url("coprs_ns.copr_edit_package", copr, package_name=package_name)) form = form(copr.active_chroots)(data=data) return f(copr, form, view="coprs_ns.copr_new_build" + view_suffix, package=package)
def copr_package(copr, package_name): package = ComplexLogic.get_package_safe(copr, package_name) return flask.render_template("coprs/detail/package.html", package=package, copr=copr)