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

Make AK messages resolvable

Introduce new field
Create migration
Show in admin
Show in message tables on status page
This implements #213
parent 85f51eaf
No related branches found
No related tags found
No related merge requests found
......@@ -443,7 +443,7 @@ class AKOrgaMessageAdmin(admin.ModelAdmin):
"""
Admin interface for AKOrgaMessages
"""
list_display = ['timestamp', 'ak', 'text']
list_display = ['timestamp', 'ak', 'text', 'resolved']
list_filter = ['ak__event']
readonly_fields = ['timestamp', 'ak', 'text']
......
......@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-21 16:43+0200\n"
"POT-Creation-Date: 2024-04-24 23:45+0200\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"
......@@ -104,15 +104,15 @@ msgstr "Bitte Verfügbarkeiten eintragen!"
#: AKModel/availability/models.py:43 AKModel/models.py:60 AKModel/models.py:174
#: AKModel/models.py:251 AKModel/models.py:270 AKModel/models.py:296
#: AKModel/models.py:350 AKModel/models.py:481 AKModel/models.py:520
#: AKModel/models.py:602 AKModel/models.py:657 AKModel/models.py:848
#: AKModel/models.py:350 AKModel/models.py:492 AKModel/models.py:531
#: AKModel/models.py:621 AKModel/models.py:678 AKModel/models.py:869
msgid "Event"
msgstr "Event"
#: AKModel/availability/models.py:44 AKModel/models.py:175
#: AKModel/models.py:252 AKModel/models.py:271 AKModel/models.py:297
#: AKModel/models.py:351 AKModel/models.py:482 AKModel/models.py:521
#: AKModel/models.py:603 AKModel/models.py:658 AKModel/models.py:849
#: AKModel/models.py:351 AKModel/models.py:493 AKModel/models.py:532
#: AKModel/models.py:622 AKModel/models.py:679 AKModel/models.py:870
msgid "Associated event"
msgstr "Zugehöriges Event"
......@@ -124,8 +124,8 @@ msgstr "Person"
msgid "Person whose availability this is"
msgstr "Person deren Verfügbarkeit hier abgebildet wird"
#: AKModel/availability/models.py:61 AKModel/models.py:485
#: AKModel/models.py:510 AKModel/models.py:667
#: AKModel/availability/models.py:61 AKModel/models.py:496
#: AKModel/models.py:521 AKModel/models.py:688
msgid "Room"
msgstr "Raum"
......@@ -134,7 +134,7 @@ msgid "Room whose availability this is"
msgstr "Raum dessen Verfügbarkeit hier abgebildet wird"
#: AKModel/availability/models.py:70 AKModel/models.py:359
#: AKModel/models.py:509 AKModel/models.py:597
#: AKModel/models.py:520 AKModel/models.py:616
msgid "AK"
msgstr "AK"
......@@ -143,7 +143,7 @@ msgid "AK whose availability this is"
msgstr "Verfügbarkeiten"
#: AKModel/availability/models.py:79 AKModel/models.py:255
#: AKModel/models.py:673
#: AKModel/models.py:694
msgid "AK Category"
msgstr "AK-Kategorie"
......@@ -213,7 +213,7 @@ msgstr ""
"fürWünsche markieren, z.B. um während der Präsentation auf einem Touchscreen "
"ausgefüllt zu werden?"
#: AKModel/forms.py:189 AKModel/models.py:842
#: AKModel/forms.py:189 AKModel/models.py:863
msgid "Default Slots"
msgstr "Standardslots"
......@@ -278,7 +278,7 @@ msgid "Finish"
msgstr "Abschluss"
#: AKModel/models.py:20 AKModel/models.py:243 AKModel/models.py:267
#: AKModel/models.py:294 AKModel/models.py:312 AKModel/models.py:473
#: AKModel/models.py:294 AKModel/models.py:312 AKModel/models.py:484
msgid "Name"
msgstr "Name"
......@@ -341,8 +341,8 @@ msgid ""
"Opening time for expression of interest. When left blank, no interest "
"indication will be possible."
msgstr ""
"Öffnungszeitpunkt für die Angabe von Interesse an AKs."
"Wenn das Feld leer bleibt, wird keine Abgabe von Interesse möglich sein."
"Öffnungszeitpunkt für die Angabe von Interesse an AKs.Wenn das Feld leer "
"bleibt, wird keine Abgabe von Interesse möglich sein."
#: AKModel/models.py:38
msgid "Interest Window End"
......@@ -452,7 +452,7 @@ msgstr "Internet Link"
msgid "Link to Homepage"
msgstr "Link zu Homepage oder Webseite"
#: AKModel/models.py:178 AKModel/models.py:666
#: AKModel/models.py:178 AKModel/models.py:687
msgid "AK Owner"
msgstr "AK-Leitung"
......@@ -512,7 +512,7 @@ msgstr "AK-Tracks"
msgid "Name of the Requirement"
msgstr "Name der Anforderung"
#: AKModel/models.py:300 AKModel/models.py:670
#: AKModel/models.py:300 AKModel/models.py:691
msgid "AK Requirement"
msgstr "AK-Anforderung"
......@@ -651,263 +651,271 @@ msgstr "Export?"
msgid "Include AK in wiki export?"
msgstr "AK bei Wiki-Export berücksichtigen?"
#: AKModel/models.py:360 AKModel/models.py:661
#: AKModel/models.py:360 AKModel/models.py:682
#: AKModel/templates/admin/AKModel/status/event_aks.html:10
#: AKModel/views/manage.py:73 AKModel/views/status.py:98
msgid "AKs"
msgstr "AKs"
#: AKModel/models.py:473
#: AKModel/models.py:484
msgid "Name or number of the room"
msgstr "Name oder Nummer des Raums"
#: AKModel/models.py:474
#: AKModel/models.py:485
msgid "Location"
msgstr "Ort"
#: AKModel/models.py:475
#: AKModel/models.py:486
msgid "Name or number of the location"
msgstr "Name oder Nummer des Ortes"
#: AKModel/models.py:476
#: AKModel/models.py:487
msgid "Capacity"
msgstr "Kapazität"
#: AKModel/models.py:477
#: AKModel/models.py:488
msgid "Maximum number of people (-1 for unlimited)."
msgstr "Maximale Personenzahl (-1 wenn unbeschränkt)."
#: AKModel/models.py:478
#: AKModel/models.py:489
msgid "Properties"
msgstr "Eigenschaften"
#: AKModel/models.py:479
#: AKModel/models.py:490
msgid "AK requirements fulfilled by the room"
msgstr "AK-Anforderungen, die dieser Raum erfüllt"
#: AKModel/models.py:486 AKModel/views/status.py:60
#: AKModel/models.py:497 AKModel/views/status.py:60
msgid "Rooms"
msgstr "Räume"
#: AKModel/models.py:509
#: AKModel/models.py:520
msgid "AK being mapped"
msgstr "AK, der zugeordnet wird"
#: AKModel/models.py:511
#: AKModel/models.py:522
msgid "Room the AK will take place in"
msgstr "Raum in dem der AK stattfindet"
#: AKModel/models.py:512 AKModel/models.py:845
#: AKModel/models.py:523 AKModel/models.py:866
msgid "Slot Begin"
msgstr "Beginn des Slots"
#: AKModel/models.py:512 AKModel/models.py:845
#: AKModel/models.py:523 AKModel/models.py:866
msgid "Time and date the slot begins"
msgstr "Zeit und Datum zu der der AK beginnt"
#: AKModel/models.py:514
#: AKModel/models.py:525
msgid "Duration"
msgstr "Dauer"
#: AKModel/models.py:515
#: AKModel/models.py:526
msgid "Length in hours"
msgstr "Länge in Stunden"
#: AKModel/models.py:517
#: AKModel/models.py:528
msgid "Scheduling fixed"
msgstr "Planung fix"
#: AKModel/models.py:518
#: AKModel/models.py:529
msgid "Length and time of this AK should not be changed"
msgstr "Dauer und Zeit dieses AKs sollten nicht verändert werden"
#: AKModel/models.py:523
#: AKModel/models.py:534
msgid "Last update"
msgstr "Letzte Aktualisierung"
#: AKModel/models.py:526
#: AKModel/models.py:537
msgid "AK Slot"
msgstr "AK-Slot"
#: AKModel/models.py:527 AKModel/models.py:663
#: AKModel/models.py:538 AKModel/models.py:684
msgid "AK Slots"
msgstr "AK-Slot"
#: AKModel/models.py:549 AKModel/models.py:558
#: AKModel/models.py:560 AKModel/models.py:569
msgid "Not scheduled yet"
msgstr "Noch nicht geplant"
#: AKModel/models.py:598
#: AKModel/models.py:617
msgid "AK this message belongs to"
msgstr "AK zu dem die Nachricht gehört"
#: AKModel/models.py:599
#: AKModel/models.py:618
msgid "Message text"
msgstr "Nachrichtentext"
#: AKModel/models.py:600
#: AKModel/models.py:619
msgid "Message to the organizers. This is not publicly visible."
msgstr ""
"Nachricht an die Organisator*innen. Diese ist nicht öffentlich sichtbar."
#: AKModel/models.py:606
#: AKModel/models.py:623
msgid "Resolved"
msgstr "Erledigt"
#: AKModel/models.py:624
msgid "This message has been resolved (no further action needed)"
msgstr "Diese Nachricht wurde vollständig bearbeitet (keine weiteren Aktionen notwendig"
#: AKModel/models.py:627
msgid "AK Orga Message"
msgstr "AK-Organachricht"
#: AKModel/models.py:607
#: AKModel/models.py:628
msgid "AK Orga Messages"
msgstr "AK-Organachrichten"
#: AKModel/models.py:624
#: AKModel/models.py:645
msgid "Constraint Violation"
msgstr "Constraintverletzung"
#: AKModel/models.py:625 AKModel/views/status.py:117
#: AKModel/models.py:646 AKModel/views/status.py:117
msgid "Constraint Violations"
msgstr "Constraintverletzungen"
#: AKModel/models.py:632
#: AKModel/models.py:653
msgid "Owner has two parallel slots"
msgstr "Leitung hat zwei Slots parallel"
#: AKModel/models.py:633
#: AKModel/models.py:654
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:634
#: AKModel/models.py:655
msgid "Room has two AK slots scheduled at the same time"
msgstr "Raum hat zwei AK Slots gleichzeitig"
#: AKModel/models.py:635
#: AKModel/models.py:656
msgid "Room does not satisfy the requirement of the scheduled AK"
msgstr "Room erfüllt die Anforderungen des platzierten AKs nicht"
#: AKModel/models.py:636
#: AKModel/models.py:657
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"
#: AKModel/models.py:637
#: AKModel/models.py:658
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:639
#: AKModel/models.py:660
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"
#: AKModel/models.py:640
#: AKModel/models.py:661
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:641
#: AKModel/models.py:662
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:642
#: AKModel/models.py:663
msgid "Room does not have enough space for interest in scheduled AK Slot"
msgstr "Room hat nicht genug Platz für das Interesse am geplanten AK-Slot"
#: AKModel/models.py:643
#: AKModel/models.py:664
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:649
#: AKModel/models.py:670
msgid "Warning"
msgstr "Warnung"
#: AKModel/models.py:650
#: AKModel/models.py:671
msgid "Violation"
msgstr "Verletzung"
#: AKModel/models.py:652
#: AKModel/models.py:673
msgid "Type"
msgstr "Art"
#: AKModel/models.py:653
#: AKModel/models.py:674
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:654
#: AKModel/models.py:675
msgid "Level"
msgstr "Level"
#: AKModel/models.py:655
#: AKModel/models.py:676
msgid "Severity level of the violation"
msgstr "Schweregrad der Verletzung"
#: AKModel/models.py:662
#: AKModel/models.py:683
msgid "AK(s) belonging to this constraint"
msgstr "AK(s), die zu diesem Constraint gehören"
#: AKModel/models.py:664
#: AKModel/models.py:685
msgid "AK Slot(s) belonging to this constraint"
msgstr "AK Slot(s), die zu diesem Constraint gehören"
#: AKModel/models.py:666
#: AKModel/models.py:687
msgid "AK Owner belonging to this constraint"
msgstr "AK Leitung(en), die zu diesem Constraint gehören"
#: AKModel/models.py:668
#: AKModel/models.py:689
msgid "Room belonging to this constraint"
msgstr "Raum, der zu diesem Constraint gehört"
#: AKModel/models.py:671
#: AKModel/models.py:692
msgid "AK Requirement belonging to this constraint"
msgstr "AK Anforderung, die zu diesem Constraint gehört"
#: AKModel/models.py:673
#: AKModel/models.py:694
msgid "AK Category belonging to this constraint"
msgstr "AK Kategorie, di zu diesem Constraint gehört"
#: AKModel/models.py:675
#: AKModel/models.py:696
msgid "Comment"
msgstr "Kommentar"
#: AKModel/models.py:675
#: AKModel/models.py:696
msgid "Comment or further details for this violation"
msgstr "Kommentar oder weitere Details zu dieser Vereletzung"
#: AKModel/models.py:678
#: AKModel/models.py:699
msgid "Timestamp"
msgstr "Timestamp"
#: AKModel/models.py:678
#: AKModel/models.py:699
msgid "Time of creation"
msgstr "Zeitpunkt der ERstellung"
#: AKModel/models.py:679
#: AKModel/models.py:700
msgid "Manually Resolved"
msgstr "Manuell behoben"
#: AKModel/models.py:680
#: AKModel/models.py:701
msgid "Mark this violation manually as resolved"
msgstr "Markiere diese Verletzung manuell als behoben"
#: AKModel/models.py:707
#: AKModel/models.py:728
#: AKModel/templates/admin/AKModel/requirements_overview.html:27
msgid "Details"
msgstr "Details"
#: AKModel/models.py:841
#: AKModel/models.py:862
msgid "Default Slot"
msgstr "Standardslot"
#: AKModel/models.py:846
#: AKModel/models.py:867
msgid "Slot End"
msgstr "Ende des Slots"
#: AKModel/models.py:846
#: AKModel/models.py:867
msgid "Time and date the slot ends"
msgstr "Zeit und Datum zu der der Slot endet"
#: AKModel/models.py:851
#: AKModel/models.py:872
msgid "Primary categories"
msgstr "Primäre Kategorien"
#: AKModel/models.py:852
#: AKModel/models.py:873
msgid "Categories that should be assigned to this slot primarily"
msgstr "Kategorieren, die diesem Slot primär zugewiesen werden sollen"
......
# Generated by Django 4.2.11 on 2024-04-24 21:39
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('AKModel', '0059_interest_default'),
]
operations = [
migrations.AddField(
model_name='akorgamessage',
name='resolved',
field=models.BooleanField(default=False, help_text='This message has been resolved (no further action needed)', verbose_name='Resolved'),
),
]
......@@ -620,6 +620,8 @@ class AKOrgaMessage(models.Model):
timestamp = models.DateTimeField(auto_now_add=True)
event = models.ForeignKey(to=Event, on_delete=models.CASCADE, verbose_name=_('Event'),
help_text=_('Associated event'))
resolved = models.BooleanField(verbose_name=_('Resolved'), default=False,
help_text=_('This message has been resolved (no further action needed)'))
class Meta:
verbose_name = _('AK Orga Message')
......
{% load tz %}
{% load fontawesome_6 %}
{% timezone event.timezone %}
<table class="table table-striped">
......@@ -7,7 +8,10 @@
<span class="text-secondary float-end">
{{ message.timestamp|date:"Y-m-d H:i:s" }}
</span>
<h5><a href="{{ message.ak.detail_url }}">{{ message.ak }}</a></h5>
<h5><a href="{{ message.ak.detail_url }}">
{% if message.resolved %}{% fa6_icon "check-circle" %} {% endif %}
{{ message.ak }}
</a></h5>
<p>{{ message.text }}</p>
</td></tr>
{% endfor %}
......
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