From 57814e2224a6b2e9f60d628d4d7c773b0014e46e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?=
 <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de>
Date: Tue, 29 Sep 2020 00:14:45 +0200
Subject: [PATCH] Introduce confident AK messages to organizers

Add model
Add to admin interface
Add and link create view in frontend
Add translations
---
 AKModel/admin.py                              |  9 +-
 AKModel/locale/de_DE/LC_MESSAGES/django.po    | 27 +++++-
 AKModel/migrations/0038_akorgamessage.py      | 28 ++++++
 AKModel/models.py                             | 14 +++
 AKSubmission/forms.py                         | 12 ++-
 .../locale/de_DE/LC_MESSAGES/django.po        | 86 ++++++++++++-------
 .../templates/AKSubmission/ak_detail.html     |  3 +
 .../templates/AKSubmission/akmessage_add.html | 39 +++++++++
 AKSubmission/urls.py                          |  1 +
 AKSubmission/views.py                         | 25 +++++-
 10 files changed, 206 insertions(+), 38 deletions(-)
 create mode 100644 AKModel/migrations/0038_akorgamessage.py
 create mode 100644 AKSubmission/templates/AKSubmission/akmessage_add.html

diff --git a/AKModel/admin.py b/AKModel/admin.py
index 64c56c1a..1d631ed7 100644
--- a/AKModel/admin.py
+++ b/AKModel/admin.py
@@ -10,7 +10,7 @@ from django.utils.translation import gettext_lazy as _
 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
+from AKModel.models import Event, AKOwner, AKCategory, AKTrack, AKTag, AKRequirement, AK, AKSlot, Room, AKOrgaMessage
 from AKModel.views import EventStatusView, AKCSVExportView
 
 
@@ -218,3 +218,10 @@ class AvailabilityAdmin(admin.ModelAdmin):
         else:
             timezone.activate("UTC")
         return super().get_form(request, obj, change, **kwargs)
+
+
+@admin.register(AKOrgaMessage)
+class AKOrgaMessageAdmin(admin.ModelAdmin):
+    list_display = ['timestamp', 'ak', 'text']
+    list_filter = ['ak__event']
+    readonly_fields = ['timestamp', 'ak', 'text']
diff --git a/AKModel/locale/de_DE/LC_MESSAGES/django.po b/AKModel/locale/de_DE/LC_MESSAGES/django.po
index 7d0434ae..3b9d98f3 100644
--- a/AKModel/locale/de_DE/LC_MESSAGES/django.po
+++ b/AKModel/locale/de_DE/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-07-12 16:17+0000\n"
+"POT-Creation-Date: 2020-09-28 22:17+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"
@@ -86,7 +86,7 @@ msgid "Room whose availability this is"
 msgstr "Raum dessen Verfügbarkeit hier abgebildet wird"
 
 #: AKModel/availability/models.py:65 AKModel/models.py:236
-#: AKModel/models.py:298
+#: AKModel/models.py:298 AKModel/models.py:348
 msgid "AK"
 msgstr "AK"
 
@@ -520,6 +520,29 @@ msgstr "AK Slot"
 msgid "Not scheduled yet"
 msgstr "Noch nicht geplant"
 
+#: AKModel/models.py:348
+#, fuzzy
+#| msgid "Track the AK belongs to"
+msgid "AK this message belongs to"
+msgstr "Track zu dem der AK gehört"
+
+#: AKModel/models.py:349
+msgid "Message text"
+msgstr "Nachrichtentext"
+
+#: AKModel/models.py:349
+msgid "Message to the organizers. This is not publicly visible."
+msgstr ""
+"Nachricht an die Organisator*innen. Diese ist nicht öffentlich sichtbar."
+
+#: AKModel/models.py:353
+msgid "AK Orga Message"
+msgstr "AK-Organachricht"
+
+#: AKModel/models.py:354
+msgid "AK Orga Messages"
+msgstr "AK-Organachrichten"
+
 #: AKModel/site.py:10
 msgid "Administration"
 msgstr "Verwaltung"
