Skip to content
Snippets Groups Projects
Commit fcb2ef1f authored by Benjamin Hättasch's avatar Benjamin Hättasch Committed by Nadja Geisler
Browse files

Improve wiki export

Introduce field for wiki export template to Event model
Use this for wiki export
Fixes #85
Create and link new export view (auto-split by categories)
parent 151614c1
Branches
No related tags found
No related merge requests found
......@@ -11,7 +11,7 @@ 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, AKOrgaMessage
from AKModel.views import EventStatusView, AKCSVExportView
from AKModel.views import EventStatusView, AKCSVExportView, AKWikiExportView
@admin.register(Event)
......@@ -26,7 +26,8 @@ class EventAdmin(admin.ModelAdmin):
urls = super().get_urls()
custom_urls = [
path('<slug:slug>/status/', self.admin_site.admin_view(EventStatusView.as_view()), name="event_status"),
path('<slug:event_slug>/ak-csv-export/', self.admin_site.admin_view(AKCSVExportView.as_view()), name="ak_csv_export")
path('<slug:event_slug>/ak-csv-export/', self.admin_site.admin_view(AKCSVExportView.as_view()), name="ak_csv_export"),
path('<slug:event_slug>/ak-wiki-export/', self.admin_site.admin_view(AKWikiExportView.as_view()), name="ak_wiki_export"),
]
return custom_urls + urls
......
......@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-28 22:17+0000\n"
"POT-Creation-Date: 2020-09-29 22:27+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,24 +11,24 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: AKModel/admin.py:35 AKModel/admin.py:36
#: AKModel/admin.py:36 AKModel/admin.py:37
#: AKModel/templates/admin/AKModel/status.html:7
msgid "Status"
msgstr "Status"
#: AKModel/admin.py:114
#: AKModel/admin.py:115
msgid "Wish"
msgstr "AK-Wunsch"
#: AKModel/admin.py:120
#: AKModel/admin.py:121
msgid "Is wish"
msgstr "Ist ein Wunsch"
#: AKModel/admin.py:121
#: AKModel/admin.py:122
msgid "Is not a wish"
msgstr "Ist kein Wunsch"
#: AKModel/admin.py:148
#: AKModel/admin.py:149
msgid "Export to wiki syntax"
msgstr "In Wiki-Syntax exportieren"
......@@ -56,15 +56,15 @@ msgstr "Die eingegebene Verfügbarkeit enthält ein ungültiges Datum."
msgid "Please fill in your availabilities!"
msgstr "Bitte Verfügbarkeiten eintragen!"
#: AKModel/availability/models.py:38 AKModel/models.py:44 AKModel/models.py:73
#: AKModel/models.py:125 AKModel/models.py:144 AKModel/models.py:176
#: AKModel/models.py:230 AKModel/models.py:276 AKModel/models.py:306
#: AKModel/availability/models.py:38 AKModel/models.py:45 AKModel/models.py:74
#: AKModel/models.py:126 AKModel/models.py:145 AKModel/models.py:177
#: AKModel/models.py:231 AKModel/models.py:277 AKModel/models.py:307
msgid "Event"
msgstr "Event"
#: AKModel/availability/models.py:39 AKModel/models.py:74 AKModel/models.py:126
#: AKModel/models.py:145 AKModel/models.py:177 AKModel/models.py:231
#: AKModel/models.py:277 AKModel/models.py:307
#: AKModel/availability/models.py:39 AKModel/models.py:75 AKModel/models.py:127
#: AKModel/models.py:146 AKModel/models.py:178 AKModel/models.py:232
#: AKModel/models.py:278 AKModel/models.py:308
msgid "Associated event"
msgstr "Zugehöriges Event"
......@@ -76,8 +76,8 @@ msgstr "Person"
msgid "Person whose availability this is"
msgstr "Person deren Verfügbarkeit hier abgebildet wird"
#: AKModel/availability/models.py:56 AKModel/models.py:280
#: AKModel/models.py:299
#: AKModel/availability/models.py:56 AKModel/models.py:281
#: AKModel/models.py:300
msgid "Room"
msgstr "Raum"
......@@ -85,8 +85,8 @@ msgstr "Raum"
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:348
#: AKModel/availability/models.py:65 AKModel/models.py:237
#: AKModel/models.py:299 AKModel/models.py:349
msgid "AK"
msgstr "AK"
......@@ -94,7 +94,7 @@ msgstr "AK"
msgid "AK whose availability this is"
msgstr "Verfügbarkeiten"
#: AKModel/availability/models.py:74 AKModel/models.py:129
#: AKModel/availability/models.py:74 AKModel/models.py:130
msgid "AK Category"
msgstr "AK Kategorie"
......@@ -106,9 +106,9 @@ msgstr "AK Kategorie dessen Verfügbarkeit hier abgebildet wird"
msgid "Availabilities"
msgstr "Verfügbarkeiten"
#: AKModel/models.py:16 AKModel/models.py:120 AKModel/models.py:141
#: AKModel/models.py:160 AKModel/models.py:174 AKModel/models.py:192
#: AKModel/models.py:269
#: AKModel/models.py:16 AKModel/models.py:121 AKModel/models.py:142
#: AKModel/models.py:161 AKModel/models.py:175 AKModel/models.py:193
#: AKModel/models.py:270
msgid "Name"
msgstr "Name"
......@@ -191,18 +191,22 @@ msgid "Prefix for wiki link construction"
msgstr "Prefix für die automatische Generierung von Wiki-Links"
#: AKModel/models.py:36
msgid "Wiki Export Template Name"
msgstr "Wiki-Export Templatename"
#: AKModel/models.py:37
msgid "Default Slot Length"
msgstr "Standardslotlänge"
#: AKModel/models.py:37
#: AKModel/models.py:38
msgid "Default length in hours that is assumed for AKs in this event."
msgstr "Standardlänge von Slots (in Stunden) für dieses Event"
#: AKModel/models.py:39
#: AKModel/models.py:40
msgid "Contact email address"
msgstr "E-Mail Kontaktadresse"
#: AKModel/models.py:41
#: AKModel/models.py:42
msgid ""
"An email address that is displayed on every page and can be used for all "
"kinds of questions"
......@@ -210,216 +214,216 @@ msgstr ""
"Eine Mailadresse die auf jeder Seite angezeigt wird und für alle Arten von "
"Fragen genutzt werden kann"
#: AKModel/models.py:45
#: AKModel/models.py:46
msgid "Events"
msgstr "Events"
#: AKModel/models.py:68
#: AKModel/models.py:69
msgid "Nickname"
msgstr "Spitzname"
#: AKModel/models.py:68
#: AKModel/models.py:69
msgid "Name to identify an AK owner by"
msgstr "Name durch den eine AK Leitung identifiziert wird"
#: AKModel/models.py:69
#: AKModel/models.py:70
msgid "Slug"
msgstr "Slug"
#: AKModel/models.py:69
#: AKModel/models.py:70
msgid "Slug for URL generation"
msgstr "Slug für URL-Generierung"
#: AKModel/models.py:70
#: AKModel/models.py:71
msgid "Institution"
msgstr "Instutution"
#: AKModel/models.py:70
#: AKModel/models.py:71
msgid "Uni etc."
msgstr "Universität o.ä."
#: AKModel/models.py:71 AKModel/models.py:201
#: AKModel/models.py:72 AKModel/models.py:202
msgid "Web Link"
msgstr "Internet Link"
#: AKModel/models.py:71
#: AKModel/models.py:72
msgid "Link to Homepage"
msgstr "Link zu Homepage oder Webseite"
#: AKModel/models.py:77
#: AKModel/models.py:78
msgid "AK Owner"
msgstr "AK Leitung"
#: AKModel/models.py:78
#: AKModel/models.py:79
msgid "AK Owners"
msgstr "AK Leitungen"
#: AKModel/models.py:120
#: AKModel/models.py:121
msgid "Name of the AK Category"
msgstr "Name des AK Kategorie"
#: AKModel/models.py:121 AKModel/models.py:142
#: AKModel/models.py:122 AKModel/models.py:143
msgid "Color"
msgstr "Farbe"
#: AKModel/models.py:121 AKModel/models.py:142
#: AKModel/models.py:122 AKModel/models.py:143
msgid "Color for displaying"
msgstr "Farbe für die Anzeige"
#: AKModel/models.py:122 AKModel/models.py:195
#: AKModel/models.py:123 AKModel/models.py:196
msgid "Description"
msgstr "Beschreibung"
#: AKModel/models.py:123
#: AKModel/models.py:124
msgid "Short description of this AK Category"
msgstr "Beschreibung der AK-Kategorie"
#: AKModel/models.py:130
#: AKModel/models.py:131
msgid "AK Categories"
msgstr "AK Kategorien"
#: AKModel/models.py:141
#: AKModel/models.py:142
msgid "Name of the AK Track"
msgstr "Name des AK Tracks"
#: AKModel/models.py:148
#: AKModel/models.py:149
msgid "AK Track"
msgstr "AK Track"
#: AKModel/models.py:149
#: AKModel/models.py:150
msgid "AK Tracks"
msgstr "AK Tracks"
#: AKModel/models.py:160
#: AKModel/models.py:161
msgid "Name of the AK Tag"
msgstr "Name das AK Tags"
#: AKModel/models.py:163
#: AKModel/models.py:164
msgid "AK Tag"
msgstr "AK Tag"
#: AKModel/models.py:164
#: AKModel/models.py:165
msgid "AK Tags"
msgstr "AK Tags"
#: AKModel/models.py:174
#: AKModel/models.py:175
msgid "Name of the Requirement"
msgstr "Name der Anforderung"
#: AKModel/models.py:180
#: AKModel/models.py:181
msgid "AK Requirement"
msgstr "AK Anforderung"
#: AKModel/models.py:181
#: AKModel/models.py:182
msgid "AK Requirements"
msgstr "AK Anforderungen"
#: AKModel/models.py:192
#: AKModel/models.py:193
msgid "Name of the AK"
msgstr "Name des AKs"
#: AKModel/models.py:193
#: AKModel/models.py:194
msgid "Short Name"
msgstr "Kurzer Name"
#: AKModel/models.py:194
#: AKModel/models.py:195
msgid "Name displayed in the schedule"
msgstr "Name zur Anzeige im AK Plan"
#: AKModel/models.py:195
#: AKModel/models.py:196
msgid "Description of the AK"
msgstr "Beschreibung des AKs"
#: AKModel/models.py:197
#: AKModel/models.py:198
msgid "Owners"
msgstr "Leitungen"
#: AKModel/models.py:198
#: AKModel/models.py:199
msgid "Those organizing the AK"
msgstr "Menschen, die den AK organisieren und halten"
#: AKModel/models.py:201
#: AKModel/models.py:202
msgid "Link to wiki page"
msgstr "Link zur Wiki Seite"
#: AKModel/models.py:202
#: AKModel/models.py:203
msgid "Protocol Link"
msgstr "Protokolllink"
#: AKModel/models.py:202
#: AKModel/models.py:203
msgid "Link to protocol"
msgstr "Link zum Protokoll"
#: AKModel/models.py:204
#: AKModel/models.py:205
msgid "Category"
msgstr "Kategorie"
#: AKModel/models.py:205
#: AKModel/models.py:206
msgid "Category of the AK"
msgstr "Kategorie des AKs"
#: AKModel/models.py:206
#: AKModel/models.py:207
msgid "Tags"
msgstr "Tags"
#: AKModel/models.py:206
#: AKModel/models.py:207
msgid "Tags provided by owners"
msgstr "Tags, die durch die AK Leitung vergeben wurden"
#: AKModel/models.py:207
#: AKModel/models.py:208
msgid "Track"
msgstr "Track"
#: AKModel/models.py:208
#: AKModel/models.py:209
msgid "Track the AK belongs to"
msgstr "Track zu dem der AK gehört"
#: AKModel/models.py:210
#: AKModel/models.py:211
msgid "Resolution Intention"
msgstr "Resolutionsabsicht"
#: AKModel/models.py:211
#: AKModel/models.py:212
msgid "Intends to submit a resolution"
msgstr "Beabsichtigt eine Resolution einzureichen"
#: AKModel/models.py:212
#: AKModel/models.py:213
msgid "Present this AK"
msgstr "AK Präsentieren"
#: AKModel/models.py:213
#: AKModel/models.py:214
msgid "Present results of this AK"
msgstr "Die Ergebnisse dieses AKs vorstellen"
#: AKModel/models.py:215 AKModel/templates/admin/AKModel/status.html:76
#: AKModel/models.py:216 AKModel/templates/admin/AKModel/status.html:79
msgid "Requirements"
msgstr "Anforderungen"
#: AKModel/models.py:216
#: AKModel/models.py:217
msgid "AK's Requirements"
msgstr "Anforderungen des AKs"
#: AKModel/models.py:218
#: AKModel/models.py:219
msgid "Conflicting AKs"
msgstr "AK Konflikte"
#: AKModel/models.py:219
#: AKModel/models.py:220
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"
#: AKModel/models.py:220
#: AKModel/models.py:221
msgid "Prerequisite AKs"
msgstr "Vorausgesetzte AKs"
#: AKModel/models.py:221
#: AKModel/models.py:222
msgid "AKs that should precede this AK in the schedule"
msgstr "AKS die im AK Plan vor diesem AK stattfinden müssen"
#: AKModel/models.py:223
#: AKModel/models.py:224
msgid "Organizational Notes"
msgstr "Notizen zur Organisation"
#: AKModel/models.py:224
#: AKModel/models.py:225
msgid ""
"Notes to organizers. These are public. For private notes, please send an e-"
"mail."
......@@ -427,119 +431,119 @@ msgstr ""
"Notizen an die Organisator*innen. Diese sind öffentlich, für private "
"Anmerkungen bitte eine E-Mail schicken."
#: AKModel/models.py:226
#: AKModel/models.py:227
msgid "Interest"
msgstr "Interesse"
#: AKModel/models.py:226
#: AKModel/models.py:227
msgid "Expected number of people"
msgstr "Erwartete Personenzahl"
#: AKModel/models.py:227
#: AKModel/models.py:228
msgid "Interest Counter"
msgstr "Interessenszähler"
#: AKModel/models.py:228
#: AKModel/models.py:229
msgid "People who have indicated interest online"
msgstr "Anzahl Personen, die online Interesse bekundet haben"
#: AKModel/models.py:237 AKModel/templates/admin/AKModel/status.html:47
#: AKModel/templates/admin/AKModel/status.html:54
#: AKModel/models.py:238 AKModel/templates/admin/AKModel/status.html:49
#: AKModel/templates/admin/AKModel/status.html:56
msgid "AKs"
msgstr "AKs"
#: AKModel/models.py:269
#: AKModel/models.py:270
msgid "Name or number of the room"
msgstr "Name oder Nummer des Raums"
#: AKModel/models.py:270
#: AKModel/models.py:271
msgid "Location"
msgstr "Ort"
#: AKModel/models.py:271
#: AKModel/models.py:272
msgid "Name or number of the location"
msgstr "Name oder Nummer des Ortes"
#: AKModel/models.py:272
#: AKModel/models.py:273
msgid "Capacity"
msgstr "Kapazität"
#: AKModel/models.py:272
#: AKModel/models.py:273
msgid "Maximum number of people"
msgstr "Maximale Personenzahl"
#: AKModel/models.py:273
#: AKModel/models.py:274
msgid "Properties"
msgstr "Eigenschaften"
#: AKModel/models.py:274
#: AKModel/models.py:275
msgid "AK requirements fulfilled by the room"
msgstr "AK Anforderungen, die dieser Raum erfüllt"
#: AKModel/models.py:281 AKModel/templates/admin/AKModel/status.html:31
#: AKModel/models.py:282 AKModel/templates/admin/AKModel/status.html:33
msgid "Rooms"
msgstr "Räume"
#: AKModel/models.py:298
#: AKModel/models.py:299
msgid "AK being mapped"
msgstr "AK, der zugeordnet wird"
#: AKModel/models.py:300
#: AKModel/models.py:301
msgid "Room the AK will take place in"
msgstr "Raum in dem der AK stattfindet"
#: AKModel/models.py:301
#: AKModel/models.py:302
msgid "Slot Begin"
msgstr "Beginn des Slots"
#: AKModel/models.py:301
#: AKModel/models.py:302
msgid "Time and date the slot begins"
msgstr "Zeit und Datum zu der der AK beginnt"
#: AKModel/models.py:303
#: AKModel/models.py:304
msgid "Duration"
msgstr "Dauer"
#: AKModel/models.py:304
#: AKModel/models.py:305
msgid "Length in hours"
msgstr "Länge in Stunden"
#: AKModel/models.py:309
#: AKModel/models.py:310
msgid "Last update"
msgstr "Letzte Aktualisierung"
#: AKModel/models.py:312
#: AKModel/models.py:313
msgid "AK Slot"
msgstr "AK Slot"
#: AKModel/models.py:313
#: AKModel/models.py:314
msgid "AK Slots"
msgstr "AK Slot"
#: AKModel/models.py:327
#: AKModel/models.py:328
msgid "Not scheduled yet"
msgstr "Noch nicht geplant"
#: AKModel/models.py:348
#: AKModel/models.py:349
#, 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
#: AKModel/models.py:350
msgid "Message text"
msgstr "Nachrichtentext"
#: AKModel/models.py:349
#: AKModel/models.py:350
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
#: AKModel/models.py:354
msgid "AK Orga Message"
msgstr "AK-Organachricht"
#: AKModel/models.py:354
#: AKModel/models.py:355
msgid "AK Orga Messages"
msgstr "AK-Organachrichten"
......@@ -564,54 +568,62 @@ msgstr ""
msgid "Logout"
msgstr "Ausloggen"
#: AKModel/templates/admin/AKModel/status.html:14
#: AKModel/templates/admin/AKModel/status.html:16
#, fuzzy
#| msgid "AK Categories"
msgid "Categories"
msgstr "AK Kategorien"
#: AKModel/templates/admin/AKModel/status.html:16
#: AKModel/templates/admin/AKModel/status.html:18
#, fuzzy
#| msgid "No categories yet"
msgid "No categroies yet"
msgstr "Bisher keine Kategorien"
#: AKModel/templates/admin/AKModel/status.html:29
#: AKModel/templates/admin/AKModel/status.html:31
msgid "Add category"
msgstr "Kategorie hinzufügen"
#: AKModel/templates/admin/AKModel/status.html:33
#: AKModel/templates/admin/AKModel/status.html:35
msgid "No rooms yet"
msgstr "Bisher keine Räume"
#: AKModel/templates/admin/AKModel/status.html:45
#: AKModel/templates/admin/AKModel/status.html:47
msgid "Add Room"
msgstr "Raum hinzufügen"
#: AKModel/templates/admin/AKModel/status.html:49
#: AKModel/templates/admin/AKModel/status.html:51
msgid "No AKs yet"
msgstr "Bisher keine AKs"
#: AKModel/templates/admin/AKModel/status.html:57
#: AKModel/templates/admin/AKModel/status.html:59
msgid "Slots"
msgstr "Slots"
#: AKModel/templates/admin/AKModel/status.html:60
#: AKModel/templates/admin/AKModel/status.html:62
msgid "Unscheduled Slots"
msgstr "Ungeplante Slots"
#: AKModel/templates/admin/AKModel/status.html:73
#: AKModel/templates/admin/AKModel/status.html:75
msgid "Export AKs as CSV"
msgstr "AKs als CSV exportieren"
#: AKModel/templates/admin/AKModel/status.html:78
#: AKModel/templates/admin/AKModel/status.html:76
msgid "Export AKs for Wiki"
msgstr "AKs im Wiki-Format exportieren"
#: AKModel/templates/admin/AKModel/status.html:81
msgid "No requirements yet"
msgstr "Bisher keine Anforderungen"
#: AKModel/templates/admin/AKModel/status.html:91
#: AKModel/templates/admin/AKModel/status.html:94
msgid "Add Requirement"
msgstr "Anforderungen hinzufügen"
#: AKModel/templates/admin/AKModel/status.html:97
msgid "Messages"
msgstr "Nachrichten"
#: AKModel/templates/admin/ak_index.html:7
msgid "Active Events"
msgstr "Aktive Events"
......@@ -620,9 +632,13 @@ msgstr "Aktive Events"
msgid "Event Status"
msgstr "Eventstatus"
#: AKModel/views.py:142
#: AKModel/views.py:143
msgid "AK CSV Export"
msgstr "AK CSV Export"
#: AKModel/views.py:157
msgid "AK Wiki Export"
msgstr "AK Wiki Export"
#~ msgid "Notes to organizers"
#~ msgstr "Notizen an die Organisator*innen"
# Generated by Django 3.0.6 on 2020-09-29 22:16
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('AKModel', '0038_akorgamessage'),
]
operations = [
migrations.AddField(
model_name='event',
name='wiki_export_template_name',
field=models.CharField(blank=True, max_length=50, verbose_name='Wiki Export Template Name'),
),
]
......@@ -33,6 +33,7 @@ class Event(models.Model):
default=True)
base_url = models.URLField(verbose_name=_("Base URL"), help_text=_("Prefix for wiki link construction"), blank=True)
wiki_export_template_name = models.CharField(verbose_name=_("Wiki Export Template Name"), blank=True, max_length=50)
default_slot = models.DecimalField(max_digits=4, decimal_places=2, default=2, verbose_name=_('Default Slot Length'),
help_text=_('Default length in hours that is assumed for AKs in this event.'))
......
......@@ -73,6 +73,7 @@
</table>
<a class="btn btn-success" href="{% url 'admin:ak_csv_export' event_slug=event.slug %}">{% trans "Export AKs as CSV" %}</a>
<a class="btn btn-success" href="{% url 'admin:ak_wiki_export' event_slug=event.slug %}">{% trans "Export AKs for Wiki" %}</a>
{% endif %}
<h3 class="block-header">{% trans "Requirements" %}</h3>
......
{% extends "admin/base_site.html" %}
{% block content %}
<pre>
{% for ak in AKs %}
{% verbatim %}{{Ak Spalte 480{% endverbatim %}
{% regroup AKs by category as ak_list %}
{% for category_aks in ak_list %}
<h3>{{ category_aks.grouper }}</h3>
<textarea style="width: 100%;height:30vh;">{% for ak in category_aks.list %}
{% verbatim %}{{{% endverbatim %}
{{ ak.event.wiki_export_template_name }}
| name={{ ak.name }}
| beschreibung= {{ ak.description }}
| wieviele={{ ak.interest_counter }}
......@@ -13,6 +18,7 @@
| reso={{ ak.reso }}
| vorstellung={{ ak.present }}
{% verbatim %}}}{% endverbatim %}
{% endfor %}</textarea>
{% endfor %}
</pre>
{% endblock %}
......@@ -148,3 +148,13 @@ class AKCSVExportView(AdminViewMixin, FilterByEventSlugMixin, ListView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
return context
class AKWikiExportView(AdminViewMixin, FilterByEventSlugMixin, ListView):
template_name = "admin/AKModel/wiki_export.html"
model = AK
context_object_name = "AKs"
title = _("AK Wiki Export")
def get_queryset(self):
return super().get_queryset().order_by("category")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment