From 3c94d07baec8d0ec6db4363fbe86073860d83ae8 Mon Sep 17 00:00:00 2001 From: Christian Merten Date: Tue, 19 Nov 2024 01:24:42 +0100 Subject: [PATCH] auth: rename User and Group, remove fields --- jdav_web/jdav_web/settings/components/base.py | 1 + jdav_web/jdav_web/settings/components/jet.py | 4 +- jdav_web/locale/de/LC_MESSAGES/django.po | 26 +- jdav_web/logindata/__init__.py | 0 jdav_web/logindata/admin.py | 51 ++++ jdav_web/logindata/apps.py | 6 + jdav_web/logindata/migrations/__init__.py | 0 jdav_web/logindata/models.py | 20 ++ jdav_web/logindata/tests.py | 3 + jdav_web/logindata/views.py | 3 + .../members/locale/de/LC_MESSAGES/django.po | 262 +++++++++--------- .../migrations/0023_alter_member_user.py | 21 ++ jdav_web/members/models.py | 3 +- 13 files changed, 267 insertions(+), 133 deletions(-) create mode 100644 jdav_web/logindata/__init__.py create mode 100644 jdav_web/logindata/admin.py create mode 100644 jdav_web/logindata/apps.py create mode 100644 jdav_web/logindata/migrations/__init__.py create mode 100644 jdav_web/logindata/models.py create mode 100644 jdav_web/logindata/tests.py create mode 100644 jdav_web/logindata/views.py create mode 100644 jdav_web/members/migrations/0023_alter_member_user.py diff --git a/jdav_web/jdav_web/settings/components/base.py b/jdav_web/jdav_web/settings/components/base.py index efc5144..2717694 100644 --- a/jdav_web/jdav_web/settings/components/base.py +++ b/jdav_web/jdav_web/settings/components/base.py @@ -38,6 +38,7 @@ USE_X_FORWARDED_HOST = True # Application definition INSTALLED_APPS = [ + 'logindata.apps.LoginDataConfig', 'contrib.apps.ContribConfig', 'startpage.apps.StartpageConfig', 'material.apps.MaterialConfig', diff --git a/jdav_web/jdav_web/settings/components/jet.py b/jdav_web/jdav_web/settings/components/jet.py index 1ea4dfe..96c77bd 100644 --- a/jdav_web/jdav_web/settings/components/jet.py +++ b/jdav_web/jdav_web/settings/components/jet.py @@ -6,8 +6,8 @@ JET_CHANGE_FORM_SIBLING_LINKS = False JET_SIDE_MENU_ITEMS = [ {'app_label': 'auth', 'permissions': ['auth'], 'items': [ - {'name': 'group', 'permissions': ['auth.group'] }, - {'name': 'user', 'permissions': ['auth.user']}, + {'name': 'authgroup', 'permissions': ['auth.group'] }, + {'name': 'logindatum', 'permissions': ['auth.user']}, ]}, {'app_label': 'django_celery_beat', 'permissions': ['django_celery_beat'], 'items': [ {'name': 'crontabschedule'}, diff --git a/jdav_web/locale/de/LC_MESSAGES/django.po b/jdav_web/locale/de/LC_MESSAGES/django.po index 05bda4a..21682fa 100644 --- a/jdav_web/locale/de/LC_MESSAGES/django.po +++ b/jdav_web/locale/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: 2024-11-17 14:17+0100\n" +"POT-Creation-Date: 2024-11-19 01:19+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -27,6 +27,30 @@ msgstr "Du hast nicht die notwendigen Berechtigungen um %(name)s zu sehen." msgid "Startpage" msgstr "Startseite" +#: logindata/admin.py:25 +msgid "Permissions" +msgstr "Berechtigungen" + +#: logindata/admin.py:36 +msgid "Important dates" +msgstr "Wichtigen Daten" + +#: logindata/models.py:10 +msgid "Permission group" +msgstr "Berechtigungsgruppe" + +#: logindata/models.py:11 +msgid "Permission groups" +msgstr "Berechtigungsgruppen" + +#: logindata/models.py:18 +msgid "Login Datum" +msgstr "Zugangsdaten" + +#: logindata/models.py:19 +msgid "Login Data" +msgstr "Zugangsdaten" + #: templates/admin/finance/statementconfirmed/change_form_object_tools.html:8 msgid "Unconfirm" msgstr "Bestätigung zurücknehmen" diff --git a/jdav_web/logindata/__init__.py b/jdav_web/logindata/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/jdav_web/logindata/admin.py b/jdav_web/logindata/admin.py new file mode 100644 index 0000000..be22d5c --- /dev/null +++ b/jdav_web/logindata/admin.py @@ -0,0 +1,51 @@ +from django.utils.translation import gettext_lazy as _ +from django.contrib import admin +from django.contrib.auth.admin import UserAdmin as BaseUserAdmin, GroupAdmin as BaseAuthGroupAdmin +from django.contrib.auth.models import User as BaseUser, Group as BaseAuthGroup +from .models import AuthGroup, LoginDatum +from members.models import Member + +# Register your models here. +class AuthGroupAdmin(BaseAuthGroupAdmin): + pass + + +class UserInline(admin.StackedInline): + model = Member + can_delete = False + verbose_name_plural = "member" + + +class LoginDatumAdmin(BaseUserAdmin): + list_display = ('username', 'is_superuser') + #inlines = [UserInline] + fieldsets = ( + (None, {"fields": ("username", "password")}), + ( + _("Permissions"), + { + "fields": ( + "is_active", + "is_staff", + "is_superuser", + "groups", + "user_permissions", + ), + }, + ), + (_("Important dates"), {"fields": ("last_login", "date_joined")}), + ) + add_fieldsets = ( + ( + None, + { + "classes": ("wide",), + "fields": ("username", "usable_password", "password1", "password2"), + }, + ), + ) + +admin.site.unregister(BaseUser) +admin.site.unregister(BaseAuthGroup) +admin.site.register(LoginDatum, LoginDatumAdmin) +admin.site.register(AuthGroup, AuthGroupAdmin) diff --git a/jdav_web/logindata/apps.py b/jdav_web/logindata/apps.py new file mode 100644 index 0000000..bb1c250 --- /dev/null +++ b/jdav_web/logindata/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class LoginDataConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'logindata' diff --git a/jdav_web/logindata/migrations/__init__.py b/jdav_web/logindata/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/jdav_web/logindata/models.py b/jdav_web/logindata/models.py new file mode 100644 index 0000000..af8cfcd --- /dev/null +++ b/jdav_web/logindata/models.py @@ -0,0 +1,20 @@ +from django.utils.translation import gettext_lazy as _ +from django.db import models +from django.contrib.auth.admin import UserAdmin as BaseUserAdmin, GroupAdmin as BaseAuthGroupAdmin +from django.contrib.auth.models import User as BaseUser, Group as BaseAuthGroup + + +class AuthGroup(BaseAuthGroup): + class Meta: + proxy = True + verbose_name = _('Permission group') + verbose_name_plural = _('Permission groups') + app_label = "auth" + + +class LoginDatum(BaseUser): + class Meta: + proxy = True + verbose_name = _('Login Datum') + verbose_name_plural = _('Login Data') + app_label = "auth" diff --git a/jdav_web/logindata/tests.py b/jdav_web/logindata/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/jdav_web/logindata/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/jdav_web/logindata/views.py b/jdav_web/logindata/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/jdav_web/logindata/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/jdav_web/members/locale/de/LC_MESSAGES/django.po b/jdav_web/members/locale/de/LC_MESSAGES/django.po index 4190bf9..a0e519a 100644 --- a/jdav_web/members/locale/de/LC_MESSAGES/django.po +++ b/jdav_web/members/locale/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: 2024-11-18 21:17+0100\n" +"POT-Creation-Date: 2024-11-19 01:19+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,182 +18,182 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: members/admin.py:122 members/models.py:369 +#: members/admin.py:124 members/models.py:370 msgid "Registration complete" msgstr "Anmeldung vollständig" -#: members/admin.py:128 +#: members/admin.py:130 msgid "True" msgstr "Ja" -#: members/admin.py:129 +#: members/admin.py:131 msgid "False" msgstr "Nein" -#: members/admin.py:130 +#: members/admin.py:132 msgid "All" msgstr "Alle" -#: members/admin.py:179 members/admin.py:316 +#: members/admin.py:181 members/admin.py:318 msgid "Contact information" msgstr "Kontaktinformationen" -#: members/admin.py:184 members/admin.py:321 +#: members/admin.py:186 members/admin.py:323 msgid "Skills" msgstr "Fähigkeiten" -#: members/admin.py:189 members/admin.py:326 +#: members/admin.py:191 members/admin.py:328 msgid "Others" msgstr "Sonstiges" -#: members/admin.py:195 members/admin.py:331 +#: members/admin.py:197 members/admin.py:333 msgid "Organizational" msgstr "Organisatorisches" -#: members/admin.py:258 +#: members/admin.py:260 msgid "Compose new mail to selected members" msgstr "Neue Nachricht an ausgewählte Teilnehmer verfassen" -#: members/admin.py:264 +#: members/admin.py:266 msgid "Echo required" msgstr "Rückmeldung erforderlich" -#: members/admin.py:266 +#: members/admin.py:268 msgid "Successfully requested echo from selected members." msgstr "" "Rückmeldungsaufforderung erfolgreich an ausgewählte Teilnehmer verschickt." -#: members/admin.py:267 +#: members/admin.py:269 msgid "Request echo from selected members" msgstr "Rückmeldungsaufforderung an ausgewählte Teilnehmer verschicken" -#: members/admin.py:284 +#: members/admin.py:286 msgid "activity" msgstr "Aktivität" -#: members/admin.py:294 members/models.py:53 members/models.py:1363 +#: members/admin.py:296 members/models.py:53 members/models.py:1364 msgid "Name" msgstr "Name" -#: members/admin.py:365 +#: members/admin.py:367 msgid "Successfully requested mail confirmation from selected registrations." msgstr "Aufforderung zur Bestätigung der Email Adresse versendet." -#: members/admin.py:366 +#: members/admin.py:368 msgid "Request mail confirmation from selected registrations" msgstr "Aufforderung zur Bestätigung der Email Adresse versenden" -#: members/admin.py:373 members/admin.py:407 +#: members/admin.py:375 members/admin.py:409 #, python-format msgid "Successfully confirmed %(name)s." msgstr "Registrierung von %(name)s erfolgreich bestätigt." -#: members/admin.py:377 members/admin.py:410 +#: members/admin.py:379 members/admin.py:412 #, python-format msgid "Can't confirm. %(name)s has unconfirmed email addresses." msgstr "Bestätigung nicht möglich. %(name)s hat unbestätigte Emailadressen." -#: members/admin.py:382 +#: members/admin.py:384 msgid "Successfully confirmed multiple registrations." msgstr "Erfolgreich mehrere Registrierungen bestätigt." -#: members/admin.py:384 +#: members/admin.py:386 msgid "" "Failed to confirm some registrations because of unconfirmed email addresses." msgstr "" "Einige Bestätigungen fehlgeschlagen, weil Emailadressen noch nicht bestätigt " "sind." -#: members/admin.py:385 +#: members/admin.py:387 msgid "Confirm selected registrations" msgstr "Ausgewählte Registrierungen bestätigen" -#: members/admin.py:401 +#: members/admin.py:403 #, python-format msgid "Successfully demoted %(name)s to waiter." msgstr "%(name)s zurück auf die Warteliste gesetzt." -#: members/admin.py:402 +#: members/admin.py:404 msgid "Demote selected registrations to waiters." msgstr "Ausgewählte Registrierungen zurück auf die Warteliste setzen." -#: members/admin.py:417 members/models.py:376 members/models.py:702 -#: members/models.py:1108 +#: members/admin.py:419 members/models.py:377 members/models.py:703 +#: members/models.py:1109 msgid "Group" msgstr "Gruppe" -#: members/admin.py:451 +#: members/admin.py:453 #, python-format msgid "Successfully asked %(name)s to confirm their waiting status." msgstr "Erfolgreich %(name)s aufgefordert den Wartelistenplatz zu bestätigen." -#: members/admin.py:452 +#: members/admin.py:454 msgid "Ask selected waiters to confirm their waiting status" msgstr "Wartende auffordern den Wartelistenplatz zu bestätigen" -#: members/admin.py:461 members/admin.py:517 +#: members/admin.py:463 members/admin.py:519 msgid "" "An error occurred while trying to invite said members. Please try again." msgstr "" "Beim Einladen dieser Personen ist ein Fehler aufgetreten. Bitte versuche es " "nochmal. " -#: members/admin.py:469 members/admin.py:524 +#: members/admin.py:471 members/admin.py:526 #, python-format msgid "Successfully invited %(name)s to %(group)s." msgstr "Erfolgreich %(name)s zu Gruppe %(group)s eingeladen." -#: members/admin.py:473 members/admin.py:529 +#: members/admin.py:475 members/admin.py:531 msgid "Select group for invitation" msgstr "Wähle Gruppe für Einladung aus" -#: members/admin.py:480 +#: members/admin.py:482 msgid "Offer waiter a place in a group." msgstr "Personen auf der Warteliste einen Gruppenplatz anbieten." -#: members/admin.py:570 +#: members/admin.py:572 msgid "Difficulty" msgstr "Schwierigkeit" -#: members/admin.py:573 +#: members/admin.py:575 msgid "Tour type" msgstr "Art der Tour" -#: members/admin.py:576 members/models.py:918 +#: members/admin.py:578 members/models.py:919 msgid "Means of transportation" msgstr "Verkehrsmittel" -#: members/admin.py:671 +#: members/admin.py:673 #, python-format msgid "You are not allowed to view all members on note list %(name)s." msgstr "" "Du hast nicht die nötigen Rechte um alle Teilnehmer:innen der Notizliste " "%(name)s anzusehen." -#: members/admin.py:681 +#: members/admin.py:683 msgid "Generate PDF summary" msgstr "Übersicht erstellen" -#: members/admin.py:719 +#: members/admin.py:721 #, python-format msgid "You are not allowed to view all members on excursion %(name)s." msgstr "" "Du hast nicht die nötigen Rechte um alle Teilnehmer:innen der Ausfahrt " "%(name)s anzusehen." -#: members/admin.py:729 +#: members/admin.py:731 msgid "Generate crisis intervention list" msgstr "Kriseninterventionsliste erstellen" -#: members/admin.py:739 +#: members/admin.py:741 msgid "Generate overview" msgstr "Hinweise für Jugendleiter erstellen" -#: members/admin.py:749 +#: members/admin.py:751 msgid "Generate seminar report" msgstr "Seminarbericht erstellen" -#: members/admin.py:763 +#: members/admin.py:765 msgid "Generate SJR application" msgstr "SJR Antrag erstellen" @@ -229,11 +229,11 @@ msgstr "Samstag" msgid "Sunday" msgstr "Sonntag" -#: members/models.py:54 members/models.py:904 +#: members/models.py:54 members/models.py:905 msgid "Description" msgstr "Beschreibung" -#: members/models.py:60 members/models.py:896 +#: members/models.py:60 members/models.py:897 #: members/templates/members/change_member.html:18 msgid "Activity" msgstr "Aktivität" @@ -266,7 +266,7 @@ msgstr "Bis Jahrgang" msgid "youth leaders" msgstr "Jugendleiter" -#: members/models.py:77 members/models.py:1190 +#: members/models.py:77 members/models.py:1191 msgid "Starting time" msgstr "Zeitpunkt" @@ -426,338 +426,342 @@ msgstr "Rückgemeldet" msgid "Confirmed" msgstr "Bestätigt" -#: members/models.py:305 +#: members/models.py:277 +msgid "Login data" +msgstr "Zugangsdaten" + +#: members/models.py:306 msgid "Good conduct certificate valid" msgstr "Führungszeugnis gültig" -#: members/models.py:379 +#: members/models.py:380 msgid "member" msgstr "Teilnehmer" -#: members/models.py:380 +#: members/models.py:381 msgid "members" msgstr "Teilnehmer" -#: members/models.py:452 +#: members/models.py:453 #, python-format msgid "New unconfirmed registration for group %(group)s" msgstr "Neue unbestätigte Registrierung für Gruppe %(group)s" -#: members/models.py:659 members/models.py:852 members/models.py:863 -#: members/models.py:1139 members/models.py:1146 +#: members/models.py:660 members/models.py:853 members/models.py:864 +#: members/models.py:1140 members/models.py:1147 msgid "Member" msgstr "Teilnehmer" -#: members/models.py:665 +#: members/models.py:666 msgid "Emergency contact" msgstr "Notfallkontakt" -#: members/models.py:666 +#: members/models.py:667 msgid "Emergency contacts" msgstr "Notfallkontakte" -#: members/models.py:686 +#: members/models.py:687 msgid "Unconfirmed registration" msgstr "Unbestätigte Registrierung" -#: members/models.py:687 +#: members/models.py:688 msgid "Unconfirmed registrations" msgstr "Unbestätigte Registrierungen" -#: members/models.py:701 members/models.py:746 +#: members/models.py:702 members/models.py:747 msgid "Waiter" msgstr "Wartende Person" -#: members/models.py:703 +#: members/models.py:704 msgid "Invitation date" msgstr "Einladungsdatum" -#: members/models.py:704 members/templates/members/reject_success.html:6 +#: members/models.py:705 members/templates/members/reject_success.html:6 #: members/templates/members/reject_success.html:11 msgid "Invitation rejected" msgstr "Einladung abgelehnt" -#: members/models.py:708 +#: members/models.py:709 msgid "Invitation to group" msgstr "Gruppeneinladung" -#: members/models.py:709 +#: members/models.py:710 msgid "Invitations to groups" msgstr "Gruppeneinladungen" -#: members/models.py:716 +#: members/models.py:717 msgid "Rejected" msgstr "Abgelehnt" -#: members/models.py:718 +#: members/models.py:719 msgid "Expired" msgstr "Abgelaufen" -#: members/models.py:720 +#: members/models.py:721 msgid "Undecided" msgstr "Ausstehend" -#: members/models.py:721 +#: members/models.py:722 msgid "Status" msgstr "Status" -#: members/models.py:732 +#: members/models.py:733 msgid "Do you want to tell us something else?" msgstr "Möchtest du uns noch etwas mitteilen?" -#: members/models.py:733 +#: members/models.py:734 msgid "application date" msgstr "Bewerbungsdatum" -#: members/models.py:735 +#: members/models.py:736 msgid "Last wait confirmation" msgstr "Letzte Wartebestätigung" -#: members/models.py:739 +#: members/models.py:740 msgid "Last reminder" msgstr "Letzte Erinnerung" -#: members/models.py:740 +#: members/models.py:741 msgid "Missed reminders" msgstr "Verpasste Erinnerungen" -#: members/models.py:747 +#: members/models.py:748 msgid "Waiters" msgstr "Warteliste" -#: members/models.py:771 +#: members/models.py:772 msgid "Waiting status confirmed" msgstr "Wartelistenplatz bestätigt" -#: members/models.py:778 +#: members/models.py:779 msgid "Waiting confirmation needed" msgstr "Wartelistenplatzbestätigung erforderlich" -#: members/models.py:831 +#: members/models.py:832 msgid "Invitation to trial group meeting" msgstr "Einladung zu Schnupperstunde" -#: members/models.py:843 +#: members/models.py:844 msgid "Unregistered from waiting list" msgstr "Von der Warteliste abgemeldet" -#: members/models.py:857 +#: members/models.py:858 msgid "Comment" msgstr "Kommentar" -#: members/models.py:864 members/models.py:1147 +#: members/models.py:865 members/models.py:1148 msgid "Members" msgstr "Teilnehmer" -#: members/models.py:898 +#: members/models.py:899 msgid "Place" msgstr "Stützpunkt / Ort" -#: members/models.py:899 +#: members/models.py:900 msgid "Destination (optional)" msgstr "ggf. Ziel" -#: members/models.py:901 +#: members/models.py:902 msgid "e.g. a peak" msgstr "z.B. ein Gipfel" -#: members/models.py:902 +#: members/models.py:903 msgid "Begin" msgstr "Anfang" -#: members/models.py:903 +#: members/models.py:904 msgid "End (optional)" msgstr "Ende" -#: members/models.py:906 +#: members/models.py:907 msgid "Groups" msgstr "Gruppen" -#: members/models.py:919 +#: members/models.py:920 msgid "Kilometers traveled" msgstr "Fahrstrecke in Kilometer" -#: members/models.py:922 +#: members/models.py:923 msgid "Categories" msgstr "Kategorien" -#: members/models.py:923 +#: members/models.py:924 msgid "easy" msgstr "leicht" -#: members/models.py:923 +#: members/models.py:924 msgid "medium" msgstr "mittel" -#: members/models.py:923 +#: members/models.py:924 msgid "hard" msgstr "schwer" -#: members/models.py:933 members/models.py:1170 +#: members/models.py:934 members/models.py:1171 msgid "Excursion" msgstr "Ausfahrt" -#: members/models.py:934 +#: members/models.py:935 msgid "Excursions" msgstr "Ausfahrten" -#: members/models.py:1085 members/models.py:1161 members/models.py:1377 +#: members/models.py:1086 members/models.py:1162 members/models.py:1378 msgid "Title" msgstr "Titel" -#: members/models.py:1086 members/models.py:1104 members/models.py:1378 +#: members/models.py:1087 members/models.py:1105 members/models.py:1379 msgid "Date" msgstr "Datum" -#: members/models.py:1105 +#: members/models.py:1106 msgid "Location" msgstr "Ort" -#: members/models.py:1106 +#: members/models.py:1107 msgid "Topic" msgstr "Thema" -#: members/models.py:1130 +#: members/models.py:1131 msgid "Jugendleiter" msgstr "Jugendleiter" -#: members/models.py:1133 +#: members/models.py:1134 msgid "Klettertreff" msgstr "Klettertreff" -#: members/models.py:1134 +#: members/models.py:1135 msgid "Klettertreffs" msgstr "Klettertreffs" -#: members/models.py:1152 +#: members/models.py:1153 msgid "Password" msgstr "Passwort" -#: members/models.py:1155 +#: members/models.py:1156 msgid "registration password" msgstr "Registrierungspassort" -#: members/models.py:1156 +#: members/models.py:1157 msgid "registration passwords" msgstr "Registrierungspasswörter" -#: members/models.py:1163 +#: members/models.py:1164 msgid "Alpinistic goals" msgstr "Alpintechnische Ziele" -#: members/models.py:1164 +#: members/models.py:1165 msgid "Pedagogic goals" msgstr "Pädagogische Ziele" -#: members/models.py:1165 +#: members/models.py:1166 msgid "Content and methods" msgstr "Inhalte und Methoden" -#: members/models.py:1166 +#: members/models.py:1167 msgid "Evaluation" msgstr "Wertung" -#: members/models.py:1167 +#: members/models.py:1168 msgid "Experiences and possible improvements" msgstr "Erfahrungen und Verbesserungsvorschläge" -#: members/models.py:1176 members/models.py:1197 +#: members/models.py:1177 members/models.py:1198 msgid "LJP Proposal" msgstr "Seminarbericht" -#: members/models.py:1177 +#: members/models.py:1178 msgid "LJP Proposals" msgstr "Seminarberichte" -#: members/models.py:1191 +#: members/models.py:1192 msgid "Duration in hours" msgstr "Dauer in Stunden" -#: members/models.py:1194 +#: members/models.py:1195 msgid "Activity and method" msgstr "Art der Aktion inkl. Methode" -#: members/models.py:1202 +#: members/models.py:1203 msgid "Intervention" msgstr "Aktion" -#: members/models.py:1203 +#: members/models.py:1204 msgid "Interventions" msgstr "Aktionen" -#: members/models.py:1305 members/models.py:1335 +#: members/models.py:1306 members/models.py:1336 msgid "May list members" msgstr "Darf folgende Teilnehmer:innen listen" -#: members/models.py:1307 members/models.py:1337 +#: members/models.py:1308 members/models.py:1338 msgid "May view members" msgstr "Darf folgende Teilnehmer:innen anzeigen" -#: members/models.py:1309 members/models.py:1339 +#: members/models.py:1310 members/models.py:1340 msgid "May change members" msgstr "Darf folgende Teilnehmer:innen ändern" -#: members/models.py:1311 members/models.py:1341 +#: members/models.py:1312 members/models.py:1342 msgid "May delete members" msgstr "Darf folgende Teilnehmer:innen löschen" -#: members/models.py:1315 members/models.py:1345 +#: members/models.py:1316 members/models.py:1346 msgid "May list members of groups" msgstr "Darf Teilnehmer:innen folgender Gruppen listen" -#: members/models.py:1317 members/models.py:1347 +#: members/models.py:1318 members/models.py:1348 msgid "May view members of groups" msgstr "Darf Teilnehmer:innen folgender Gruppen anzeigen" -#: members/models.py:1319 members/models.py:1349 +#: members/models.py:1320 members/models.py:1350 msgid "May change members of groups" msgstr "Darf Teilnehmer:innen folgender Gruppen ändern" -#: members/models.py:1321 members/models.py:1351 +#: members/models.py:1322 members/models.py:1352 msgid "May delete members of groups" msgstr "Darf Teilnehmer:innen folgender Gruppen löschen" -#: members/models.py:1324 members/models.py:1325 members/models.py:1328 +#: members/models.py:1325 members/models.py:1326 members/models.py:1329 msgid "Permissions" msgstr "Berechtigungen" -#: members/models.py:1354 members/models.py:1355 members/models.py:1358 +#: members/models.py:1355 members/models.py:1356 members/models.py:1359 msgid "Group permissions" msgstr "Gruppenberechtigungen" -#: members/models.py:1364 +#: members/models.py:1365 msgid "Permission needed" msgstr "Freigabe erforderlich" -#: members/models.py:1367 +#: members/models.py:1368 msgid "Training category" msgstr "Fortbildungstyp" -#: members/models.py:1368 +#: members/models.py:1369 msgid "Training categories" msgstr "Fortbildungstypen" -#: members/models.py:1379 +#: members/models.py:1380 msgid "Category" msgstr "Kategorien" -#: members/models.py:1380 +#: members/models.py:1381 msgid "Comments" msgstr "Kommentar" -#: members/models.py:1381 +#: members/models.py:1382 msgid "Participated" msgstr "Teilgenommmen" -#: members/models.py:1382 +#: members/models.py:1383 msgid "Passed" msgstr "Bestanden" -#: members/models.py:1385 +#: members/models.py:1386 msgid "Training" msgstr "Fortbildung" -#: members/models.py:1386 +#: members/models.py:1387 msgid "Trainings" msgstr "Fortbildungen" diff --git a/jdav_web/members/migrations/0023_alter_member_user.py b/jdav_web/members/migrations/0023_alter_member_user.py new file mode 100644 index 0000000..2e5a899 --- /dev/null +++ b/jdav_web/members/migrations/0023_alter_member_user.py @@ -0,0 +1,21 @@ +# Generated by Django 4.0.1 on 2024-11-19 00:22 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('members', '0022_adapt_fields'), + ] + + operations = [ + migrations.AlterField( + model_name='member', + name='user', + field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Login data'), + ), + ] diff --git a/jdav_web/members/models.py b/jdav_web/members/models.py index 123d398..bb966eb 100644 --- a/jdav_web/members/models.py +++ b/jdav_web/members/models.py @@ -273,7 +273,8 @@ class Member(Person): echo_expire = models.DateTimeField(default=timezone.now) echoed = models.BooleanField(default=True, verbose_name=_('Echoed')) confirmed = models.BooleanField(default=True, verbose_name=_('Confirmed')) - user = models.OneToOneField(User, blank=True, null=True, on_delete=models.SET_NULL) + user = models.OneToOneField(User, blank=True, null=True, on_delete=models.SET_NULL, + verbose_name=_('Login data')) objects = MemberManager()