diff --git a/AKDashboard/views.py b/AKDashboard/views.py index 9d9518d85d20bbaa1af89422da8847cb33173410..afabaf7df0b61574baf12d67d2ae86ac35a8bc83 100644 --- a/AKDashboard/views.py +++ b/AKDashboard/views.py @@ -54,7 +54,7 @@ class DashboardEventView(DetailView): # Changes in plan if apps.is_installed("AKPlan"): if not context['event'].plan_hidden: - last_changed_slots = AKSlot.objects.filter(event=context['event']).order_by('-updated')[ + last_changed_slots = AKSlot.objects.filter(event=context['event'], start__isnull=False).order_by('-updated')[ :int(settings.DASHBOARD_RECENT_MAX)] for changed_slot in last_changed_slots: recent_changes.append({'icon': ('clock', 'far'), diff --git a/AKModel/forms.py b/AKModel/forms.py index bdb4e8dd6d5514d68ca40187739e1c95f51a6203..43dcfa96499660292a6ea58c541f6ca1aece3979 100644 --- a/AKModel/forms.py +++ b/AKModel/forms.py @@ -9,7 +9,10 @@ from AKModel.models import Event, AKCategory, AKRequirement class NewEventWizardStartForm(forms.ModelForm): class Meta: model = Event - fields = ['name', 'slug', 'timezone'] + fields = ['name', 'slug', 'timezone', 'plan_hidden'] + widgets = { + 'plan_hidden': forms.HiddenInput(), + } is_init = forms.BooleanField(initial=True, widget=forms.HiddenInput) @@ -23,7 +26,6 @@ class NewEventWizardSettingsForm(forms.ModelForm): 'slug': forms.HiddenInput(), 'timezone': forms.HiddenInput(), 'active': forms.HiddenInput(), - 'plan_hidden': forms.HiddenInput(), 'start': DateTimePickerInput(options={"format": "YYYY-MM-DD HH:mm"}), 'end': DateTimePickerInput(options={"format": "YYYY-MM-DD HH:mm"}), 'reso_deadline': DateTimePickerInput(options={"format": "YYYY-MM-DD HH:mm"}), diff --git a/AKPlan/templates/AKPlan/plan_akslot.html b/AKPlan/templates/AKPlan/plan_akslot.html index a3215326e795e60feb728dce47c6278d3327e909..b13ba8e9e1923b8078fcf1f28ca6419aacee579c 100644 --- a/AKPlan/templates/AKPlan/plan_akslot.html +++ b/AKPlan/templates/AKPlan/plan_akslot.html @@ -6,6 +6,7 @@ {% include "AKPlan/load_fullcalendar.html" %} <script> + {% get_current_language as LANGUAGE_CODE %} document.addEventListener('DOMContentLoaded', function () { var calendarEl = document.getElementById('akSlotCalendar'); diff --git a/AKPlan/templates/AKPlan/plan_wall.html b/AKPlan/templates/AKPlan/plan_wall.html index c2d474235340ff646fbbfa36aebc89a0a581b0de..5d09ece0c18be3c5054b802a8261ac763273b087 100644 --- a/AKPlan/templates/AKPlan/plan_wall.html +++ b/AKPlan/templates/AKPlan/plan_wall.html @@ -22,6 +22,8 @@ {% include "AKPlan/load_fullcalendar.html" %} + {% get_current_language as LANGUAGE_CODE %} + <script> document.addEventListener('DOMContentLoaded', function () { var planEl = document.getElementById('planCalendar'); diff --git a/AKSubmission/forms.py b/AKSubmission/forms.py index 41cebfca9567f82ec7d3537f9d49fd22e2096ac5..d1f7e547c1a6c91f474b286859bc7c1d48455597 100644 --- a/AKSubmission/forms.py +++ b/AKSubmission/forms.py @@ -100,6 +100,12 @@ class AKForm(AvailabilitiesFormMixin, forms.ModelForm): short_name = '{}-{}'.format(short_name[:-(digits + 1)], i) cleaned_data["short_name"] = short_name + # Generate wiki link + if self.cleaned_data["event"].base_url: + link = self.cleaned_data["event"].base_url + self.cleaned_data["name"].replace(" ", "_") + # Truncate links longer than 200 characters (default length of URL fields in django) + self.cleaned_data["link"] = link[:200] + # Get tag names from raw tags cleaned_data["tag_names"] = [name.strip().lower() for name in self.split_string.split(cleaned_data["tags_raw"]) diff --git a/AKSubmission/locale/de_DE/LC_MESSAGES/django.po b/AKSubmission/locale/de_DE/LC_MESSAGES/django.po index d6c141a133091033f10634eeecc488a11b3b2688..db925e64b2b6295f050fe06b14a3937216756877 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: 2021-10-29 13:36+0000\n" +"POT-Creation-Date: 2022-08-13 18:04+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" @@ -428,39 +428,45 @@ msgstr "Event inaktiv. Hinzufügen/Bearbeiten nicht möglich." msgid "AK successfully created" msgstr "AK erfolgreich angelegt" -#: AKSubmission/views.py:267 +#: AKSubmission/views.py:227 +msgid "" +"Due to technical reasons, the link you entered was truncated to a length of " +"200 characters" +msgstr "Aus technischen Gründen wurde der eingegebeneLink auf eine Länge von 200 Zeichen gekürzt" + +#: AKSubmission/views.py:272 msgid "AK successfully updated" msgstr "AK erfolgreich aktualisiert" -#: AKSubmission/views.py:334 +#: AKSubmission/views.py:339 msgid "Person Info successfully updated" msgstr "Personen-Info erfolgreich aktualisiert" -#: AKSubmission/views.py:354 +#: AKSubmission/views.py:359 msgid "No user selected" msgstr "Keine Person ausgewählt" -#: AKSubmission/views.py:380 +#: AKSubmission/views.py:385 msgid "AK Slot successfully added" msgstr "AK-Slot erfolgreich angelegt" -#: AKSubmission/views.py:394 +#: AKSubmission/views.py:399 msgid "You cannot edit a slot that has already been scheduled" msgstr "Bereits geplante AK-Slots können nicht mehr bearbeitet werden" -#: AKSubmission/views.py:404 +#: AKSubmission/views.py:409 msgid "AK Slot successfully updated" msgstr "AK-Slot erfolgreich aktualisiert" -#: AKSubmission/views.py:417 +#: AKSubmission/views.py:422 msgid "You cannot delete a slot that has already been scheduled" msgstr "Bereits geplante AK-Slots können nicht mehr gelöscht werden" -#: AKSubmission/views.py:427 +#: AKSubmission/views.py:432 msgid "AK Slot successfully deleted" msgstr "AK-Slot erfolgreich angelegt" -#: AKSubmission/views.py:448 +#: AKSubmission/views.py:454 msgid "Message to organizers successfully saved" msgstr "Nachricht an die Organisator*innen erfolgreich gespeichert" diff --git a/AKSubmission/views.py b/AKSubmission/views.py index 3f43854608835480385f3236d3bea276b03d67f2..a59f0ee1d60045401778f1776e98a15962f4106f 100644 --- a/AKSubmission/views.py +++ b/AKSubmission/views.py @@ -215,16 +215,12 @@ class AKAndAKWishSubmissionView(EventSlugMixin, EventInactiveRedirectMixin, Crea return redirect(reverse_lazy('submit:submission_overview', kwargs={'event_slug': form.cleaned_data["event"].slug})) + # Try to save AK and get redirect URL super_form_valid = super().form_valid(form) - # Generate wiki link - if form.cleaned_data["event"].base_url: - 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"]: - tag, _ = AKTag.objects.get_or_create(name=tag_name) + tag, was_created = AKTag.objects.get_or_create(name=tag_name) self.object.tags.add(tag) # Generate slot(s) @@ -280,7 +276,7 @@ class AKEditView(EventSlugMixin, EventInactiveRedirectMixin, UpdateView): # Set tags (and generate them if necessary) for tag_name in form.cleaned_data["tag_names"]: - tag, _ = AKTag.objects.get_or_create(name=tag_name) + tag, was_created = AKTag.objects.get_or_create(name=tag_name) self.object.tags.add(tag) return super_form_valid diff --git a/README.md b/README.md index 1bbbfdae91f8b130330849d8774dba74291325f3..9142835ca6eec1dc92ab4ebb9450b3b69d10ab88 100644 --- a/README.md +++ b/README.md @@ -31,4 +31,4 @@ Afterwards, you may check your setup by executing ``Utils/check.sh`` or ``Utils/ ## Developer Notes * to regenerate translations use ````python manage.py makemessages -l de_DE --ignore venv```` * to create a data backup use ````python manage.py dumpdata --indent=2 > db.json --traceback```` -* to export all database items belonging to a certain event use ````.\Utils\json_export.sh <event_id> <export_prefix> [--prod]````. The results will be saved in ````backups/<export_prefix>.json```` +* to export all database items belonging to a certain event use ````./Utils/json_export.sh <event_id> <export_prefix> [--prod]````. The results will be saved in ````backups/<export_prefix>.json````