dist_templates_repos_DATA = \
src/templates/repos/create-custom.html \
src/templates/repos/builds.html \
+ src/templates/repos/delete.html \
src/templates/repos/edit.html \
src/templates/repos/show.html
--- /dev/null
+{% extends "../modal.html" %}
+
+{% block title %}{{ _("Delete Repository") }} - {{ repo }}{% end block %}
+
+{% block breadcrumbs %}
+ <nav class="breadcrumb" aria-label="breadcrumbs">
+ <ul>
+ {% if repo.owner %}
+ <li>
+ <a href="/users">{{ _("Users") }}</a>
+ </li>
+ <li>
+ <a href="/users/{{ repo.owner.name }}">{{ repo.owner }}</a>
+ </li>
+ <li>
+ <a href="#" disabled>{{ _("Distributions") }}</a>
+ </li>
+ <li>
+ <a href="#" disabled>{{ distro }}</a>
+ </li>
+ {% else %}
+ <li>
+ <a href="/distros">{{ _("Distributions") }}</a>
+ </li>
+ <li>
+ <a href="/distros/{{ repo.distro.slug }}">{{ repo.distro }}</a>
+ </li>
+ {% end %}
+ <li>
+ <a href="#" disabled>{{ _("Repositories") }}</a>
+ </li>
+ <li>
+ <a href="{{ repo.url }}">{{ repo }}</a>
+ </li>
+ <li class="is-active">
+ <a href="#" aria-current="page">{{ _("Delete") }}</a>
+ </li>
+ </ul>
+ </nav>
+{% end block %}
+
+{% block modal_title %}
+ <h4 class="title is-4">{{ _("Delete Repository") }}</h4>
+ <h6 class="subtitle is-6">{{ repo }}</h6>
+{% end block %}
+
+{% block modal %}
+ <form method="POST" action="">
+ {% raw xsrf_form_html() %}
+
+ <div class="content">
+ <p>
+ {{ _("Are you sure you want to delete %s?") % repo }}
+ </p>
+ </div>
+
+ {# Submit! #}
+ <div class="field">
+ <button type="submit" class="button is-danger is-fullwidth">
+ {{ _("Delete") }}
+ </button>
+ </div>
+ </form>
+{% end block %}
<a class="button is-warning" href="{{ repo.url }}/edit">
{{ _("Edit") }}
</a>
+
+ <a class="button is-danger" href="{{ repo.url }}/delete">
+ {{ _("Delete") }}
+ </a>
{% end %}
</div>
</div>
repos.ConfigHandler),
(r"/users/(?P<user_slug>\w+)/repos/(?P<distro_slug>[A-Za-z0-9\-\.]+)/(?P<repo_slug>[A-Za-z0-9\-]+)/builds",
repos.BuildsHandler),
+ (r"/users/(?P<user_slug>\w+)/repos/(?P<distro_slug>[A-Za-z0-9\-\.]+)/(?P<repo_slug>[A-Za-z0-9\-]+)/delete",
+ repos.DeleteHandler),
(r"/users/(?P<user_slug>\w+)/repos/(?P<distro_slug>[A-Za-z0-9\-\.]+)/(?P<repo_slug>[A-Za-z0-9\-]+)/edit",
repos.EditHandler),
(r"/users/(?P<user_slug>\w+)/repos/(?P<distro_slug>[A-Za-z0-9\-\.]+)/(?P<repo_slug>[A-Za-z0-9\-]+)/mirrorlist",
repos.ConfigHandler),
(r"/distros/(?P<distro_slug>[A-Za-z0-9\-\.]+)/repos/(?P<repo_slug>[A-Za-z0-9\-]+)/builds",
repos.BuildsHandler),
+ (r"/distros/(?P<distro_slug>[A-Za-z0-9\-\.]+)/repos/(?P<repo_slug>[A-Za-z0-9\-]+)/delete",
+ repos.DeleteHandler),
(r"/distros/(?P<distro_slug>[A-Za-z0-9\-\.]+)/repos/(?P<repo_slug>[A-Za-z0-9\-]+)/edit",
repos.EditHandler),
(r"/distros/(?P<distro_slug>[A-Za-z0-9\-\.]+)/repos/(?P<repo_slug>[A-Za-z0-9\-]+)/mirrorlist",
self.redirect(repo.url)
+class DeleteHandler(BaseHandler):
+ @tornado.web.authenticated
+ def get(self, **kwargs):
+ # Fetch the repository
+ repo = self._get_repo(**kwargs)
+
+ # Check for permissions
+ if not repo.has_perm(self.current_user):
+ raise tornado.web.HTTPError(403)
+
+ self.render("repos/delete.html", repo=repo)
+
+ @tornado.web.authenticated
+ async def post(self, **kwargs):
+ # Fetch the repository
+ repo = self._get_repo(**kwargs)
+
+ # Check for permissions
+ if not repo.has_perm(self.current_user):
+ raise tornado.web.HTTPError(403)
+
+ with self.db.transaction():
+ await repo.delete(user=self.current_user)
+
+ # XXX redirect back to the user pager
+ self.redirect("/distros/%s" % repo.distro.slug)
+
+
class MirrorlistHandler(BaseHandler):
def get(self, **kwargs):
# Fetch the repository