From: Michael Tremer Date: Tue, 11 Feb 2025 10:29:14 +0000 (+0000) Subject: releases: Fix deleting releases and their images X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3739beeae2e75e13d8dbaa71ed05fe09f90f4f55;p=pbs.git releases: Fix deleting releases and their images Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/releases.py b/src/buildservice/releases.py index df070299..d7643322 100644 --- a/src/buildservice/releases.py +++ b/src/buildservice/releases.py @@ -124,15 +124,15 @@ class Release(database.Base, database.BackendMixin, database.SoftDeleteMixin): # Delete - async def delete(self, user=None): + async def delete(self, *args, **kwargs): """ Deletes this release """ - self._set_attribute_now("deleted_at") - if user: - self._set_attribute("deleted_by", user) + await super().delete(*args, **kwargs) - # XXX TODO delete images + # Delete all images, too + for image in self.images: + await image.delete(*args, **kwargs) # Images diff --git a/src/templates/distros/releases/delete.html b/src/templates/distros/releases/delete.html index 1e37cc60..6884e205 100644 --- a/src/templates/distros/releases/delete.html +++ b/src/templates/distros/releases/delete.html @@ -1,6 +1,6 @@ -{% extends "../../modal.html" %} +{% extends "modal.html" %} -{% block title %}{{ release }} - {{ _("Delete") }}{% end block %} +{% block title %}{{ release }} - {{ _("Delete") }}{% endblock %} {% block breadcrumbs %} -{% end block %} +{% endblock %} {% block modal_title %}

{{ _("Delete Release") }}

{{ release }}
-{% end block %} +{% endblock %} {% block modal %}
- {% raw xsrf_form_html() %} + {{ xsrf_form_html() | safe }}

@@ -50,4 +50,4 @@

-{% end block %} +{% endblock %} diff --git a/src/web/distributions.py b/src/web/distributions.py index 694a1a07..08d15011 100644 --- a/src/web/distributions.py +++ b/src/web/distributions.py @@ -172,13 +172,13 @@ class ReleasesEditHandler(base.BaseHandler): class ReleasesDeleteHandler(base.BaseHandler): @base.authenticated - def get(self, distro_slug, release_slug): - distro = self.backend.distros.get_by_slug(distro_slug) + async def get(self, distro_slug, release_slug): + distro = await self.backend.distros.get_by_slug(distro_slug) if not distro: raise tornado.web.HTTPError(404, "Could not find distro: %s" % distro_slug) # Fetch the release - release = distro.get_release(release_slug) + release = await distro.get_release(release_slug) if not release: raise tornado.web.HTTPError(404, "Could not find release %s" % release_slug) @@ -186,16 +186,16 @@ class ReleasesDeleteHandler(base.BaseHandler): if not release.has_perm(self.current_user): raise tornado.web.HTTPError(403) - self.render("distros/releases/delete.html", release=release, distro=distro) + await self.render("distros/releases/delete.html", release=release, distro=distro) @base.authenticated async def post(self, distro_slug, release_slug): - distro = self.backend.distros.get_by_slug(distro_slug) + distro = await self.backend.distros.get_by_slug(distro_slug) if not distro: raise tornado.web.HTTPError(404, "Could not find distro: %s" % distro_slug) # Fetch the release - release = distro.get_release(release_slug) + release = await distro.get_release(release_slug) if not release: raise tornado.web.HTTPError(404, "Could not find release %s" % release_slug) @@ -203,7 +203,8 @@ class ReleasesDeleteHandler(base.BaseHandler): if not release.has_perm(self.current_user): raise tornado.web.HTTPError(403) - with self.db.transaction(): + # Delete the release + async with await self.db.transaction(): await release.delete(self.current_user) # Redirect back to all releases