]> git.ipfire.org Git - pbs.git/commitdiff
repos: Show size
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 24 Jun 2022 14:56:55 +0000 (14:56 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 24 Jun 2022 14:56:55 +0000 (14:56 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/repository.py
src/templates/repos/show.html

index f4624b03a672a966cb017db39605c35706101ac9..2827903178ea731f33424b5fa2eb772c45eecc2e 100644 (file)
@@ -437,6 +437,39 @@ class Repository(base.DataObject):
 
                return False
 
+       # Stats
+
+       @lazy_property
+       def size(self):
+               res = self.db.query("""
+                       SELECT
+                               packages.arch AS arch,
+                               SUM(packages.filesize) AS size
+                       FROM
+                               repositories_builds
+                       LEFT JOIN
+                               builds ON repositories_builds.build_id = builds.id
+                       LEFT JOIN
+                               jobs ON builds.id = jobs.build_id
+                       LEFT JOIN
+                               jobs_packages ON jobs.id = jobs_packages.job_id
+                       LEFT JOIN
+                               packages ON jobs_packages.pkg_id = packages.id
+                       WHERE
+                               builds.deleted IS FALSE
+                       AND
+                               jobs.deleted IS FALSE
+                       AND
+                               packages.deleted IS FALSE
+                       AND
+                               repositories_builds.repo_id = %s
+                       GROUP BY
+                               packages.arch""",
+                       self.id,
+               )
+
+               return { row.arch : row.size for row in res if row.arch in self.distro.arches }
+
        def updated(self):
                self.db.execute("UPDATE repositories SET last_update = NOW() \
                        WHERE id = %s", self.id)
index ae0837736940d4b94484c429807d5f11c4eab42d..9644997cd70e814cce334789097ee1fb1b6ef99f 100644 (file)
                        {% module Text(repo.description) %}
                </div>
        {% end %}
+
+       <div class="callout">
+               <h5>{{ _("Statistics") }}</h5>
+
+               <div class="grid-x">
+                       <div class="cell">
+                               {{ _("Size") }}
+
+                               <table>
+                                       <tbody>
+                                               {% for arch, size in sorted(repo.size.items()) %}
+                                                       <tr>
+                                                               <th scope="row">
+                                                                       {{ arch }}
+                                                               </th>
+
+                                                               <td class="text-right">
+                                                                       {{ format_size(size) }}
+                                                               </td>
+                                                       </tr>
+                                               {% end %}
+                                       </tbody>
+                               </table>
+                       </div>
+               </div>
+       </div>
 {% end block %}