]> git.ipfire.org Git - pbs.git/commitdiff
repos: Fix rendering page
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 22 Jan 2025 15:23:52 +0000 (15:23 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 22 Jan 2025 15:23:52 +0000 (15:23 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/repos.py
src/templates/repos/show.html

index 7001d1460c8b70f4da099275d5c0634bb3d6a6f9..8e1b7c627c1fee007a3e07cddf6134eefef280d7 100644 (file)
@@ -544,25 +544,29 @@ class Repo(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
                return await self.db.fetch_one(stmt)
 
-       @lazy_property
-       def total_builds(self):
-               res = self.db.get("""
-                       SELECT
-                               COUNT(*) AS count
-                       FROM
-                               repository_builds
-                       LEFT JOIN
-                               builds ON repository_builds.build_id = builds.id
-                       WHERE
-                               builds.deleted_at IS NULL
-                       AND
-                               repository_builds.repo_id = %s
-                       AND
-                               repository_builds.removed_at IS NULL
-                       """, self.id,
+       async def get_total_builds(self):
+               """
+                       Return the total number of builds in this repository
+               """
+               stmt = (
+                       sqlalchemy
+                       .select(
+                               sqlalchemy.func.count().label("total_builds"),
+                       )
+                       .select_from(RepoBuild)
+                       .join(
+                               builds.Build,
+                               builds.Build.id == RepoBuild.build_id,
+                       )
+                       .where(
+                               builds.Build.deleted_at == None,
+
+                               RepoBuild.repo == self,
+                               RepoBuild.removed_at == None,
+                       )
                )
 
-               return res.count or 0
+               return await self.db.select_one(stmt, "total_builds")
 
        async def get_packages(self, arch):
                if arch == "src":
index 9365009c7c326c52c0abb0aa79dcac939883f28c..27ce9a1bfb682d98216480d7812ab17a8a2f0d48 100644 (file)
 
                                <div class="block">
                                        <nav class="level">
+                                               {# Total Builds #}
+                                               {% set total_builds = repo.get_total_builds() %}
+
                                                <div class="level-item has-text-centered">
                                                        <div>
                                                                <p class="heading">
                                                                        {{ _("Total Builds") }}
                                                                </p>
                                                                <p class="title">
-                                                                       {{ repo.total_builds }}
+                                                                       {{ total_builds }}
                                                                </p>
                                                        </div>
                                                </div>
 
+                                               {# Total Size #}
+                                               {% set total_size = repo.get_total_size() %}
+
                                                <div class="level-item has-text-centered">
                                                        <div>
                                                                <p class="heading">
                                                                        {{ _("Total Size") }}
                                                                </p>
                                                                <p class="title">
-                                                                       {{ repo.get_total_size() | filesizeformat(binary=True) }}
+                                                                       {{ total_size | filesizeformat(binary=True) }}
                                                                </p>
                                                        </div>
                                                </div>