{% extends 'base.html' %} {% set active_section = 'vulnerabilities' %} {% macro table_header_cell(column_id, column_name, is_sortable, is_sorted, is_descending) %}
{{ column_name }}
{% if is_sortable %} {% endif %}
{% endmacro %} {% block content %}

Vulnerability Library

{{ table_header_cell('id', 'ID', False, False, False) }} {{ table_header_cell('package', 'Packages', False, False, False) }} {{ table_header_cell('summary', 'Summary', False, False, False) }} {{ table_header_cell('affected-versions', 'Affected versions', False, False, False) }} {{ table_header_cell('last-modified', 'Last modified', True, True, True) }} {{ table_header_cell('fixed', 'Fix', False, False, False) }}
{% for vulnerability in vulnerabilities %}
{{ vulnerability.id }}
    {% for affected in vulnerability.affected %}
  • {{ affected.package.ecosystem }}/{{ affected.package.name }}
  • {% endfor %}
{{ vulnerability.summary }}
    {% for version in vulnerability.affected | map(attribute='versions', default=[]) | sum(start=[]) %} {% if loop.index < 8 %}
  • {{ version }}
  • {% elif loop.index == 8 %}
  • ...
  • {% endif %} {% else %}
  • See details.
  • {% endfor %}
{{ vulnerability.modified }} {% if vulnerability.affected | map(attribute='ranges', default=[]) | sum(start=[]) | map(attribute='events', default='') | sum(start=[]) | selectattr('fixed', 'defined') | first %} Fix available {% else %} No fix available {% endif %}
{% endfor %}
{% endblock %}