diff --git a/evap/development/fixtures/test_data.json b/evap/development/fixtures/test_data.json index 9876ae4559..f814f3f4d8 100644 --- a/evap/development/fixtures/test_data.json +++ b/evap/development/fixtures/test_data.json @@ -153474,7 +153474,8 @@ "model": "rewards.rewardpointredemptionevent", "pk": 1, "fields": { - "name": "Big party", + "name_de": "Große Feier", + "name_en": "Big party", "date": "2099-12-31", "redeem_end_date": "2099-12-30", "step": 3 diff --git a/evap/rewards/forms.py b/evap/rewards/forms.py index 9bb1a65a1b..ce54a4ebdc 100644 --- a/evap/rewards/forms.py +++ b/evap/rewards/forms.py @@ -14,7 +14,7 @@ class RewardPointRedemptionEventForm(forms.ModelForm): class Meta: model = RewardPointRedemptionEvent - fields = ("name", "date", "redeem_end_date", "step") + fields = ("name_en", "name_de", "date", "redeem_end_date", "step") def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/evap/rewards/migrations/0007_localize_rewardpointredemption_name.py b/evap/rewards/migrations/0007_localize_rewardpointredemption_name.py new file mode 100644 index 0000000000..44c41ae15f --- /dev/null +++ b/evap/rewards/migrations/0007_localize_rewardpointredemption_name.py @@ -0,0 +1,42 @@ +# Generated by Django 5.1.3 on 2025-01-27 20:24 + +from django.db import migrations, models + + +def update_names(apps, _schema_editor): + RewardPointRedemptionEvent = apps.get_model("rewards", "RewardPointRedemptionEvent") + for event in RewardPointRedemptionEvent.objects.all(): + event.name_de = event.name_en + event.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ("rewards", "0006_rewardpointredemptionevent_step"), + ] + + operations = [ + migrations.RenameField( + model_name="rewardpointredemptionevent", + old_name="name", + new_name="name_en", + ), + migrations.AlterField( + model_name="rewardpointredemptionevent", + name="name_en", + field=models.CharField(max_length=1024, unique=True, verbose_name="name (english)"), + ), + migrations.AddField( + model_name="rewardpointredemptionevent", + name="name_de", + field=models.CharField(null=True, unique=True, max_length=1024, verbose_name="name (german)"), + preserve_default=False, + ), + migrations.RunPython(update_names, reverse_code=migrations.RunPython.noop), + migrations.AlterField( + model_name="rewardpointredemptionevent", + name="name_de", + field=models.CharField(max_length=1024, unique=True, verbose_name="name (german)"), + ), + ] diff --git a/evap/rewards/models.py b/evap/rewards/models.py index ad3a134323..e8abdf2d76 100644 --- a/evap/rewards/models.py +++ b/evap/rewards/models.py @@ -5,10 +5,13 @@ from django.utils.translation import gettext_lazy as _ from evap.evaluation.models import Semester, UserProfile +from evap.evaluation.tools import translate class RewardPointRedemptionEvent(models.Model): - name = models.CharField(max_length=1024, verbose_name=_("event name")) + name_de = models.CharField(max_length=1024, unique=True, verbose_name=_("name (german)")) + name_en = models.CharField(max_length=1024, unique=True, verbose_name=_("name (english)")) + name = translate(en="name_en", de="name_de") date = models.DateField(verbose_name=_("event date")) redeem_end_date = models.DateField(verbose_name=_("redemption end date")) # Note that we allow this value to change throughout the lifetime of the event. diff --git a/evap/rewards/tests/test_views.py b/evap/rewards/tests/test_views.py index 5efe0fff7f..b6e5abe95f 100644 --- a/evap/rewards/tests/test_views.py +++ b/evap/rewards/tests/test_views.py @@ -139,7 +139,8 @@ def test_create_redemption_event(self): response = self.app.get(self.url, user=self.manager) form = response.forms["reward-point-redemption-event-form"] - form.set("name", "Test3Event") + form.set("name_de", "Test3Event_de") + form.set("name_en", "Test3Event_en") form.set("date", "2014-12-10") form.set("redeem_end_date", "2014-11-20") @@ -152,7 +153,7 @@ class TestEventEditView(WebTestStaffMode): @classmethod def setUpTestData(cls): cls.manager = make_manager() - cls.event = baker.make(RewardPointRedemptionEvent, name="old name") + cls.event = baker.make(RewardPointRedemptionEvent, name_en="old name", name_de="alter Name") cls.url = reverse("rewards:reward_point_redemption_event_edit", args=[cls.event.pk]) def test_edit_redemption_event(self): @@ -160,11 +161,13 @@ def test_edit_redemption_event(self): response = self.app.get(self.url, user=self.manager) form = response.forms["reward-point-redemption-event-form"] - form.set("name", "new name") + form.set("name_en", "new name") + form.set("name_de", "neuer Name") response = form.submit() self.assertRedirects(response, reverse("rewards:reward_point_redemption_events")) - self.assertEqual(RewardPointRedemptionEvent.objects.get(pk=self.event.pk).name, "new name") + self.assertEqual(RewardPointRedemptionEvent.objects.get(pk=self.event.pk).name_en, "new name") + self.assertEqual(RewardPointRedemptionEvent.objects.get(pk=self.event.pk).name_de, "neuer Name") class TestEventExportView(WebTestStaffModeWith200Check):