templates_eventsdir = $(templatesdir)/events
+dist_templates_images_DATA = \
+ src/templates/images/macros.html
+
+templates_imagesdir = $(templatesdir)/images
+
dist_templates_jobs_DATA = \
src/templates/jobs/abort.html \
src/templates/jobs/index.html \
class Image(database.Base, database.BackendMixin, database.SoftDeleteMixin):
__tablename__ = "images"
+ # Sorting
+
+ def __lt__(self, other):
+ if isinstance(other, self.__class__):
+ return self.arch < other.arch
+
+ return NotImplemented
+
# ID
id = Column(Integer, primary_key=True)
path = Column(Text, nullable=False)
+ # Link
+
+ @property
+ def link(self):
+ """
+ Returns a link where clients can download this image from
+ """
+ return self.backend.path_to_url(self.path, mirrored=self.release.is_mirrored())
+
# Size
size = Column(BigInteger, nullable=False)
{% extends "base.html" %}
{% from "macros.html" import Text with context %}
+{% from "images/macros.html" import ImageList with context %}
{% block title %}{{ distro }} - {{ release }}{% endblock %}
</div>
</section>
{% endif %}
+
+ {# Images #}
+ <section class="section">
+ <div class="container">
+ {{ ImageList(release.images) }}
+ </div>
+ </section>
{% endblock %}
--- /dev/null
+{% macro ImageList(images) %}
+ {% for type, images in images | groupby("type") %}
+ <div class="block">
+ {# Headline #}
+ <h5 class="title is-5">
+ {% if type == "iso" %}
+ {{ _("ISO Image") }}
+ {% elif type == "oci" %}
+ {{ _("Container Image") }}
+ {% else %}
+ <span class="has-text-light">
+ {{ _("Unknown Image Type") }}
+ </span>
+ {% endif %}
+ </h5>
+
+ <div class="level">
+ <div class="level-left">
+ {% for image in images | sort %}
+ <div class="level-item">
+ <nav class="level">
+ <div class="level-item">
+ <div class="tags has-addons">
+ <span class="tag is-{{ image.arch }}">
+ {{ image.arch }}
+ </span>
+
+ <span class="tag is-dark">
+ {{ image.size | filesizeformat(binary=True) }}
+ </span>
+ </div>
+ </div>
+
+ {# Download Link #}
+ <div class="level-item">
+ <small>
+ <a href="{{ image.link }}">
+ <span class="icon-text">
+ <span class="icon">
+ <i class="fa-solid fa-download"></i>
+ </span>
+
+ <span>
+ {{ _("Download") }}
+ </span>
+ </span>
+ </a>
+ </small>
+ </div>
+ </nav>
+ </div>
+ {% endfor %}
+ </div>
+ </div>
+ </div>
+ {% endfor %}
+{% endmacro %}