Skip to content
Snippets Groups Projects
Commit f0fc531a authored by drscream's avatar drscream :eyeglasses:
Browse files

Support delete of planned assemblies


Allow the user to delete an assembly when the state is planned.

Signed-off-by: default avatarThomas Merkel <drscream@frubar.net>
parent 864bf6bc
No related branches found
No related tags found
No related merge requests found
{% extends 'backoffice/base.html' %}
{% load bootstrap4 %}
{% load humanize %}
{% load i18n %}
{% block content %}
<h1>{% trans 'Assembly' %} {{ object.id }}</h1>
<div class="card mb-3">
<div class="card-header">Assembly <code>{{ object.assembly_id }}</code></div>
<div class="card-body">
<p>Slug: <strong>{{ object.slug }}</strong></p>
<p>Name: <strong>{{ object.name }}</strong></p>
</div>
</div>
<div class="card mb-3 border-danger">
<div class="card-header bg-danger text-white">CONFIRM</div>
<div class="card-body">
<form method="POST" action="{% url 'backoffice:assembly-delete' pk=object.id %}">
{% csrf_token %}
<button type="submit" class="btn btn-danger">yes, nuke it</button>
<a href="{% url 'backoffice:assembly' pk=object.id %}" class="btn btn-outline-primary">no, back to safety</a>
</form>
</div>
</div>
{% endblock %}
......@@ -21,6 +21,7 @@
<tr>
<th>{% trans "assembly_name" %}</th>
<th>{% trans "assembly_state" %}</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
......@@ -31,9 +32,14 @@
{{ assembly.get_state_assembly_display }}
{% if assembly.state_assembly == 'planned' %}<span class="text-danger font-weight-bold" title="{% trans "Assembly__state_assembly-planned__hint" %}"></span>{% endif %}
</td>
<td>
{% if assembly.state_assembly == 'planned' %}
<a class="btn btn-sm btn-danger" href="{% url 'backoffice:assembly-delete' pk=assembly.pk %}">{% trans 'Delete' %}</a>
{% endif %}
</td>
</tr>
{% empty %}
<tr><td colspan="2">:-(</td></tr>
<tr><td colspan="3">:-(</td></tr>
{% endfor %}
</tbody>
</table>
......
......@@ -62,6 +62,7 @@ urlpatterns = [
path('assembly/<uuid:pk>/members/add', assemblies.MembersAddView.as_view(), name='assembly-members-add'),
path('assembly/<uuid:pk>/members/edit/<str:uname>', assemblies.MembersEditView.as_view(), name='assembly-members-edit'),
path('assembly/<uuid:pk>/vouchers', assemblies.VouchersView.as_view(), name='assembly-vouchers'),
path('assembly/<uuid:pk>/delete', assemblies.AssemblyDeleteView.as_view(), name='assembly-delete'),
path('assembly/<uuid:assembly>/auth', assemblies.AuthView.as_view(), name='assembly-auth'),
path('assembly/<uuid:assembly>/auth/app/<int:pk>', assemblies.AuthAppView.as_view(), name='assembly-auth-app'),
......
......@@ -487,6 +487,19 @@ class AssemblyView(AssemblyMixin, TemplateView):
require_conference = True
template_name = 'backoffice/assembly_detail.html'
class AssemblyDeleteView(AssemblyMixin, DeleteView):
assembly_management = True
model = Assembly
template_name = 'backoffice/assembly-confirm_delete.html'
def get_object(self, *args, **kwargs):
obj = super().get_object(*args, **kwargs)
if obj.state_assembly != Assembly.State.PLANNED:
raise PermissionDenied()
return obj
def get_success_url(self, *args, **kwargs):
return reverse('backoffice:index')
class AssemblyRoomView(AssemblyMixin, UpdateView):
model = Room
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment