From 2fec140211bbdc760fd3b730a7dda2f3529800f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?= <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de> Date: Thu, 12 May 2022 19:27:05 +0200 Subject: [PATCH] Add event reference to AKOrgaMessage Add a new mandatory event reference to the model Add a migration that makes sure all existing messages are updated accordingly Adapt the frontend view that sends the message to fill the event field --- .../0050_message_event_reference.py | 41 +++++++++++++++++++ AKModel/models.py | 2 + AKSubmission/forms.py | 3 +- AKSubmission/views.py | 1 + 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 AKModel/migrations/0050_message_event_reference.py diff --git a/AKModel/migrations/0050_message_event_reference.py b/AKModel/migrations/0050_message_event_reference.py new file mode 100644 index 00000000..704d91a7 --- /dev/null +++ b/AKModel/migrations/0050_message_event_reference.py @@ -0,0 +1,41 @@ +# Generated by Django 3.1.8 on 2022-05-12 16:57 + +from django.db import migrations, models +import django.db.models.deletion + + +def forwards_func(apps, schema_editor): + # Set event to the corresponding even (from the AK) each + AKOrgaMessage = apps.get_model("AKModel", "AKOrgaMessage") + for message in AKOrgaMessage.objects.all(): + message.event = message.ak.event + message.save() + + +def reverse_func(apps, schema_editor): + # No need to do something here, field will be deleted anyway + pass + + +class Migration(migrations.Migration): + + dependencies = [ + ('AKModel', '0049_interest_window'), + ] + + operations = [ + migrations.AddField( + model_name='akorgamessage', + name='event', + field=models.ForeignKey(blank=True, help_text='Associated event', null=True, + on_delete=django.db.models.deletion.CASCADE, to='AKModel.event', + verbose_name='Event'), + ), + migrations.RunPython(forwards_func, reverse_func), + migrations.AlterField( + model_name='akorgamessage', + name='event', + field=models.ForeignKey(help_text='Associated event', on_delete=django.db.models.deletion.CASCADE, + to='AKModel.event', verbose_name='Event'), + ), + ] diff --git a/AKModel/models.py b/AKModel/models.py index 2767effb..979f005f 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -443,6 +443,8 @@ class AKOrgaMessage(models.Model): 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) + event = models.ForeignKey(to=Event, on_delete=models.CASCADE, verbose_name=_('Event'), + help_text=_('Associated event')) class Meta: verbose_name = _('AK Orga Message') diff --git a/AKSubmission/forms.py b/AKSubmission/forms.py index b75f8803..41cebfca 100644 --- a/AKSubmission/forms.py +++ b/AKSubmission/forms.py @@ -175,8 +175,9 @@ class AKDurationForm(forms.ModelForm): class AKOrgaMessageForm(forms.ModelForm): class Meta: model = AKOrgaMessage - fields = ['ak', 'text'] + fields = ['ak', 'text', 'event'] widgets = { 'ak': forms.HiddenInput, + 'event': forms.HiddenInput, 'text': forms.Textarea, } diff --git a/AKSubmission/views.py b/AKSubmission/views.py index 077005e2..3f438546 100644 --- a/AKSubmission/views.py +++ b/AKSubmission/views.py @@ -437,6 +437,7 @@ class AKAddOrgaMessageView(EventSlugMixin, CreateView): def get_initial(self): initials = super(AKAddOrgaMessageView, self).get_initial() initials['ak'] = get_object_or_404(AK, pk=self.kwargs['pk']) + initials['event'] = initials['ak'].event return initials def get_context_data(self, *, object_list=None, **kwargs): -- GitLab