Skip to content
Snippets Groups Projects
Commit 86cac36c authored by Benjamin Hättasch's avatar Benjamin Hättasch
Browse files

Implement overview of AKs belonging to requirements (admin view)

Add new view
Link on status page
parent a9592824
No related branches found
No related tags found
No related merge requests found
......@@ -16,7 +16,7 @@ from AKModel.availability.forms import AvailabilitiesFormMixin
from AKModel.availability.models import Availability
from AKModel.models import Event, AKOwner, AKCategory, AKTrack, AKTag, AKRequirement, AK, AKSlot, Room, AKOrgaMessage, \
ConstraintViolation
from AKModel.views import EventStatusView, AKCSVExportView, AKWikiExportView, AKMessageDeleteView
from AKModel.views import EventStatusView, AKCSVExportView, AKWikiExportView, AKMessageDeleteView, AKRequirementOverview
@admin.register(Event)
......@@ -31,6 +31,7 @@ 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>/requirements/', self.admin_site.admin_view(AKRequirementOverview.as_view()), name="event_requirement_overview"),
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"),
path('<slug:slug>/delete-orga-messages/', self.admin_site.admin_view(AKMessageDeleteView.as_view()),
......
......@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-03 20:41+0000\n"
"POT-Creation-Date: 2021-04-29 17:43+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,28 +11,33 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: AKModel/admin.py:41 AKModel/admin.py:42
#: AKModel/admin.py:44 AKModel/admin.py:45
#: AKModel/templates/admin/AKModel/requirements_overview.html:8
#: AKModel/templates/admin/AKModel/status.html:7
#: AKModel/templates/admin/ak_index.html:15
msgid "Status"
msgstr "Status"
#: AKModel/admin.py:120
#: AKModel/admin.py:123
msgid "Wish"
msgstr "AK-Wunsch"
#: AKModel/admin.py:126
#: AKModel/admin.py:129
msgid "Is wish"
msgstr "Ist ein Wunsch"
#: AKModel/admin.py:127
#: AKModel/admin.py:130
msgid "Is not a wish"
msgstr "Ist kein Wunsch"
#: AKModel/admin.py:154
#: AKModel/admin.py:157
msgid "Export to wiki syntax"
msgstr "In Wiki-Syntax exportieren"
#: AKModel/admin.py:253
msgid "AK Details"
msgstr "AK-Details"
#: AKModel/availability/forms.py:20 AKModel/availability/models.py:239
msgid "Availability"
msgstr "Verfügbarkeit"
......@@ -60,13 +65,13 @@ msgstr "Bitte Verfügbarkeiten eintragen!"
#: AKModel/availability/models.py:38 AKModel/models.py:47 AKModel/models.py:76
#: AKModel/models.py:128 AKModel/models.py:147 AKModel/models.py:179
#: AKModel/models.py:233 AKModel/models.py:292 AKModel/models.py:324
#: AKModel/models.py:410
#: AKModel/models.py:431
msgid "Event"
msgstr "Event"
#: AKModel/availability/models.py:39 AKModel/models.py:77 AKModel/models.py:129
#: AKModel/models.py:148 AKModel/models.py:180 AKModel/models.py:234
#: AKModel/models.py:293 AKModel/models.py:325 AKModel/models.py:411
#: AKModel/models.py:293 AKModel/models.py:325 AKModel/models.py:432
msgid "Associated event"
msgstr "Zugehöriges Event"
......@@ -79,7 +84,7 @@ msgid "Person whose availability this is"
msgstr "Person deren Verfügbarkeit hier abgebildet wird"
#: AKModel/availability/models.py:56 AKModel/models.py:296
#: AKModel/models.py:315 AKModel/models.py:419
#: AKModel/models.py:315 AKModel/models.py:440
msgid "Room"
msgstr "Raum"
......@@ -88,7 +93,7 @@ msgid "Room whose availability this is"
msgstr "Raum dessen Verfügbarkeit hier abgebildet wird"
#: AKModel/availability/models.py:65 AKModel/models.py:239
#: AKModel/models.py:314 AKModel/models.py:366
#: AKModel/models.py:314 AKModel/models.py:387
msgid "AK"
msgstr "AK"
......@@ -97,7 +102,7 @@ msgid "AK whose availability this is"
msgstr "Verfügbarkeiten"
#: AKModel/availability/models.py:74 AKModel/models.py:132
#: AKModel/models.py:425
#: AKModel/models.py:446
msgid "AK Category"
msgstr "AK-Kategorie"
......@@ -261,7 +266,7 @@ msgstr "Internet Link"
msgid "Link to Homepage"
msgstr "Link zu Homepage oder Webseite"
#: AKModel/models.py:80 AKModel/models.py:418
#: AKModel/models.py:80 AKModel/models.py:439
msgid "AK Owner"
msgstr "AK-Leitung"
......@@ -321,7 +326,7 @@ msgstr "AK-Tags"
msgid "Name of the Requirement"
msgstr "Name der Anforderung"
#: AKModel/models.py:183 AKModel/models.py:422
#: AKModel/models.py:183 AKModel/models.py:443
msgid "AK Requirement"
msgstr "AK-Anforderung"
......@@ -458,7 +463,7 @@ msgstr "Interessenszähler"
msgid "People who have indicated interest online"
msgstr "Anzahl Personen, die online Interesse bekundet haben"
#: AKModel/models.py:240 AKModel/models.py:413
#: AKModel/models.py:240 AKModel/models.py:434
#: AKModel/templates/admin/AKModel/status.html:49
#: AKModel/templates/admin/AKModel/status.html:56
msgid "AKs"
......@@ -536,163 +541,167 @@ msgstr "Letzte Aktualisierung"
msgid "AK Slot"
msgstr "AK-Slot"
#: AKModel/models.py:331 AKModel/models.py:415
#: AKModel/models.py:331 AKModel/models.py:436
msgid "AK Slots"
msgstr "AK-Slot"
#: AKModel/models.py:345
#: AKModel/models.py:353 AKModel/models.py:362
msgid "Not scheduled yet"
msgstr "Noch nicht geplant"
#: AKModel/models.py:367
#, fuzzy
#| msgid "Track the AK belongs to"
#: AKModel/models.py:388
msgid "AK this message belongs to"
msgstr "Track zu dem der AK gehört"
msgstr "AK zu dem die Nachricht gehört"
#: AKModel/models.py:368
#: AKModel/models.py:389
msgid "Message text"
msgstr "Nachrichtentext"
#: AKModel/models.py:369
#: AKModel/models.py:390
msgid "Message to the organizers. This is not publicly visible."
msgstr ""
"Nachricht an die Organisator*innen. Diese ist nicht öffentlich sichtbar."
#: AKModel/models.py:373
#: AKModel/models.py:394
msgid "AK Orga Message"
msgstr "AK-Organachricht"
#: AKModel/models.py:374
#: AKModel/models.py:395
msgid "AK Orga Messages"
msgstr "AK-Organachrichten"
#: AKModel/models.py:383
#: AKModel/models.py:404
msgid "Constraint Violation"
msgstr "Constraintverletzung"
#: AKModel/models.py:384
#: AKModel/models.py:405
msgid "Constraint Violations"
msgstr "Constraintverletzungen"
#: AKModel/models.py:388
#: AKModel/models.py:409
msgid "Owner has two parallel slots"
msgstr "Leitung hat zwei Slots parallel"
#: AKModel/models.py:389
#: AKModel/models.py:410
msgid "AK Slot was scheduled outside the AK's availabilities"
msgstr "AK Slot wurde außerhalb der Verfügbarkeit des AKs platziert"
#: AKModel/models.py:390
#: AKModel/models.py:411
msgid "Room has two AK slots scheduled at the same time"
msgstr "Raum hat AK Slots gleichzeitig"
#: AKModel/models.py:391
#: AKModel/models.py:412
msgid "Room does not satisfy the requirement of the scheduled AK"
msgstr "Room erfüllt die Anforderungen des platzierten AKs nicht"
#: AKModel/models.py:392
#: AKModel/models.py:413
msgid "AK Slot is scheduled at the same time as an AK listed as a conflict"
msgstr "AK Slot wurde wurde zur gleichen Zeit wie ein Konflikt des AKs platziert"
msgstr ""
"AK Slot wurde wurde zur gleichen Zeit wie ein Konflikt des AKs platziert"
#: AKModel/models.py:393
#: AKModel/models.py:414
msgid "AK Slot is scheduled before an AK listed as a prerequisite"
msgstr "AK Slot wurde vor einem als Voraussetzung gelisteten AK platziert"
#: AKModel/models.py:395
msgid "AK Slot for AK with intention to submit a resolution is scheduled after "
#: AKModel/models.py:416
msgid ""
"AK Slot for AK with intention to submit a resolution is scheduled after "
"resolution deadline"
msgstr "AK Slot eines AKs mit Resoabsicht wurde nach der Resodeadline platziert"
msgstr ""
"AK Slot eines AKs mit Resoabsicht wurde nach der Resodeadline platziert"
#: AKModel/models.py:396
#: AKModel/models.py:417
msgid "AK Slot in a category is outside that categories availabilities"
msgstr "AK Slot wurde außerhalb der Verfügbarkeiten seiner Kategorie"
#: AKModel/models.py:397
#: AKModel/models.py:418
msgid "Two AK Slots for the same AK scheduled at the same time"
msgstr "Zwei AK Slots eines AKs wurden zur selben Zeit platziert"
#: AKModel/models.py:398
#: AKModel/models.py:419
msgid "AK Slot is scheduled in a room with less space than interest"
msgstr "AK Slot wurde in einem Raum mit weniger Plätzen als am AK Interessierten platziert"
msgstr ""
"AK Slot wurde in einem Raum mit weniger Plätzen als am AK Interessierten "
"platziert"
#: AKModel/models.py:399
#: AKModel/models.py:420
msgid "AK Slot is scheduled outside the event's availabilities"
msgstr "AK Slot wurde außerhalb der Verfügbarkeit des Events platziert"
#: AKModel/models.py:402
#: AKModel/models.py:423
msgid "Warning"
msgstr "Warnung"
#: AKModel/models.py:403
#: AKModel/models.py:424
msgid "Violation"
msgstr "Verletzung"
#: AKModel/models.py:405
#: AKModel/models.py:426
msgid "Type"
msgstr "Art"
#: AKModel/models.py:406
#: AKModel/models.py:427
msgid "Type of violation, i.e. what kind of constraint was violated"
msgstr "Art der Verletzung, gibt an welche Art Constraint verletzt wurde"
#: AKModel/models.py:407
#: AKModel/models.py:428
msgid "Level"
msgstr "Level"
#: AKModel/models.py:408
#: AKModel/models.py:429
msgid "Severity level of the violation"
msgstr "Schweregrad der Verletzung"
#: AKModel/models.py:414
#: AKModel/models.py:435
msgid "AK(s) belonging to this constraint"
msgstr "AK(s), die zu diesem Constraint gehören"
#: AKModel/models.py:416
#: AKModel/models.py:437
msgid "AK Slot(s) belonging to this constraint"
msgstr "AK Slot(s), die zu diesem Constraint gehören"
#: AKModel/models.py:418
#: AKModel/models.py:439
msgid "AK Owner belonging to this constraint"
msgstr "AK Leitung(en), die zu diesem Constraint gehören"
#: AKModel/models.py:420
#: AKModel/models.py:441
msgid "Room belonging to this constraint"
msgstr "Raum, der zu diesem Constraint gehört"
#: AKModel/models.py:423
#: AKModel/models.py:444
msgid "AK Requirement belonging to this constraint"
msgstr "AK Anforderung, die zu diesem Constraint gehört"
#: AKModel/models.py:425
#: AKModel/models.py:446
msgid "AK Category belonging to this constraint"
msgstr "AK Kategorie, di zu diesem Constraint gehört"
#: AKModel/models.py:427
#: AKModel/models.py:448
msgid "Comment"
msgstr "Kommentar"
#: AKModel/models.py:427
#: AKModel/models.py:448
msgid "Comment or further details for this violation"
msgstr "Kommentar oder weitere Details zu dieser Vereletzung"
#: AKModel/models.py:430
#: AKModel/models.py:451
msgid "Timestamp"
msgstr "Timestamp"
#: AKModel/models.py:430
#: AKModel/models.py:451
msgid "Time of creation"
msgstr "Zeitpunkt der ERstellung"
#: AKModel/models.py:431
#: AKModel/models.py:452
msgid "Manually Resolved"
msgstr "Manuell behoben"
#: AKModel/models.py:432
#: AKModel/models.py:453
msgid "Mark this violation manually as resolved"
msgstr "Markiere diese Verletzung manuell als behoben"
#: AKModel/models.py:454
#: AKModel/models.py:475
#: AKModel/templates/admin/AKModel/requirements_overview.html:27
msgid "Details"
msgstr "Details"
......@@ -743,13 +752,28 @@ msgstr "Löschen"
msgid "Cancel"
msgstr "Abbrechen"
#: AKModel/templates/admin/AKModel/requirements_overview.html:12
msgid "Requirements Overview"
msgstr "Übersicht Anforderungen"
#: AKModel/templates/admin/AKModel/requirements_overview.html:31
msgid "Edit"
msgstr "Bearbeiten"
#: AKModel/templates/admin/AKModel/requirements_overview.html:38
msgid "No AKs with this requirement"
msgstr "Kein AK mit dieser Anforderung"
#: AKModel/templates/admin/AKModel/requirements_overview.html:45
#: AKModel/templates/admin/AKModel/status.html:99
msgid "Add Requirement"
msgstr "Anforderung hinzufügen"
#: AKModel/templates/admin/AKModel/status.html:16
msgid "Categories"
msgstr "Kategorien"
#: AKModel/templates/admin/AKModel/status.html:18
#, fuzzy
#| msgid "No categories yet"
msgid "No categories yet"
msgstr "Bisher keine Kategorien"
......@@ -795,14 +819,14 @@ msgid "No requirements yet"
msgstr "Bisher keine Anforderungen"
#: AKModel/templates/admin/AKModel/status.html:98
msgid "Add Requirement"
msgstr "Anforderungen hinzufügen"
msgid "Show AKs for requirements"
msgstr "Zu Anforderungen gehörige AKs anzeigen"
#: AKModel/templates/admin/AKModel/status.html:101
#: AKModel/templates/admin/AKModel/status.html:102
msgid "Messages"
msgstr "Nachrichten"
#: AKModel/templates/admin/AKModel/status.html:103
#: AKModel/templates/admin/AKModel/status.html:104
msgid "Delete all messages"
msgstr "Alle Nachrichten löschen"
......@@ -814,15 +838,19 @@ msgstr "Aktive Events"
msgid "Event Status"
msgstr "Eventstatus"
#: AKModel/views.py:144
#: AKModel/views.py:143
msgid "Requirements for Event"
msgstr "Anforderungen für das Event"
#: AKModel/views.py:157
msgid "AK CSV Export"
msgstr "AK-CSV-Export"
#: AKModel/views.py:158
#: AKModel/views.py:171
msgid "AK Wiki Export"
msgstr "AK-Wiki-Export"
#: AKModel/views.py:178
#: AKModel/views.py:191
msgid "AK Orga Messages successfully deleted"
msgstr "AK-Organachrichten erfolgreich gelöscht"
......
{% extends "admin/base_site.html" %}
{% load tags_AKModel %}
{% load i18n %}
{% load tz %}
{% load fontawesome_5 %}
{% block title %}{% trans "Status" %}: {{event}}{% endblock %}
{% block content %}
{% timezone event.timezone %}
<h2><a href="{% url 'admin:AKModel_event_change' event.pk %}">{{event}}</a> - {% trans "Requirements Overview" %}</h2>
<h5>{{ event.start }} - {{ event.end }}</h5>
<div class="row mt-4">
{% for requirement in requirements %}
<div class="col-md-4">
<h4>{{ requirement }}</h4>
<table class="table table-striped">
{% for ak in requirement.ak_set.all %}
<tr>
<td>{{ ak }}</td>
{% if "AKSubmission"|check_app_installed %}
<td class="text-right">
<a href="{% url 'submit:ak_detail' event_slug=ak.event.slug pk=ak.pk %}" data-toggle="tooltip"
title="{% trans 'Details' %}"
class="btn btn-primary">{% fa5_icon 'info' 'fas' %}</a>
{% if event.active %}
<a href="{% url 'submit:ak_edit' event_slug=event.slug pk=ak.pk %}" data-toggle="tooltip"
title="{% trans 'Edit' %}"
class="btn btn-success">{% fa5_icon 'pencil-alt' 'fas' %}</a>
{% endif %}
{% endif %}
</td>
</tr>
{% empty %}
<tr><td>{% trans "No AKs with this requirement" %}</td></tr>
{% endfor %}
</table>
</div>
{% endfor %}
</div>
<a class="btn btn-success" href="{% url 'admin:AKModel_akrequirement_add' %}">{% trans "Add Requirement" %}</a>
{% endtimezone %}
{% endblock %}
......@@ -95,6 +95,7 @@
{% endfor %}
</p>
{% endif %}
<a class="btn btn-success" href="{% url 'admin:event_requirement_overview' event.slug %}">{% trans "Show AKs for requirements" %}</a>
<a class="btn btn-success" href="{% url 'admin:AKModel_akrequirement_add' %}">{% trans "Add Requirement" %}</a>
</div>
<div class="col-md-4">
......
......@@ -7,7 +7,7 @@ from django.utils.translation import gettext_lazy as _
from django.views.generic import TemplateView, DetailView, ListView, DeleteView
from rest_framework import viewsets, permissions, mixins
from AKModel.models import Event, AK, AKSlot, Room, AKTrack, AKCategory, AKOwner, AKOrgaMessage
from AKModel.models import Event, AK, AKSlot, Room, AKTrack, AKCategory, AKOwner, AKOrgaMessage, AKRequirement
from AKModel.serializers import AKSerializer, AKSlotSerializer, RoomSerializer, AKTrackSerializer, AKCategorySerializer, \
AKOwnerSerializer
......@@ -137,6 +137,19 @@ class EventStatusView(AdminViewMixin, DetailView):
return context
class AKRequirementOverview(AdminViewMixin, FilterByEventSlugMixin, ListView):
model = AKRequirement
context_object_name = "requirements"
title = _("Requirements for Event")
template_name = "admin/AKModel/requirements_overview.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["event"] = self.event
context["site_url"] = reverse_lazy("dashboard:dashboard_event", kwargs={'slug': context["event"].slug})
return context
class AKCSVExportView(AdminViewMixin, FilterByEventSlugMixin, ListView):
template_name = "admin/AKModel/ak_csv_export.html"
model = AKSlot
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment