# 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
-{% extends "../../modal.html" %}
+{% extends "modal.html" %}
-{% block title %}{{ release }} - {{ _("Delete") }}{% end block %}
+{% block title %}{{ release }} - {{ _("Delete") }}{% endblock %}
{% block breadcrumbs %}
<nav class="breadcrumb" aria-label="breadcrumbs">
</li>
</ul>
</nav>
-{% end block %}
+{% endblock %}
{% block modal_title %}
<h4 class="title is-4">{{ _("Delete Release") }}</h4>
<h6 class="subtitle is-6">{{ release }}</h6>
-{% end block %}
+{% endblock %}
{% block modal %}
<form method="POST" action="">
- {% raw xsrf_form_html() %}
+ {{ xsrf_form_html() | safe }}
<div class="content">
<p>
</button>
</div>
</form>
-{% end block %}
+{% endblock %}
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)
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)
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