コード例 #1
0
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)
コード例 #2
0
ファイル: coprs_packages.py プロジェクト: 0-T-0/copr
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"])
コード例 #3
0
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"])
コード例 #4
0
ファイル: coprs_packages.py プロジェクト: schlupov/copr
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)
コード例 #5
0
ファイル: coprs_packages.py プロジェクト: schlupov/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'])
コード例 #6
0
ファイル: coprs_packages.py プロジェクト: schlupov/copr
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)
コード例 #7
0
ファイル: coprs_packages.py プロジェクト: praiskup/copr
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())
コード例 #8
0
ファイル: webhooks_general.py プロジェクト: schlupov/copr
    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)
コード例 #9
0
ファイル: coprs_builds.py プロジェクト: evilkost/copr
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)
コード例 #10
0
ファイル: coprs_builds.py プロジェクト: evilkost/copr
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)
コード例 #11
0
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)
コード例 #12
0
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)
コード例 #13
0
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')
コード例 #14
0
ファイル: coprs_packages.py プロジェクト: 0-T-0/copr
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)
コード例 #15
0
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)
コード例 #16
0
ファイル: coprs_packages.py プロジェクト: 0-T-0/copr
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)