{% extends "base.html" %} {% block title %}{{ stream_title }} PatchSets - ePortal{% if current_unit() %} [{{ current_unit().title }}]{% endif %}{% endblock %} {% set sclass = { DeploymentStatus.UNDEPLOYED: 'undeployed', DeploymentStatus.NOT_DOWNLOADED: 'undeployed', DeploymentStatus.ENABLED: 'enabled', DeploymentStatus.DISABLED: 'disabled', DeploymentStatus.NOT_AVAILABLE: 'na', DeploymentStatus.BLOCKED: 'na', DeploymentStatus.WARNING: 'enabled warning'} %} {% block head_css %} {{ super() }} {% endblock %} {% block body %} {% if local %}
Patch source isn't configured! You can setup source here or deploy patchsets manually. See documentation.
{% endif %} {% if deployment_status %} {% endif %}

Available {{ stream_title }} PatchSets {% if is_kernel and enabled_distros %} {{ enabled_distros | join(', ') }} {% endif %}

{% if (ps_products|length) > 1 %} {% endif %}
{# The grid is as wide as the feeds the portal has, so the page reflows by scrolling the table rather than itself. Focusable: a scroll container that only the mouse can reach is unusable from the keyboard. Named, or that stop announces as a group with nothing to say. #}
{% for feed in all_feeds %} {% endfor %} {% for ps in patchsets %} {% set distro_list = ", ".join(distros[ps] | sort) or 'Unknown' %} {% for feed in all_feeds %} {% set feed_status = status.get((feed, ps)) %} {% endfor %} {% endfor %}
Patchsets and their deployment state per feed
Patchsets {{ feed }} {%- if usage.feed.get(feed) %}
{{ usage.feed[feed] }} {%- endif %}
Actions
{% if usage.release.get(ps) %} {{ usage.release[ps] }} {% endif %} {{ distro_list }} {%- if raw_flavors[ps] %} {# The `title` tooltip needs a hover; the cell cannot take focus. #} Flavours: {{ ", ".join(raw_flavors[ps]) }} {%- endif %} {{ ps }} {{ feed_status }} {%- if feed_status == DeploymentStatus.WARNING %}
Disabled on the patchserver {%- endif %} {% if usage.feed_release.get((feed, ps)) %}
{{ usage.feed_release[(feed, ps)] }} {% endif %}
{% if permitted(perms.DEPLOY) %} {% if ps in unmanageable %} Manage {% else %} {# No role="button": it navigates, so it is a link. Claiming otherwise promises a Space key an anchor does not honour. #} Manage {% endif %} {% endif %}
{% endblock -%} {% block tail %} {{ super() }}
{% endblock %}