diff --git a/AKModel/migrations/0038_akorgamessage.py b/AKModel/migrations/0038_akorgamessage.py
new file mode 100644
index 00000000..2f4f5eb7
--- /dev/null
+++ b/AKModel/migrations/0038_akorgamessage.py
@@ -0,0 +1,28 @@
+# Generated by Django 3.0.6 on 2020-09-28 21:52
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('AKModel', '0037_event_public'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='AKOrgaMessage',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('text', models.TextField(help_text='Message to the organizers. This is not publicly visible.', verbose_name='Message text')),
+                ('timestamp', models.DateTimeField(auto_now_add=True)),
+                ('ak', models.ForeignKey(help_text='AK this message belongs to', on_delete=django.db.models.deletion.CASCADE, to='AKModel.AK', verbose_name='AK')),
+            ],
+            options={
+                'verbose_name': 'AK Orga Message',
+                'verbose_name_plural': 'AK Orga Messages',
+                'ordering': ['-timestamp'],
+            },
+        ),
+    ]
diff --git a/AKModel/models.py b/AKModel/models.py
index 70435185..130e5bba 100644
--- a/AKModel/models.py
+++ b/AKModel/models.py
@@ -342,3 +342,17 @@ class AKSlot(models.Model):
         :rtype: float
         """
         return (timezone.now() - self.updated).total_seconds()
+
+
+class AKOrgaMessage(models.Model):
+    ak = models.ForeignKey(to=AK, on_delete=models.CASCADE, verbose_name=_('AK'), help_text=_('AK this message belongs to'))
+    text = models.TextField(verbose_name=_("Message text"), help_text=_("Message to the organizers. This is not publicly visible."))
+    timestamp = models.DateTimeField(auto_now_add=True)
+
+    class Meta:
+        verbose_name = _('AK Orga Message')
+        verbose_name_plural = _('AK Orga Messages')
+        ordering = ['-timestamp']
+
+    def __str__(self):
+        return f'AK Orga Message for "{self.ak}" @ {self.timestamp}'
diff --git a/AKSubmission/forms.py b/AKSubmission/forms.py
index 2861adc4..e52cdbcd 100644
--- a/AKSubmission/forms.py
+++ b/AKSubmission/forms.py
@@ -6,7 +6,7 @@ from django.core.exceptions import ValidationError
 from django.utils.translation import ugettext_lazy as _
 
 from AKModel.availability.forms import AvailabilitiesFormMixin
-from AKModel.models import AK, AKOwner, AKCategory, AKRequirement, AKSlot
+from AKModel.models import AK, AKOwner, AKCategory, AKRequirement, AKSlot, AKOrgaMessage
 
 
 class AKForm(AvailabilitiesFormMixin, forms.ModelForm):
@@ -161,3 +161,13 @@ class AKDurationForm(forms.ModelForm):
             'ak': forms.HiddenInput,
             'event': forms.HiddenInput
         }
+
+
+class AKOrgaMessageForm(forms.ModelForm):
+    class Meta:
+        model = AKOrgaMessage
+        fields = ['ak', 'text']
+        widgets = {
+            'ak': forms.HiddenInput,
+            'text': forms.Textarea,
+        }
diff --git a/AKSubmission/locale/de_DE/LC_MESSAGES/django.po b/AKSubmission/locale/de_DE/LC_MESSAGES/django.po
index 187fde1d..1285a437 100644
--- a/AKSubmission/locale/de_DE/LC_MESSAGES/django.po
+++ b/AKSubmission/locale/de_DE/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-07-12 16:17+0000\n"
+"POT-Creation-Date: 2020-09-28 22:17+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"
@@ -44,6 +44,7 @@ msgstr ""
 #: AKSubmission/templates/AKSubmission/ak_overview.html:8
 #: AKSubmission/templates/AKSubmission/ak_overview.html:12
 #: AKSubmission/templates/AKSubmission/ak_overview.html:38
+#: AKSubmission/templates/AKSubmission/akmessage_add.html:7
 #: AKSubmission/templates/AKSubmission/akowner_create_update.html:7
 #: AKSubmission/templates/AKSubmission/akslot_add_update.html:7
 #: AKSubmission/templates/AKSubmission/akslot_delete.html:7
@@ -65,6 +66,7 @@ msgstr "AK"
 #: AKSubmission/templates/AKSubmission/ak_edit.html:13
 #: AKSubmission/templates/AKSubmission/ak_history.html:16
 #: AKSubmission/templates/AKSubmission/ak_overview.html:27
+#: AKSubmission/templates/AKSubmission/akmessage_add.html:12
 #: AKSubmission/templates/AKSubmission/akowner_create_update.html:12
 #: AKSubmission/templates/AKSubmission/akslot_add_update.html:12
 #: AKSubmission/templates/AKSubmission/akslot_delete.html:12
@@ -102,101 +104,105 @@ msgid "History"
 msgstr "Versionsgeschichte"
 
 #: AKSubmission/templates/AKSubmission/ak_detail.html:59
-#: AKSubmission/templates/AKSubmission/ak_detail.html:174
+msgid "Add confident message to organizers"
+msgstr ""
+
+#: AKSubmission/templates/AKSubmission/ak_detail.html:62
+#: AKSubmission/templates/AKSubmission/ak_detail.html:177
 #: AKSubmission/templates/AKSubmission/ak_edit.html:16
 #: AKSubmission/templates/AKSubmission/ak_table.html:53
 msgid "Edit"
 msgstr "Bearbeiten"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:64
+#: AKSubmission/templates/AKSubmission/ak_detail.html:67
 #: AKSubmission/templates/AKSubmission/ak_history.html:31
 #: AKSubmission/templates/AKSubmission/ak_table.html:35
 msgid "AK Wish"
 msgstr "AK-Wunsch"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:68
+#: AKSubmission/templates/AKSubmission/ak_detail.html:71
 #: AKSubmission/templates/AKSubmission/ak_table.html:10
 msgid "Who?"
 msgstr "Wer?"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:74
+#: AKSubmission/templates/AKSubmission/ak_detail.html:77
 #: AKSubmission/templates/AKSubmission/ak_history.html:36
 #: AKSubmission/templates/AKSubmission/ak_table.html:11
 msgid "Category"
 msgstr "Kategorie"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:81
+#: AKSubmission/templates/AKSubmission/ak_detail.html:84
 #: AKSubmission/templates/AKSubmission/ak_history.html:37
 msgid "Track"
 msgstr "Track"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:86
+#: AKSubmission/templates/AKSubmission/ak_detail.html:89
 msgid "Present this AK"
 msgstr "Diesen AK vorstellen"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:90
+#: AKSubmission/templates/AKSubmission/ak_detail.html:93
 #: AKSubmission/templates/AKSubmission/ak_table.html:12
 msgid "Tags"
 msgstr "Tags"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:96
+#: AKSubmission/templates/AKSubmission/ak_detail.html:99
 msgid "Reso?"
 msgstr "Reso?"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:103
+#: AKSubmission/templates/AKSubmission/ak_detail.html:106
 msgid "Requirements"
 msgstr "Anforderungen"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:116
+#: AKSubmission/templates/AKSubmission/ak_detail.html:119
 msgid "Conflicting AKs"
 msgstr "AK Konflikte"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:124
+#: AKSubmission/templates/AKSubmission/ak_detail.html:127
 msgid "Prerequisite AKs"
 msgstr "AK Voraussetzungen"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:132
+#: AKSubmission/templates/AKSubmission/ak_detail.html:135
 msgid "Notes"
 msgstr "Notizen"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:149
+#: AKSubmission/templates/AKSubmission/ak_detail.html:152
 #: AKSubmission/templates/AKSubmission/akslot_delete.html:35
 msgid "Duration"
 msgstr "Dauer"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:151
+#: AKSubmission/templates/AKSubmission/ak_detail.html:154
 msgid "When?"
 msgstr "Wann?"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:152
+#: AKSubmission/templates/AKSubmission/ak_detail.html:155
 msgid "Room"
 msgstr "Raum"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:177
+#: AKSubmission/templates/AKSubmission/ak_detail.html:180
 msgid "Delete"
 msgstr "Löschen"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:182
+#: AKSubmission/templates/AKSubmission/ak_detail.html:185
 msgid "Go to virtual room"
 msgstr "Zum virtuellen Raum"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:188
+#: AKSubmission/templates/AKSubmission/ak_detail.html:191
 msgid "Schedule"
 msgstr "Schedule"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:200
+#: AKSubmission/templates/AKSubmission/ak_detail.html:203
 msgid "Add another slot"
 msgstr "Einen neuen AK-Slot hinzufügen"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:204
+#: AKSubmission/templates/AKSubmission/ak_detail.html:207
 msgid "Possible Times"
 msgstr "Mögliche Zeiten"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:208
+#: AKSubmission/templates/AKSubmission/ak_detail.html:211
 msgid "Start"
 msgstr "Start"
 
-#: AKSubmission/templates/AKSubmission/ak_detail.html:209
+#: AKSubmission/templates/AKSubmission/ak_detail.html:212
 msgid "End"
 msgstr "Ende"
 
@@ -252,23 +258,24 @@ msgstr "Details"
 msgid "There are no AKs in this category yet"
 msgstr "Es gibt noch keine AKs in dieser Kategorie"
 
-#: AKSubmission/templates/AKSubmission/akowner_create_update.html:7
-#: AKSubmission/templates/AKSubmission/akowner_create_update.html:13
-#: AKSubmission/templates/AKSubmission/akowner_create_update.html:18
-msgid "AK Owner"
-msgstr "AK-Leitung"
+#: AKSubmission/templates/AKSubmission/akmessage_add.html:7
+#: AKSubmission/templates/AKSubmission/akmessage_add.html:15
+#: AKSubmission/templates/AKSubmission/akmessage_add.html:21
+msgid "Add message to organizers"
+msgstr ""
 
-#: AKSubmission/templates/AKSubmission/akowner_create_update.html:24
-#: AKSubmission/templates/AKSubmission/akslot_add_update.html:26
-msgid "Continue"
-msgstr "Weiter"
+#: AKSubmission/templates/AKSubmission/akmessage_add.html:27
+msgid "Send"
+msgstr "Senden"
 
+#: AKSubmission/templates/AKSubmission/akmessage_add.html:31
 #: AKSubmission/templates/AKSubmission/akowner_create_update.html:27
 #: AKSubmission/templates/AKSubmission/akslot_add_update.html:30
 #: AKSubmission/templates/AKSubmission/submit_new.html:45
 msgid "Reset Form"
 msgstr "Formular leeren"
 
+#: AKSubmission/templates/AKSubmission/akmessage_add.html:35
 #: AKSubmission/templates/AKSubmission/akowner_create_update.html:31
 #: AKSubmission/templates/AKSubmission/akslot_add_update.html:34
 #: AKSubmission/templates/AKSubmission/akslot_delete.html:46
@@ -276,6 +283,17 @@ msgstr "Formular leeren"
 msgid "Cancel"
 msgstr "Abbrechen"
 
+#: AKSubmission/templates/AKSubmission/akowner_create_update.html:7
+#: AKSubmission/templates/AKSubmission/akowner_create_update.html:13
+#: AKSubmission/templates/AKSubmission/akowner_create_update.html:18
+msgid "AK Owner"
+msgstr "AK-Leitung"
+
+#: AKSubmission/templates/AKSubmission/akowner_create_update.html:24
+#: AKSubmission/templates/AKSubmission/akslot_add_update.html:26
+msgid "Continue"
+msgstr "Weiter"
+
 #: AKSubmission/templates/AKSubmission/akslot_add_update.html:7
 #: AKSubmission/templates/AKSubmission/akslot_add_update.html:15
 #: AKSubmission/templates/AKSubmission/akslot_add_update.html:20
@@ -405,3 +423,7 @@ msgstr "Bereits geplante AK-Slots können nicht mehr gelöscht werden"
 #: AKSubmission/views.py:403
 msgid "AK Slot successfully deleted"
 msgstr "AK-Slot erfolgreich angelegt"
+
+#: AKSubmission/views.py:424
+msgid "Message to organizers successfully saved"
+msgstr "Nachricht an die Organisator*innen erfolgreich gespeichert"
diff --git a/AKSubmission/templates/AKSubmission/ak_detail.html b/AKSubmission/templates/AKSubmission/ak_detail.html
index bef54a41..0819f04a 100644
--- a/AKSubmission/templates/AKSubmission/ak_detail.html
+++ b/AKSubmission/templates/AKSubmission/ak_detail.html
@@ -55,6 +55,9 @@
            data-toggle="tooltip"
            title="{% trans 'History' %}" class="btn btn-light">{% fa5_icon 'clock' 'fas' %}</a>
         {% if ak.event.active %}
+            <a href="{% url 'submit:akmessage_add' event_slug=ak.event.slug pk=ak.pk %}" data-toggle="tooltip"
+               title="{% trans 'Add confident message to organizers' %}"
+               class="btn btn-warning">{% fa5_icon 'envelope' 'fas' %}</a>
             <a href="{% url 'submit:ak_edit' event_slug=ak.event.slug pk=ak.pk %}" data-toggle="tooltip"
                title="{% trans 'Edit' %}"
                class="btn btn-success">{% fa5_icon 'pencil-alt' 'fas' %}</a>
diff --git a/AKSubmission/templates/AKSubmission/akmessage_add.html b/AKSubmission/templates/AKSubmission/akmessage_add.html
new file mode 100644
index 00000000..f7c99c76
--- /dev/null
+++ b/AKSubmission/templates/AKSubmission/akmessage_add.html
@@ -0,0 +1,39 @@
+{% extends 'AKSubmission/submission_base.html' %}
+
+{% load i18n %}
+{% load bootstrap4 %}
+{% load fontawesome_5 %}
+
+{% block title %}{% trans "AKs" %}: {{ event.name }} - {% trans "Add message to organizers" %}{% endblock %}
+
+{% block breadcrumbs %}
+    {% include "AKSubmission/submission_breadcrumbs.html" %}
+    <li class="breadcrumb-item"><a
+            href="{% url 'submit:submission_overview' event_slug=event.slug %}">{% trans "AK Submission" %}</a></li>
+    <li class="breadcrumb-item"><a
+            href="{% url 'submit:ak_detail' event_slug=event.slug pk=ak.pk %}">{{ ak.short_name }}</a></li>
+    <li class="breadcrumb-item active">{% trans "Add message to organizers" %}</li>
+{% endblock %}
+
+{% block content %}
+    {% block headline %}
+        <h2>{{ ak }}</h2>
+        <h3>{% trans 'Add message to organizers' %}</h3>
+    {% endblock %}
+    <form method="POST" class="post-form">{% csrf_token %}
+        {% bootstrap_form form %}
+        {% buttons %}
+            <button type="submit" class="save btn btn-primary float-right">
+                {% fa5_icon "check" 'fas' %} {% trans "Send" %}
+            </button>
+
+            <button type="reset" class="btn btn-danger">
+                {% fa5_icon "undo-alt" 'fas' %} {% trans "Reset Form" %}
+            </button>
+
+            <a href="{% url 'submit:ak_detail' event_slug=event.slug pk=ak.pk %}" class="btn btn-secondary">
+                {% fa5_icon "times" 'fas' %} {% trans "Cancel" %}
+            </a>
+        {% endbuttons %}
+    </form>
+{% endblock %}
diff --git a/AKSubmission/urls.py b/AKSubmission/urls.py
index 57dd16ef..0e08c5b0 100644
--- a/AKSubmission/urls.py
+++ b/AKSubmission/urls.py
@@ -14,6 +14,7 @@ urlpatterns = [
             path('ak/<int:pk>/edit/', views.AKEditView.as_view(), name='ak_edit'),
             path('ak/<int:pk>/interest/', views.AKInterestView.as_view(), name='inc_interest'),
             path('ak/<int:pk>/add_slot/', views.AKSlotAddView.as_view(), name='akslot_add'),
+            path('ak/<int:pk>/add_message/', views.AKAddOrgaMessageView.as_view(), name='akmessage_add'),
             path('akslot/<int:pk>/edit/', views.AKSlotEditView.as_view(), name='akslot_edit'),
             path('akslot/<int:pk>/delete/', views.AKSlotDeleteView.as_view(), name='akslot_delete'),
             path('aks/', views.AKOverviewView.as_view(), name='ak_list'),
diff --git a/AKSubmission/views.py b/AKSubmission/views.py
index a3997ba3..f2e1a160 100644
--- a/AKSubmission/views.py
+++ b/AKSubmission/views.py
@@ -8,10 +8,10 @@ from django.views import View
 from django.views.generic import ListView, DetailView, CreateView, UpdateView, DeleteView, RedirectView, TemplateView
 
 from AKModel.availability.models import Availability
-from AKModel.models import AK, AKCategory, AKTag, AKOwner, AKSlot, AKTrack
+from AKModel.models import AK, AKCategory, AKTag, AKOwner, AKSlot, AKTrack, AKOrgaMessage
 from AKModel.views import EventSlugMixin
 from AKModel.views import FilterByEventSlugMixin
-from AKSubmission.forms import AKWishForm, AKOwnerForm, AKEditForm, AKSubmissionForm, AKDurationForm
+from AKSubmission.forms import AKWishForm, AKOwnerForm, AKEditForm, AKSubmissionForm, AKDurationForm, AKOrgaMessageForm
 
 
 class SubmissionErrorNotConfiguredView(EventSlugMixin, TemplateView):
@@ -403,3 +403,24 @@ class AKSlotDeleteView(EventSlugMixin, EventInactiveRedirectMixin, DeleteView):
         messages.add_message(self.request, messages.SUCCESS, _("AK Slot successfully deleted"))
         return reverse_lazy('submit:ak_detail',
                             kwargs={'event_slug': self.kwargs['event_slug'], 'pk': self.object.ak.pk})
+
+
+class AKAddOrgaMessageView(EventSlugMixin, CreateView):
+    model = AKOrgaMessage
+    form_class = AKOrgaMessageForm
+    template_name = "AKSubmission/akmessage_add.html"
+
+    def get_initial(self):
+        initials = super(AKAddOrgaMessageView, self).get_initial()
+        initials['ak'] = get_object_or_404(AK, pk=self.kwargs['pk'])
+        return initials
+
+    def get_context_data(self, *, object_list=None, **kwargs):
+        context = super().get_context_data(object_list=object_list, **kwargs)
+        context['ak'] = get_object_or_404(AK, pk=self.kwargs['pk'])
+        return context
+
+    def get_success_url(self):
+        messages.add_message(self.request, messages.SUCCESS, _("Message to organizers successfully saved"))
+        return reverse_lazy('submit:ak_detail',
+                            kwargs={'event_slug': self.kwargs['event_slug'], 'pk': self.object.ak.pk})
-- 
GitLab