Skip to content
Snippets Groups Projects
Commit 3d5f5de7 authored by Benjamin Hättasch's avatar Benjamin Hättasch Committed by Nadja Geisler
Browse files

Introduce view for bulk deletion of AK orga messages

parent fcb2ef1f
Branches
No related tags found
No related merge requests found
...@@ -11,7 +11,7 @@ from simple_history.admin import SimpleHistoryAdmin ...@@ -11,7 +11,7 @@ from simple_history.admin import SimpleHistoryAdmin
from AKModel.availability.models import Availability from AKModel.availability.models import Availability
from AKModel.models import Event, AKOwner, AKCategory, AKTrack, AKTag, AKRequirement, AK, AKSlot, Room, AKOrgaMessage 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) @admin.register(Event)
...@@ -28,6 +28,8 @@ class EventAdmin(admin.ModelAdmin): ...@@ -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: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-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: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 return custom_urls + urls
......
...@@ -2,7 +2,7 @@ msgid "" ...@@ -2,7 +2,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
...@@ -11,24 +11,24 @@ msgstr "" ...@@ -11,24 +11,24 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\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 #: AKModel/templates/admin/AKModel/status.html:7
msgid "Status" msgid "Status"
msgstr "Status" msgstr "Status"
#: AKModel/admin.py:115 #: AKModel/admin.py:117
msgid "Wish" msgid "Wish"
msgstr "AK-Wunsch" msgstr "AK-Wunsch"
#: AKModel/admin.py:121 #: AKModel/admin.py:123
msgid "Is wish" msgid "Is wish"
msgstr "Ist ein Wunsch" msgstr "Ist ein Wunsch"
#: AKModel/admin.py:122 #: AKModel/admin.py:124
msgid "Is not a wish" msgid "Is not a wish"
msgstr "Ist kein Wunsch" msgstr "Ist kein Wunsch"
#: AKModel/admin.py:149 #: AKModel/admin.py:151
msgid "Export to wiki syntax" msgid "Export to wiki syntax"
msgstr "In Wiki-Syntax exportieren" msgstr "In Wiki-Syntax exportieren"
...@@ -568,6 +568,32 @@ msgstr "" ...@@ -568,6 +568,32 @@ msgstr ""
msgid "Logout" msgid "Logout"
msgstr "Ausloggen" 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 #: AKModel/templates/admin/AKModel/status.html:16
#, fuzzy #, fuzzy
#| msgid "AK Categories" #| msgid "AK Categories"
...@@ -624,21 +650,35 @@ msgstr "Anforderungen hinzufügen" ...@@ -624,21 +650,35 @@ msgstr "Anforderungen hinzufügen"
msgid "Messages" msgid "Messages"
msgstr "Nachrichten" 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 #: AKModel/templates/admin/ak_index.html:7
msgid "Active Events" msgid "Active Events"
msgstr "Aktive Events" msgstr "Aktive Events"
#: AKModel/views.py:129 #: AKModel/views.py:130
msgid "Event Status" msgid "Event Status"
msgstr "Eventstatus" msgstr "Eventstatus"
#: AKModel/views.py:143 #: AKModel/views.py:144
msgid "AK CSV Export" msgid "AK CSV Export"
msgstr "AK CSV Export" msgstr "AK CSV Export"
#: AKModel/views.py:157 #: AKModel/views.py:158
msgid "AK Wiki Export" msgid "AK Wiki Export"
msgstr "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" #~ msgid "Notes to organizers"
#~ msgstr "Notizen an die Organisator*innen" #~ 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 @@ ...@@ -95,17 +95,8 @@
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<h3 class="block-header">{% trans "Messages" %}</h3> <h3 class="block-header">{% trans "Messages" %}</h3>
<table class="table table-striped"> {% include "admin/AKModel/render_ak_messages.html" %}
{% for message in ak_messages %} <a class="btn btn-danger" href="{% url 'admin:ak_delete_orga_messages' slug=event.slug %}">{% trans "Delete all messages" %}</a>
<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>
</div> </div>
</div> </div>
{% endtimezone %} {% 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.shortcuts import get_object_or_404
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.utils.translation import gettext_lazy as _ 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 rest_framework import viewsets, permissions, mixins
from AKModel.models import Event, AK, AKSlot, Room, AKTrack, AKCategory, AKOwner, AKOrgaMessage from AKModel.models import Event, AK, AKSlot, Room, AKTrack, AKCategory, AKOwner, AKOrgaMessage
...@@ -158,3 +159,21 @@ class AKWikiExportView(AdminViewMixin, FilterByEventSlugMixin, ListView): ...@@ -158,3 +159,21 @@ class AKWikiExportView(AdminViewMixin, FilterByEventSlugMixin, ListView):
def get_queryset(self): def get_queryset(self):
return super().get_queryset().order_by("category") 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.
Please register or to comment