Skip to content
Snippets Groups Projects
Commit 7b9a9bf5 authored by Nadja Geisler's avatar Nadja Geisler :sunny:
Browse files

Merge branch '520-akowner' into 'main'

Introduce and link admin view to show all AKs by a given owner

Closes #207

See merge request !221
parents b3a634fd 58f8d8fe
No related branches found
No related tags found
No related merge requests found
......@@ -159,10 +159,24 @@ class AKOwnerAdmin(PrepopulateWithNextActiveEventMixin, admin.ModelAdmin):
Admin interface for AKOwner
"""
model = AKOwner
list_display = ['name', 'institution', 'event']
list_display = ['name', 'institution', 'event', 'aks_url']
list_filter = ['event', 'institution']
list_editable = []
ordering = ['name']
readonly_fields = ['aks_url']
@display(description=_("AKs"))
def aks_url(self, obj):
"""
Define a read-only field to go to the list of all AKs by this user
:param obj: user
:return: AK list page link (HTML)
:rtype: str
"""
return format_html("<a href='{url}'>{text}</a>",
url=reverse_lazy('admin:aks_by_owner', kwargs={'event_slug': obj.event.slug, 'pk': obj.pk}),
text=obj.ak_set.count())
@admin.register(AKCategory)
......
......@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-24 23:45+0200\n"
"POT-Creation-Date: 2024-04-25 01:29+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"
......@@ -33,47 +33,54 @@ msgstr "Plan veröffentlichen"
msgid "Unpublish plan"
msgstr "Plan verbergen"
#: AKModel/admin.py:208
#: AKModel/admin.py:168 AKModel/models.py:360 AKModel/models.py:682
#: AKModel/templates/admin/AKModel/aks_by_user.html:12
#: AKModel/templates/admin/AKModel/status/event_aks.html:10
#: AKModel/views/manage.py:73 AKModel/views/status.py:98
msgid "AKs"
msgstr "AKs"
#: AKModel/admin.py:222
msgid "Wish"
msgstr "AK-Wunsch"
#: AKModel/admin.py:214
#: AKModel/admin.py:228
msgid "Is wish"
msgstr "Ist ein Wunsch"
#: AKModel/admin.py:215
#: AKModel/admin.py:229
msgid "Is not a wish"
msgstr "Ist kein Wunsch"
#: AKModel/admin.py:274
#: AKModel/admin.py:288
msgid "Export to wiki syntax"
msgstr "In Wiki-Syntax exportieren"
#: AKModel/admin.py:291
#: AKModel/admin.py:305
msgid "Cannot export AKs from more than one event at the same time."
msgstr "Kann nicht AKs von mehreren Events zur selben Zeit exportieren."
#: AKModel/admin.py:306 AKModel/views/ak.py:99
#: AKModel/admin.py:320 AKModel/views/ak.py:99
msgid "Reset interest in AKs"
msgstr "Interesse an AKs zurücksetzen"
#: AKModel/admin.py:316 AKModel/views/ak.py:114
#: AKModel/admin.py:330 AKModel/views/ak.py:114
msgid "Reset AKs' interest counters"
msgstr "Interessenszähler der AKs zurücksetzen"
#: AKModel/admin.py:415 AKModel/admin.py:429
#: AKModel/admin.py:429 AKModel/admin.py:443
msgid "AK Details"
msgstr "AK-Details"
#: AKModel/admin.py:491 AKModel/views/manage.py:99
#: AKModel/admin.py:505 AKModel/views/manage.py:99
msgid "Mark Constraint Violations as manually resolved"
msgstr "Markiere Constraintverletzungen als manuell behoben"
#: AKModel/admin.py:500 AKModel/views/manage.py:112
#: AKModel/admin.py:514 AKModel/views/manage.py:112
msgid "Set Constraint Violations to level \"violation\""
msgstr "Constraintverletzungen auf Level \"Violation\" setzen"
#: AKModel/admin.py:509 AKModel/views/manage.py:125
#: AKModel/admin.py:523 AKModel/views/manage.py:125
msgid "Set Constraint Violations to level \"warning\""
msgstr "Constraintverletzungen auf Level \"Warning\" setzen"
......@@ -588,7 +595,7 @@ msgstr "AK präsentieren"
msgid "Present results of this AK"
msgstr "Die Ergebnisse dieses AKs vorstellen"
#: AKModel/models.py:334 AKModel/views/status.py:169
#: AKModel/models.py:334 AKModel/views/status.py:163
msgid "Requirements"
msgstr "Anforderungen"
......@@ -651,12 +658,6 @@ msgstr "Export?"
msgid "Include AK in wiki export?"
msgstr "AK bei Wiki-Export berücksichtigen?"
#: 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:484
msgid "Name or number of the room"
msgstr "Name oder Nummer des Raums"
......@@ -770,7 +771,7 @@ msgstr "AK-Organachrichten"
msgid "Constraint Violation"
msgstr "Constraintverletzung"
#: AKModel/models.py:646 AKModel/views/status.py:117
#: AKModel/models.py:646
msgid "Constraint Violations"
msgstr "Constraintverletzungen"
......@@ -894,7 +895,7 @@ msgstr "Manuell behoben"
msgid "Mark this violation manually as resolved"
msgstr "Markiere diese Verletzung manuell als behoben"
#: AKModel/models.py:728
#: AKModel/models.py:728 AKModel/templates/admin/AKModel/aks_by_user.html:22
#: AKModel/templates/admin/AKModel/requirements_overview.html:27
msgid "Details"
msgstr "Details"
......@@ -952,6 +953,19 @@ msgstr "Bestätigen"
msgid "Cancel"
msgstr "Abbrechen"
#: AKModel/templates/admin/AKModel/aks_by_user.html:8
msgid "AKs by Owner"
msgstr "AKs der Leitung"
#: AKModel/templates/admin/AKModel/aks_by_user.html:26
#: AKModel/templates/admin/AKModel/requirements_overview.html:31
msgid "Edit"
msgstr "Bearbeiten"
#: AKModel/templates/admin/AKModel/aks_by_user.html:33
msgid "This user does not have any AKs currently"
msgstr "Diese Leitung hat aktuell keine AKs"
#: AKModel/templates/admin/AKModel/event_wizard/activate.html:9
#: AKModel/templates/admin/AKModel/event_wizard/created_prepare_import.html:9
#: AKModel/templates/admin/AKModel/event_wizard/finish.html:9
......@@ -1018,16 +1032,12 @@ msgstr ""
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/views/status.py:185
#: AKModel/views/status.py:179
msgid "Add Requirement"
msgstr "Anforderung hinzufügen"
......@@ -1163,7 +1173,7 @@ msgstr "'%(obj)s' kopiert"
msgid "Could not copy '%(obj)s' (%(error)s)"
msgstr "'%(obj)s' konnte nicht kopiert werden (%(error)s)"
#: AKModel/views/manage.py:35 AKModel/views/status.py:152
#: AKModel/views/manage.py:35 AKModel/views/status.py:146
msgid "Export AK Slides"
msgstr "AK-Folien exportieren"
......@@ -1231,7 +1241,7 @@ msgstr "Den Plan/die Pläne verbergen von:"
msgid "Plan unpublished"
msgstr "Plan verborgen"
#: AKModel/views/manage.py:166 AKModel/views/status.py:136
#: AKModel/views/manage.py:166 AKModel/views/status.py:130
msgid "Edit Default Slots"
msgstr "Standardslots bearbeiten"
......@@ -1286,31 +1296,31 @@ msgstr "Kategorie hinzufügen"
msgid "Add Room"
msgstr "Raum hinzufügen"
#: AKModel/views/status.py:122
#: AKModel/views/status.py:116
msgid "AKs requiring special attention"
msgstr "AKs, die besondere Aufmerksamkeit benötigen"
#: AKModel/views/status.py:128
#: AKModel/views/status.py:122
msgid "Enter Interest"
msgstr "Interesse erfassen"
#: AKModel/views/status.py:140
#: AKModel/views/status.py:134
msgid "Manage ak tracks"
msgstr "AK-Tracks verwalten"
#: AKModel/views/status.py:144
#: AKModel/views/status.py:138
msgid "Export AKs as CSV"
msgstr "AKs als CSV exportieren"
#: AKModel/views/status.py:148
#: AKModel/views/status.py:142
msgid "Export AKs for Wiki"
msgstr "AKs im Wiki-Format exportieren"
#: AKModel/views/status.py:181
#: AKModel/views/status.py:175
msgid "Show AKs for requirements"
msgstr "Zu Anforderungen gehörige AKs anzeigen"
#: AKModel/views/status.py:195
#: AKModel/views/status.py:189
msgid "Event Status"
msgstr "Eventstatus"
......
......@@ -4,7 +4,8 @@ from django.urls import include, path
from rest_framework.routers import DefaultRouter
import AKModel.views.api
from AKModel.views.manage import ExportSlidesView, PlanPublishView, PlanUnpublishView, DefaultSlotEditorView
from AKModel.views.manage import ExportSlidesView, PlanPublishView, PlanUnpublishView, DefaultSlotEditorView, \
AKsByUserView
from AKModel.views.ak import AKRequirementOverview, AKCSVExportView, AKWikiExportView, AKMessageDeleteView
from AKModel.views.event_wizard import NewEventWizardStartView, NewEventWizardPrepareImportView, \
NewEventWizardImportView, NewEventWizardActivateView, NewEventWizardFinishView, NewEventWizardSettingsView
......@@ -91,6 +92,8 @@ def get_admin_urls_event(admin_site):
path('<slug:event_slug>/status/', admin_site.admin_view(EventStatusView.as_view()), name="event_status"),
path('<slug:event_slug>/requirements/', admin_site.admin_view(AKRequirementOverview.as_view()),
name="event_requirement_overview"),
path('<slug:event_slug>/aks/owner/<pk>/', admin_site.admin_view(AKsByUserView.as_view()),
name="aks_by_owner"),
path('<slug:event_slug>/ak-csv-export/', admin_site.admin_view(AKCSVExportView.as_view()),
name="ak_csv_export"),
path('<slug:slug>/ak-wiki-export/', admin_site.admin_view(AKWikiExportView.as_view()),
......
......@@ -8,13 +8,13 @@ from django.contrib import messages
from django.db.models.functions import Now
from django.utils.dateparse import parse_datetime
from django.utils.translation import gettext_lazy as _
from django.views.generic import TemplateView
from django.views.generic import TemplateView, DetailView
from django_tex.core import render_template_with_context, run_tex_in_directory
from django_tex.response import PDFResponse
from AKModel.forms import SlideExportForm, DefaultSlotEditorForm
from AKModel.metaviews.admin import EventSlugMixin, IntermediateAdminView, IntermediateAdminActionView
from AKModel.models import ConstraintViolation, Event, DefaultSlot
from AKModel.metaviews.admin import EventSlugMixin, IntermediateAdminView, IntermediateAdminActionView, AdminViewMixin
from AKModel.models import ConstraintViolation, Event, DefaultSlot, AKOwner
class UserView(TemplateView):
......@@ -236,3 +236,12 @@ class DefaultSlotEditorView(EventSlugMixin, IntermediateAdminView):
.format(u=str(updated_count), c=str(created_count), d=str(deleted_count))
)
return super().form_valid(form)
class AKsByUserView(AdminViewMixin, EventSlugMixin, DetailView):
"""
View: Show all AKs of a given user
"""
model = AKOwner
context_object_name = 'owner'
template_name = "admin/AKModel/aks_by_user.html"
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