{% macro render_field(field, label=None, class='', info=None) %} {% if not kwargs['hidden'] %}
{{ field(class="form-control", **kwargs)|safe }}
{% else %} {{ field(**kwargs)|safe }} {% endif %} {% endmacro %} {% macro render_pypi_python_versions_field(field) %}
   
{% if field.errors %} {% for error in field.errors %}
  • {{ error }}
  • {% endfor %} {% endif %}
    {% endmacro %} {% macro render_pagination(request, paginator) %} {% if paginator.pages > 1 %}
    {% endif %} {% endmacro %} {% macro render_form_errors(form=[], errors=[]) %} {% set errors = (errors + form.errors.values() |sum(start=[])) |reject('none') |select('defined') |list %} {% if errors %} {% endif %} {% endmacro %} {% macro build_state_text(state) %} {% if state == "importing" %} {{ state }} {% elif state == "pending" %} {{ state }} {% elif state == "starting" %} {{ state }} {% elif state == "running" %} {{ state }} {% elif state == "succeeded" %} {{ state }} {% elif state == "forked" %} {{ state }} {% elif state == "skipped" %} {{ state }} {% elif state == "failed" %} {{ state }} {% elif state == "canceled" %} {{ state }} {% elif state == "waiting" %} {{ state }} {% else %} unknown {% endif %} {% endmacro %} {% macro build_state(build) %} {% if build.canceled %} {{ build_state_text("canceled") }} {% else %} {% if build.status|state_from_num == "waiting" %} {{ build_state_text(build.source_status|state_from_num) }} {% else %} {{ build_state_text(build.status|state_from_num) }} {% endif %} {% endif %} {% endmacro %} {% macro module_state(module) %} {{ build_state_text(module.status | module_state_from_num) }} {% endmacro %} {% macro os_logo(logo_name) %} {% if logo_name %} {% endif %} {% endmacro %} {% macro friendly_os_name(os_release, os_version=None) %} {% if os_release == 'epel' %} Epel for CentOS {{ os_version }} {% elif os_release == 'opensuse-leap' %} openSUSE Leap {{ os_version }} {% elif os_release == 'opensuse' and os_version == 'tumbleweed' %} openSUSE Tumbleweed {% else %} {{ os_release | capitalize }} {{ os_version }} {% endif %} {% endmacro %} {% macro alert(message, type=None) %} {% set alert_class_map = { "error": "alert-danger", "warning": "alert-warning", "success": "alert-success", } %} {% set alert_icon_map = { "error": "pficon-error-circle-o", "warning": "pficon-warning-triangle-o", "success": "pficon-ok", } %}
    {{ message }}
    {% endmacro %} {%- macro copr_details_href(copr) %} {{- copr_url('coprs_ns.copr_detail', copr) }} {%- endmacro %} {% macro copr_title(copr) %} {% if copr.is_a_group_project %} {% set projects_list_href=url_for('groups_ns.list_projects_by_group', group_name=copr.group.name) %} {% set projects_list_name="@" + copr.group.name %} {% else %} {% set projects_list_href=url_for('coprs_ns.coprs_by_user', username=copr.user.name) %} {% set projects_list_name=copr.user.username %} {% endif %} {{ projects_list_name }} / {{ copr.name }} {% endmacro %} {% macro copr_name(copr) %} {{ copr.full_name }} {% endmacro %} {%- macro copr_url(view, copr) %} {#- Examine given copr and generate proper URL for the `view` Values of `username/group_name` and `coprname` are autimatically passed as the first two URL parameters, and therefore you should *not* pass them manually. Usage: copr_url('coprs_ns.foo', copr) copr_url('coprs_ns.foo', copr, arg1='bar', arg2='baz) #} {%- if not copr.is_a_group_project %} {{- url_for(view, username=copr.user.name, coprname=copr.name, **kwargs) }} {%- else %} {{- url_for(view, group_name=copr.group.name, coprname=copr.name, **kwargs) }} {%- endif %} {%- endmacro %} {% macro user_projects_panel(user) %}

    {{ g.user.name | capitalize}}

    User Image
    {{ g.user.coprs_count }} My projects {% if config.FAS_LOGIN %} {{ user.user_groups|length }} My groups {% endif %}
    {% endmacro %} {% macro task_queue_panel(tasks_info, graph) %}

    Task Queue

    {{ tasks_info.importing}} Importing {{ tasks_info.pending }} Pending {{ tasks_info.running }} Running
    {% endmacro %} {% macro recent_builds_panel(builds) %}

    Recent Builds - View All

    {% for build in builds %}

    {{build.package.name}}

    Project: {{ copr_name(build.copr) }}

    Build: {{build.id}}

    State: {{build.state}}

    Finished: {{build.max_ended_on|time_ago()}} ago

    {% endfor %}
    {% endmacro %} {% macro recent_blog_panel() %} {% if config.NEWS_URL and config.NEWS_FEED_URL %}

    News - Read All

    {% endif %} {% endmacro %} {% macro render_crumb(href, title, active=False) %}
  • {{ title }}
  • {% endmacro %} {% macro render_breadcrumbs(crumbs) %} {% endmacro %} {%- macro build_href(build) %} {{- copr_url("coprs_ns.copr_build", build.copr, build_id=build.id) -}} {% endmacro %} {% macro build_href_from_sql(build) %} {% if build.group_name %} {{- url_for('coprs_ns.copr_build', group_name=(build.copr.group.name if build.copr is defined else build.group_name), coprname=build.copr_name, build_id=build.id) -}} {% else %} {{- url_for("coprs_ns.copr_build", username=(build.copr.user.name if build.copr is defined else build.user_name), coprname = build.copr_name, build_id = build.id) -}} {% endif %} {% endmacro %} {% macro package_href(package) %} {{- copr_url('coprs_ns.copr_package', package.copr, package_name=package.name) -}} {% endmacro %} {%- macro fas_group_href(name) -%} https://admin.fedoraproject.org/accounts/group/view/{{name}} {%- endmacro -%} {% macro repo_file_href(copr, repo) %} {% if copr.is_a_group_project: %} {{- url_for('coprs_ns.generate_repo_file', group_name=copr.group.name, copr_dirname=copr.main_dir.name, name_release=repo.name_release, repofile=repo.repo_file, _external=True )|fix_url_https_frontend -}} {% else %} {{- url_for('coprs_ns.generate_repo_file', username=copr.user.name, copr_dirname=copr.main_dir.name, name_release=repo.name_release, repofile=repo.repo_file, _external=True )|fix_url_https_frontend -}} {% endif %} {% endmacro %} {% macro render_monitor_table(copr, monitor, oses, archs, status_enum_func, simple=True) %} {% for i, chroot in oses %} {% endfor %} {% for chroot in archs %} {% endfor %} {# The following code is optimized to pass (potentially large) monitor data just once. #} {# It expects results to be sorted by package.name and then mock_chroot.name. #} {% set current_row = [None] %} {% set copr_active_chroots_sorted = copr.active_chroots_sorted %} {% set copr_active_chroots_sorted_length = copr_active_chroots_sorted|length %} {#% set copr_active_chroots_sorted_index = copr_active_chroots_sorted_length %#} {# we need to set this var from an inner scope, which is unsupported, hence the following list-as-a-counter hacks: #} {% set copr_active_chroots_sorted_index = [1]*copr_active_chroots_sorted_length %} {% for row in monitor %} {% if row.package_name != current_row[0] %} {% for _ in range(copr_active_chroots_sorted_index|length, copr_active_chroots_sorted_length) %} {# "do" tag would help but just a tiny bit (so no enabling) #} {% endfor %} {% set _ = current_row.pop() %} {% set _ = current_row.append(row.package_name) %} {#% set copr_active_chroots_sorted_index = 0 %#} {% for _ in range(copr_active_chroots_sorted_index|length) %}{% if copr_active_chroots_sorted_index.remove(1) %}{% endif %}{% endfor %} {% endif %} {% for index in range(copr_active_chroots_sorted_index|length, copr_active_chroots_sorted_length) %} {% if row.mock_chroot_id == copr_active_chroots_sorted[index].id %} {% for _ in range(copr_active_chroots_sorted_index|length, index) %} {% endfor %} {#% set copr_active_chroots_sorted_index = index + 1 %#} {% for _ in range(copr_active_chroots_sorted_index|length, index+1) %} {% if copr_active_chroots_sorted_index.append(1) %}{% endif %} {% endfor %} {% set index = copr_active_chroots_sorted_length %} {% endif %} {% endfor %} {% endfor %} {% for _ in range(copr_active_chroots_sorted_index|length, copr_active_chroots_sorted_length) %} {# "do" tag would help but just a tiny bit (so no enabling) #} {% endfor %}
    Package {{ chroot|capitalize }}
    {{ chroot }}
    -
    {{ row.package_name }} - {% if simple %} {{ build_state_text(status_enum_func(row.build_chroot_status)) }} {% else %} {{ row.build_id }}
    {{ build_state_text(status_enum_func(row.build_chroot_status)) }}
    {{ row.build_pkg_version }} {% endif %}
    -
    {% endmacro %} {% macro render_additional_build_options(form, copr) %}
    {% for group_set, chs in form.chroots_sets.items() %} {% set outer_loop = loop %} {% for ch in chs %}
    {% endfor %} {% endfor %}
    {{ form.csrf_token }} {% if g.user.proven %} {{ render_field(form.memory_reqs) }} {{ render_field(form.timeout) }} {% else %} {# once we pass the hidden attribute, the field will just be hidden, it seems #} {{ render_field(form.memory_reqs, hidden = True) }} {{ render_field(form.timeout, hidden = True) }} {% endif %}
    {% endmacro %} {% macro render_srpm_build_method_box(form) %}

    3. How to build SRPM from the source

    {% set srpm_build_methods = [ ('rpkg', 'rpkg', 'Uses rpkg utility to build an srpm. Supports unpacked (plain sources + .spec) as well as packed (tarballs + patches + .spec) content. Supports also building directly from DistGit.'), ('tito', 'tito', 'This method can be used for projects that are managed with Tito packaging tool.'), ('tito test', 'tito_test', 'Same as previous Tito method, but passes --test parameter to use current branch HEAD instead of the last package tag. Also extends Release of the built package with Git versioning information.'), ('make srpm', 'make_srpm', 'This method allows unlimited customization. You need to provide .copr/Makefile with srpm target in your project and this target will be invoked inside a mock chroot to build the srpm. You can read more here.'), ] %} {% for title, name, description in srpm_build_methods %}
    {% endfor %}
    {% endmacro %}