From 2367e3cdb7d504d0d52baeb0e140a52e83586732 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?= <benjamin.haettasch@cs.tu-darmstadt.de> Date: Fri, 25 Oct 2019 01:10:55 +0200 Subject: [PATCH] Introduce automated link generation for AK submission Add base url field to event Generate Wiki link from title and base url --- AKModel/locale/de_DE/LC_MESSAGES/django.po | 174 +++++++++++---------- AKModel/migrations/0021_base_url.py | 18 +++ AKModel/models.py | 2 + AKSubmission/forms.py | 3 + AKSubmission/views.py | 3 +- 5 files changed, 116 insertions(+), 84 deletions(-) create mode 100644 AKModel/migrations/0021_base_url.py diff --git a/AKModel/locale/de_DE/LC_MESSAGES/django.po b/AKModel/locale/de_DE/LC_MESSAGES/django.po index 7945c257..a4ccc84d 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: 2019-10-24 21:00+0000\n" +"POT-Creation-Date: 2019-10-24 22:48+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,13 +11,13 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: availability.py:38 models.py:23 models.py:45 models.py:139 models.py:188 -#: models.py:220 models.py:246 +#: availability.py:38 models.py:25 models.py:47 models.py:141 models.py:190 +#: models.py:222 models.py:248 msgid "Event" msgstr "Event" -#: availability.py:39 models.py:46 models.py:140 models.py:189 models.py:221 -#: models.py:247 +#: availability.py:39 models.py:48 models.py:142 models.py:191 models.py:223 +#: models.py:249 msgid "Associated event" msgstr "Zugehöriges Event" @@ -29,7 +29,7 @@ msgstr "Person" msgid "Person whose availability this is" msgstr "Person deren Verfügbarkeit hier abgebildet wird" -#: availability.py:56 models.py:224 models.py:239 +#: availability.py:56 models.py:226 models.py:241 msgid "Room" msgstr "Raum" @@ -37,7 +37,7 @@ msgstr "Raum" msgid "Room whose availability this is" msgstr "Raum dessen Verfügbarkeit hier abgebildet wird" -#: availability.py:65 models.py:192 models.py:238 +#: availability.py:65 models.py:194 models.py:240 msgid "AK" msgstr "AK" @@ -47,7 +47,7 @@ msgstr "AK" msgid "AK whose availability this is" msgstr "Verfügbarkeiten" -#: availability.py:74 models.py:97 +#: availability.py:74 models.py:99 msgid "AK Category" msgstr "AK Kategorie" @@ -63,8 +63,8 @@ msgstr "Verfügbarkeit" msgid "Availabilities" msgstr "Verfügbarkeiten" -#: models.py:12 models.py:92 models.py:108 models.py:123 models.py:137 -#: models.py:154 models.py:213 +#: models.py:12 models.py:94 models.py:110 models.py:125 models.py:139 +#: models.py:156 models.py:215 msgid "Name" msgstr "Name" @@ -114,295 +114,303 @@ msgstr "Aktiver Status" msgid "Marks currently active events" msgstr "Markiert aktuell aktive Events" -#: models.py:24 +#: models.py:22 +msgid "Base URL" +msgstr "URL-Prefix" + +#: models.py:22 +msgid "Prefix for wiki link construction" +msgstr "Prefix für die automatische Generierung von Wiki-Links" + +#: models.py:26 msgid "Events" msgstr "Events" -#: models.py:38 +#: models.py:40 msgid "Nickname" msgstr "Spitzname" -#: models.py:38 +#: models.py:40 msgid "Name to identify an AK owner by" msgstr "Name durch den eine AK Leitung identifiziert wird" -#: models.py:39 +#: models.py:41 msgid "Slug" msgstr "Slug" -#: models.py:40 +#: models.py:42 msgid "Slug for URL generation" msgstr "Slug für URL-Generierung" -#: models.py:41 +#: models.py:43 msgid "E-Mail Address" msgstr "E-Mail Adresse" -#: models.py:41 +#: models.py:43 msgid "Contact mail" msgstr "Kontakt E-Mail" -#: models.py:42 +#: models.py:44 msgid "Institution" msgstr "Instutution" -#: models.py:42 +#: models.py:44 msgid "Uni etc." msgstr "Universität o.ä." -#: models.py:43 models.py:163 +#: models.py:45 models.py:165 msgid "Web Link" msgstr "Internet Link" -#: models.py:43 +#: models.py:45 msgid "Link to Homepage" msgstr "Link zu Homepage oder Webseite" -#: models.py:49 +#: models.py:51 msgid "AK Owner" msgstr "AK Leitung" -#: models.py:50 +#: models.py:52 msgid "AK Owners" msgstr "AK Leitungen" -#: models.py:92 +#: models.py:94 msgid "Name of the AK Category" msgstr "Name des AK Kategorie" -#: models.py:93 models.py:109 +#: models.py:95 models.py:111 msgid "Color" msgstr "Farbe" -#: models.py:93 models.py:109 +#: models.py:95 models.py:111 msgid "Color for displaying" msgstr "Farbe für die Anzeige" -#: models.py:94 models.py:157 +#: models.py:96 models.py:159 msgid "Description" msgstr "Beschreibung" -#: models.py:94 +#: models.py:96 msgid "Short description of this AK Category" msgstr "Beschreibung der AK-Kategorie" -#: models.py:98 +#: models.py:100 msgid "AK Categories" msgstr "AK Kategorien" -#: models.py:108 +#: models.py:110 msgid "Name of the AK Track" msgstr "Name des AK Tracks" -#: models.py:112 +#: models.py:114 msgid "AK Track" msgstr "AK Track" -#: models.py:113 +#: models.py:115 msgid "AK Tracks" msgstr "AK Tracks" -#: models.py:123 +#: models.py:125 msgid "Name of the AK Tag" msgstr "Name das AK Tags" -#: models.py:126 +#: models.py:128 msgid "AK Tag" msgstr "AK Tag" -#: models.py:127 +#: models.py:129 msgid "AK Tags" msgstr "AK Tags" -#: models.py:137 +#: models.py:139 msgid "Name of the Requirement" msgstr "Name der Anforderung" -#: models.py:143 +#: models.py:145 msgid "AK Requirement" msgstr "AK Anforderung" -#: models.py:144 +#: models.py:146 msgid "AK Requirements" msgstr "AK Anforderungen" -#: models.py:154 +#: models.py:156 msgid "Name of the AK" msgstr "Name des AKs" -#: models.py:155 +#: models.py:157 msgid "Short Name" msgstr "Kurzer Name" -#: models.py:156 +#: models.py:158 msgid "Name displayed in the schedule" msgstr "Name zur Anzeige im AK Plan" -#: models.py:157 +#: models.py:159 msgid "Description of the AK" msgstr "Beschreibung des AKs" -#: models.py:159 +#: models.py:161 msgid "Owners" msgstr "Leitungen" -#: models.py:160 +#: models.py:162 msgid "Those organizing the AK" msgstr "Menschen, die den AK organisieren und halten" -#: models.py:163 +#: models.py:165 msgid "Link to wiki page" msgstr "Link zur Wiki Seite" -#: models.py:165 +#: models.py:167 msgid "Category" msgstr "Kategorie" -#: models.py:166 +#: models.py:168 msgid "Category of the AK" msgstr "Kategorie des AKs" -#: models.py:167 +#: models.py:169 msgid "Tags" msgstr "Tags" -#: models.py:167 +#: models.py:169 msgid "Tags provided by owners" msgstr "Tags, die durch die AK Leitung vergeben wurden" -#: models.py:168 +#: models.py:170 msgid "Track" msgstr "Track" -#: models.py:169 +#: models.py:171 msgid "Track the AK belongs to" msgstr "Track zu dem der AK gehört" -#: models.py:171 +#: models.py:173 msgid "Resolution Intention" msgstr "Resolutionsabsicht" -#: models.py:172 +#: models.py:174 msgid "Intends to submit a resolution" msgstr "Beabsichtigt eine Resolution einzureichen" -#: models.py:173 +#: models.py:175 msgid "Present this AK" msgstr "AK Präsentieren" -#: models.py:174 +#: models.py:176 msgid "Present results of this AK" msgstr "Die Ergebnisse dieses AKs vorstellen" -#: models.py:176 +#: models.py:178 msgid "Requirements" msgstr "Anforderungen" -#: models.py:177 +#: models.py:179 msgid "AK's Requirements" msgstr "Anforderungen des AKs" -#: models.py:179 +#: models.py:181 msgid "Conflicting AKs" msgstr "AK Konflikte" -#: models.py:180 +#: models.py:182 msgid "AKs that conflict and thus must not take place at the same time" msgstr "" "AKs, die Konflikte haben und deshalb nicht gleichzeitig stattfinden dürfen" -#: models.py:181 +#: models.py:183 msgid "Prerequisite AKs" msgstr "Vorausgesetzte AKs" -#: models.py:182 +#: models.py:184 msgid "AKs that should precede this AK in the schedule" msgstr "AKS die im AK Plan vor diesem AK stattfinden müssen" -#: models.py:184 +#: models.py:186 msgid "Internal Notes" msgstr "Interne Notizen" -#: models.py:184 +#: models.py:186 msgid "Notes to organizers" msgstr "Notizen an die Organisator*innen" -#: models.py:186 +#: models.py:188 msgid "Interest" msgstr "Interesse" -#: models.py:186 +#: models.py:188 msgid "Expected number of people" msgstr "Erwartete Personenzahl" -#: models.py:193 +#: models.py:195 msgid "AKs" msgstr "AKs" -#: models.py:213 +#: models.py:215 msgid "Name or number of the room" msgstr "Name oder Nummer des Raums" -#: models.py:214 +#: models.py:216 msgid "Building" msgstr "Gebäude" -#: models.py:215 +#: models.py:217 msgid "Name or number of the building" msgstr "Name oder Nummer des Gebäudes" -#: models.py:216 +#: models.py:218 msgid "Capacity" msgstr "Kapazität" -#: models.py:216 +#: models.py:218 msgid "Maximum number of people" msgstr "Maximale Personenzahl" -#: models.py:217 +#: models.py:219 msgid "Properties" msgstr "Eigenschaften" -#: models.py:218 +#: models.py:220 msgid "AK requirements fulfilled by the room" msgstr "AK Anforderungen, die dieser Raum erfüllt" -#: models.py:225 +#: models.py:227 msgid "Rooms" msgstr "Räume" -#: models.py:238 +#: models.py:240 msgid "AK being mapped" msgstr "AK, der zugeordnet wird" -#: models.py:240 +#: models.py:242 msgid "Room the AK will take place in" msgstr "Raum in dem der AK stattfindet" -#: models.py:241 +#: models.py:243 msgid "Slot Begin" msgstr "Beginn des Slots" -#: models.py:241 +#: models.py:243 msgid "Time and date the slot begins" msgstr "Zeit und Datum zu der der AK beginnt" -#: models.py:243 +#: models.py:245 msgid "Duration" msgstr "Dauer" -#: models.py:244 +#: models.py:246 msgid "Length in hours" msgstr "Länge in Stunden" -#: models.py:250 +#: models.py:252 msgid "AK Slot" msgstr "AK Slot" -#: models.py:251 +#: models.py:253 msgid "AK Slots" msgstr "AK Slot" -#: models.py:265 +#: models.py:267 msgid "Not scheduled yet" msgstr "Noch nicht geplant" diff --git a/AKModel/migrations/0021_base_url.py b/AKModel/migrations/0021_base_url.py new file mode 100644 index 00000000..522fc41e --- /dev/null +++ b/AKModel/migrations/0021_base_url.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.6 on 2019-10-24 22:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('AKModel', '0020_ak_unique'), + ] + + operations = [ + migrations.AddField( + model_name='event', + name='base_url', + field=models.URLField(blank=True, help_text='Prefix for wiki link construction', verbose_name='Base URL'), + ), + ] diff --git a/AKModel/models.py b/AKModel/models.py index 690a9411..90b02197 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -19,6 +19,8 @@ class Event(models.Model): help_text=_('City etc. the event takes place in')) active = models.BooleanField(verbose_name=_('Active State'), help_text=_('Marks currently active events')) + base_url = models.URLField(verbose_name=_("Base URL"), help_text=_("Prefix for wiki link construction"), blank=True) + class Meta: verbose_name = _('Event') verbose_name_plural = _('Events') diff --git a/AKSubmission/forms.py b/AKSubmission/forms.py index 2d145419..83fe1fd0 100644 --- a/AKSubmission/forms.py +++ b/AKSubmission/forms.py @@ -72,6 +72,9 @@ class AKForm(forms.ModelForm): class AKSubmissionForm(AKForm): + class Meta(AKForm.Meta): + exclude = ['link'] + def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # Add field for durations diff --git a/AKSubmission/views.py b/AKSubmission/views.py index b9011f86..2f4f9894 100644 --- a/AKSubmission/views.py +++ b/AKSubmission/views.py @@ -109,7 +109,8 @@ class AKAndAKWishSubmissionView(EventSlugMixin, CreateView): super_form_valid = super().form_valid(form) # Generate wiki link - # TODO + self.object.link = form.cleaned_data["event"].base_url + form.cleaned_data["name"].replace(" ", "_") + self.object.save() # Set tags (and generate them if necessary) for tag_name in form.cleaned_data["tag_names"]: -- GitLab