Skip to content
Snippets Groups Projects
Commit dae8186e authored by Benjamin Hättasch's avatar Benjamin Hättasch
Browse files

Introduce view for bulk deletion of AK orga messages

parent 2f7a9b0d
No related branches found
No related tags found
No related merge requests found
Pipeline #7089 passed
......@@ -11,7 +11,7 @@ from simple_history.admin import SimpleHistoryAdmin
from AKModel.availability.models import Availability
from AKModel.models import Event, AKOwner, AKCategory, AKTrack, AKTag, AKRequirement, AK, AKSlot, Room, AKOrgaMessage
from AKModel.views import EventStatusView, AKCSVExportView, AKWikiExportView
from AKModel.views import EventStatusView, AKCSVExportView, AKWikiExportView, AKMessageDeleteView
@admin.register(Event)
......@@ -28,6 +28,8 @@ class EventAdmin(admin.ModelAdmin):
path('<slug:slug>/status/', self.admin_site.admin_view(EventStatusView.as_view()), name="event_status"),
path('<slug:event_slug>/ak-csv-export/', self.admin_site.admin_view(AKCSVExportView.as_view()), name="ak_csv_export"),
path('<slug:event_slug>/ak-wiki-export/', self.admin_site.admin_view(AKWikiExportView.as_view()), name="ak_wiki_export"),
path('<slug:slug>/delete-orga-messages/', self.admin_site.admin_view(AKMessageDeleteView.as_view()),
name="ak_delete_orga_messages"),
]
return custom_urls + urls
......
......@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-29 22:27+0000\n"
"POT-Creation-Date: 2020-09-29 23:27+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -11,24 +11,24 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: AKModel/admin.py:36 AKModel/admin.py:37
#: AKModel/admin.py:38 AKModel/admin.py:39
#: AKModel/templates/admin/AKModel/status.html:7
msgid "Status"
msgstr "Status"
#: AKModel/admin.py:115
#: AKModel/admin.py:117
msgid "Wish"
msgstr "AK-Wunsch"
#: AKModel/admin.py:121
#: AKModel/admin.py:123
msgid "Is wish"
msgstr "Ist ein Wunsch"
#: AKModel/admin.py:122
#: AKModel/admin.py:124
msgid "Is not a wish"
msgstr "Ist kein Wunsch"
#: AKModel/admin.py:149
#: AKModel/admin.py:151
msgid "Export to wiki syntax"
msgstr "In Wiki-Syntax exportieren"
......@@ -568,6 +568,32 @@ msgstr ""
msgid "Logout"
msgstr "Ausloggen"
#: AKModel/templates/admin/AKModel/message_delete.html:7
msgid "Delete Orga-Messages"
msgstr "Organachrichten löschen"
#: AKModel/templates/admin/AKModel/message_delete.html:10
msgid "Delete AK Orga Messages"
msgstr "AK-Organachrichten löschen"
#: AKModel/templates/admin/AKModel/message_delete.html:11
#, fuzzy, python-format
#| msgid "Are you sure you want to delete all orga messages for "
msgid ""
"Are you sure you want to delete all orga messages for %(event)s? This will "
"permanently delete %(message_count)s message(s):"
msgstr ""
"Sollen wirklich alle Organachrichten für %(event)s gelöscht werden? Dadurch "
"werden %(message_count)s Nachricht(en) dauerhaft gelöscht:"
#: AKModel/templates/admin/AKModel/message_delete.html:17
msgid "Delete"
msgstr "Löschen"
#: AKModel/templates/admin/AKModel/message_delete.html:21
msgid "Cancel"
msgstr "Abbrechen"
#: AKModel/templates/admin/AKModel/status.html:16
#, fuzzy
#| msgid "AK Categories"
......@@ -624,21 +650,35 @@ msgstr "Anforderungen hinzufügen"
msgid "Messages"
msgstr "Nachrichten"
#: AKModel/templates/admin/AKModel/status.html:99
msgid "Delete all messages"
msgstr "Alle Nachrichten löschen"
#: AKModel/templates/admin/ak_index.html:7
msgid "Active Events"
msgstr "Aktive Events"
#: AKModel/views.py:129
#: AKModel/views.py:130
msgid "Event Status"
msgstr "Eventstatus"
#: AKModel/views.py:143
#: AKModel/views.py:144
msgid "AK CSV Export"
msgstr "AK CSV Export"
#: AKModel/views.py:157
#: AKModel/views.py:158
msgid "AK Wiki Export"
msgstr "AK Wiki Export"
#: AKModel/views.py:178
msgid "AK Orga Messages successfully deleted"
msgstr "AK-Organachrichten erfolgreich gelöscht"
#~ msgid "Confirm"
#~ msgstr "Bestätigen"
#~ msgid "messages will be permanently deleted:"
#~ msgstr "Nachrichten werden dauerhaft gelöscht:"
#~ msgid "Notes to organizers"
#~ msgstr "Notizen an die Organisator*innen"
{% extends "admin_base.html" %}
{% load tags_AKModel %}
{% load i18n %}
{% load fontawesome_5 %}
{% block title %}{{event}}: {% trans "Delete Orga-Messages" %}{% endblock %}
{% block content %}
<h2>{% trans "Delete AK Orga Messages" %}</h2>
<p>{% blocktrans with message_count=ak_messages.count %}Are you sure you want to delete all orga messages for {{ event }}? This will permanently delete {{ message_count }} message(s):{% endblocktrans %}</p>
{% include "admin/AKModel/render_ak_messages.html" %}
<form method="post">{% csrf_token %}
<button type="submit" class="save btn btn-danger float-right" value="Confirm">
{% fa5_icon "check" 'fas' %} {% trans "Delete" %}
</button>
<a href="{% url 'admin:event_status' slug=event.slug %}" class="btn btn-info">
{% fa5_icon "times" 'fas' %} {% trans "Cancel" %}
</a>
</form>
{% endblock %}
<table class="table table-striped">
{% for message in ak_messages %}
<tr><td>
<span class="text-secondary float-right">
{{ message.timestamp|date:"Y-m-d H:i:s" }}
</span>
<h5><a href="{% url 'submit:ak_detail' event_slug=message.ak.event.slug pk=message.ak.pk %}">{{ message.ak }}</a></h5>
<p>{{ message.text }}</p>
</td></tr>
{% endfor %}
</table>
......@@ -95,17 +95,8 @@
</div>
<div class="col-md-4">
<h3 class="block-header">{% trans "Messages" %}</h3>
<table class="table table-striped">
{% for message in ak_messages %}
<tr><td>
<span class="text-secondary float-right">
{{ message.timestamp|date:"Y-m-d H:i:s" }}
</span>
<h5><a href="{% url 'submit:ak_detail' event_slug=message.ak.event.slug pk=message.ak.pk %}">{{ message.ak }}</a></h5>
<p>{{ message.text }}</p>
</td></tr>
{% endfor %}
</table>
{% include "admin/AKModel/render_ak_messages.html" %}
<a class="btn btn-danger" href="{% url 'admin:ak_delete_orga_messages' slug=event.slug %}">{% trans "Delete all messages" %}</a>
</div>
</div>
{% endtimezone %}
......
from django.contrib import admin
from django.contrib import admin, messages
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404
from django.urls import reverse_lazy
from django.utils.translation import gettext_lazy as _
from django.views.generic import TemplateView, DetailView, ListView
from django.views.generic import TemplateView, DetailView, ListView, DeleteView
from rest_framework import viewsets, permissions, mixins
from AKModel.models import Event, AK, AKSlot, Room, AKTrack, AKCategory, AKOwner, AKOrgaMessage
......@@ -158,3 +159,21 @@ class AKWikiExportView(AdminViewMixin, FilterByEventSlugMixin, ListView):
def get_queryset(self):
return super().get_queryset().order_by("category")
class AKMessageDeleteView(AdminViewMixin, DeleteView):
model = Event
template_name = "admin/AKModel/message_delete.html"
def get_orga_messages_for_event(self, event):
return AKOrgaMessage.objects.filter(ak__event=event)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["ak_messages"] = self.get_orga_messages_for_event(self.get_object())
return context
def post(self, request, *args, **kwargs):
self.get_orga_messages_for_event(self.get_object()).delete()
messages.add_message(self.request, messages.SUCCESS, _("AK Orga Messages successfully deleted"))
return HttpResponseRedirect(reverse_lazy('admin:event_status', kwargs={'slug': self.get_object().slug}))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment