diff --git a/aleksis/core/locale/de_DE/LC_MESSAGES/django.po b/aleksis/core/locale/de_DE/LC_MESSAGES/django.po index 3f7ac4543d1affb8daf256f4661f36cad4169742..fab84d7b72e4d3e4f82be558a89fa199924710cf 100644 --- a/aleksis/core/locale/de_DE/LC_MESSAGES/django.po +++ b/aleksis/core/locale/de_DE/LC_MESSAGES/django.po @@ -8,9 +8,10 @@ msgstr "" "Project-Id-Version: AlekSIS (School Information System) 0.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-05-21 19:54+0200\n" -"PO-Revision-Date: 2021-05-21 15:58+0000\n" +"PO-Revision-Date: 2021-05-21 18:38+0000\n" "Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n" -"Language-Team: German <https://translate.edugit.org/projects/aleksis/aleksis/de/>\n" +"Language-Team: German <https://translate.edugit.org/projects/aleksis/aleksis/" +"de/>\n" "Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -148,31 +149,31 @@ msgid "You need at least one recipient." msgstr "Sie benötigen mindestens einen Empfänger." #: aleksis/core/forms.py:414 -#, fuzzy -#| msgid "Account" msgid "Account data" -msgstr "Konto" +msgstr "Kontodaten" #: aleksis/core/forms.py:416 msgid "Consents" -msgstr "" +msgstr "Zustimmungen" #: aleksis/core/forms.py:421 msgid "Password" -msgstr "" +msgstr "Passwort" #: aleksis/core/forms.py:427 msgid "Password (again)" -msgstr "" +msgstr "Passwort wiederholen" #: aleksis/core/forms.py:436 #, python-brace-format msgid "I have read the <a href='{privacy_policy}'>Privacy policy</a> and agree with them." msgstr "" +"Ich habe die <a href='{privacy_policy}'>Datenschutzerklärung</a> gelesen und " +"stimme ihr zu." #: aleksis/core/forms.py:460 msgid "You must type the same password each time." -msgstr "" +msgstr "Sie müssen zweimal das gleiche Passwort eingeben." #: aleksis/core/forms.py:605 msgid "No valid selection." @@ -213,7 +214,7 @@ msgstr "Anmelden" #: aleksis/core/menus.py:15 aleksis/core/templates/account/signup.html:20 #: aleksis/core/templates/socialaccount/signup.html:23 msgid "Sign up" -msgstr "" +msgstr "Registrieren" #: aleksis/core/menus.py:24 msgid "Dashboard" @@ -251,7 +252,7 @@ msgstr "2FA" #: aleksis/core/templates/account/password_reset_from_key_done.html:5 #: aleksis/core/templates/account/password_reset_from_key_done.html:6 msgid "Change password" -msgstr "" +msgstr "Passwort ändern" #: aleksis/core/menus.py:79 msgid "Me" @@ -263,10 +264,8 @@ msgid "Preferences" msgstr "Einstellungen" #: aleksis/core/menus.py:97 -#, fuzzy -#| msgid "Persons and accounts" msgid "Social accounts" -msgstr "Personen und Konten" +msgstr "Soziale Konten" #: aleksis/core/menus.py:106 msgid "Authorized tokens" @@ -985,14 +984,12 @@ msgid "Official name of the school, e.g. as given by supervisory authority" msgstr "Offizieller Name der Schule, wie er z.B. von der Behörde vorgegeben ist" #: aleksis/core/preferences.py:220 -#, fuzzy -#| msgid "Allow users to edit their dashboard" msgid "Allow users to change their passwords" -msgstr "Erlaube Benutzern, ihr Dashboard zu bearbeiten" +msgstr "Erlaube Benutzern, ihr Passwort zu ändern" #: aleksis/core/preferences.py:228 msgid "Enable signup" -msgstr "" +msgstr "Registrierung aktivieren" #: aleksis/core/preferences.py:237 msgid "Available languages" @@ -1157,23 +1154,14 @@ msgstr "" #: aleksis/core/templates/account/account_inactive.html:5 #: aleksis/core/templates/account/account_inactive.html:6 -#, fuzzy -#| msgid "Account Security" msgid "Account inactive" -msgstr "Kontosicherheit" +msgstr "Konto inaktiv" #: aleksis/core/templates/account/account_inactive.html:13 -#, fuzzy -#| msgid "Account Security" msgid "Account inactive." -msgstr "Kontosicherheit" +msgstr "Konto inaktiv." #: aleksis/core/templates/account/account_inactive.html:15 -#, fuzzy -#| msgid "" -#| "\n" -#| " This page is currently unavailable. If this error persists, contact your site administrators:\n" -#| " " msgid "" "\n" " This account is currently inactive. If you think this is an\n" @@ -1181,14 +1169,13 @@ msgid "" " " msgstr "" "\n" -" Diese Seite ist aktuell nicht erreichbar. Wenn dieser Fehler bestehen bleibt, kontaktieren Sie bitte einen Ihrer Systemadministratoren:\n" +" Dieses Konto ist aktuell inaktiv. Wenn Sie denken,\n" +"dass dies ein Fehler ist, kontaktieren Sie einen der Administratoren:\n" " " #: aleksis/core/templates/account/email/base_message.txt:5 -#, fuzzy -#| msgid "Hello," msgid "Hello!" -msgstr "Hallo," +msgstr "Hallo!" #: aleksis/core/templates/account/email/base_message.txt:9 #: aleksis/core/templates/templated_email/notification.email:22 @@ -1199,45 +1186,43 @@ msgstr "Ihr AlekSIS-Team" #: aleksis/core/templates/account/email_confirm.html:5 #: aleksis/core/templates/account/email_confirm.html:6 #: aleksis/core/templates/account/email_confirm.html:17 -#, fuzzy -#| msgid "Configuration" msgid "Confirm" -msgstr "Konfiguration" +msgstr "Bestätigen" #: aleksis/core/templates/account/email_confirm.html:12 #, python-format msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an e-mail address for user %(user_display)s." msgstr "" +"Bitte bestätigen Sie, dass <a href=\"mailto:%(email)s\">%(email)s</a> eine E" +"-Mail-Adresse für den Benutzer %(user_display)s ist." #: aleksis/core/templates/account/email_confirm.html:25 #, python-format msgid "This e-mail confirmation link expired or is invalid. Please <a href=\"%(email_url)s\">issue a new e-mail confirmation request</a>." msgstr "" +"Dieser E-Mail-Bestätigungslink ist abgelaufen oder nicht gültig. Bitte <a " +"href=\"%(email_url)s\">fragen Sie eine neue E-Mail-Bestätigung an</a>." #: aleksis/core/templates/account/password_change.html:12 msgid "Forgot your current password? Click here to reset it:" msgstr "" +"Haben Sie Ihr aktuelles Passwort vergessen? Klicken Sie hier, um es " +"zurückzusetzen:" #: aleksis/core/templates/account/password_change.html:12 msgid "Forgot Password?" -msgstr "" +msgstr "Passwort vergessen?" #: aleksis/core/templates/account/password_change_disabled.html:5 #: aleksis/core/templates/account/password_change_disabled.html:6 msgid "Changing of password disabled" -msgstr "" +msgstr "Passwortänderung deaktiviert" #: aleksis/core/templates/account/password_change_disabled.html:13 msgid "Changing of password disabled." -msgstr "" +msgstr "Passwortänderung deaktiviert." #: aleksis/core/templates/account/password_change_disabled.html:15 -#, fuzzy -#| msgid "" -#| "\n" -#| " If you think this is an error in AlekSIS, please contact your site\n" -#| " administrators:\n" -#| " " msgid "" "\n" " Users are not allowed to edit their own passwords. If you think\n" @@ -1245,8 +1230,9 @@ msgid "" " " msgstr "" "\n" -" Wenn Sie der Meinung sind, dass es sich um einen Fehler in AlekSIS handelt, kontaktieren Sie bitte einen Ihrer\n" -" Systemadministratoren:\n" +" Benutzer dürfen ihre eigenen Passwörter nicht ändern. Wenn Sie " +"denken, \n" +"dass dies ein Fehler ist, kontaktieren Sie bitte einen der Administratoren:\n" " " #: aleksis/core/templates/account/password_reset.html:5 @@ -1257,30 +1243,28 @@ msgstr "" #: aleksis/core/templates/account/verification_email_required.html:6 #: aleksis/core/templates/two_factor/core/login.html:100 msgid "Reset password" -msgstr "" +msgstr "Passwort zurücksetzen" #: aleksis/core/templates/account/password_reset.html:17 msgid "Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it." msgstr "" +"Passwort vergessen? Geben Sie Ihre E-Mail-Adresse hier ein und wir werden " +"Ihnen eine E-Mail zum Zurücksetzen des Passwortes schicken." #: aleksis/core/templates/account/password_reset.html:30 msgid "" "Please contact one of your site administrators, if you\n" " have any trouble resetting your password:" msgstr "" +"Bitte kontaktieren Sie einen der Administratoren, \n" +"wenn Sie irgendwelche Probleme beim Zurücksetzen des Passwortes haben:" #: aleksis/core/templates/account/password_reset_done.html:15 msgid "Password reset mail sent" -msgstr "" +msgstr "E-Mail zum Zurücksetzen des Passwortes versendet" #: aleksis/core/templates/account/password_reset_done.html:18 #: aleksis/core/templates/account/verification_email_required.html:16 -#, fuzzy -#| msgid "" -#| "\n" -#| " If you think this is an error in AlekSIS, please contact your site\n" -#| " administrators:\n" -#| " " msgid "" "\n" " We have sent you an e-mail. Please contact one of your site\n" @@ -1288,15 +1272,14 @@ msgid "" " " msgstr "" "\n" -" Wenn Sie der Meinung sind, dass es sich um einen Fehler in AlekSIS handelt, kontaktieren Sie bitte einen Ihrer\n" -" Systemadministratoren:\n" +" Wir haben Ihnen eine E-Mail gesendet. Bitte kontaktieren Sie " +"einen der Administratoren,\n" +"wenn Sie diese nicht innerhalb weniger Minuten erhalten.\n" " " #: aleksis/core/templates/account/password_reset_from_key.html:15 -#, fuzzy -#| msgid "Backup Tokens" msgid "Bad token" -msgstr "Backup-Token" +msgstr "Ungültiges Token" #: aleksis/core/templates/account/password_reset_from_key.html:19 #, python-format @@ -1306,14 +1289,14 @@ msgid "" " class=\"blue-text text-lighten-2\">new password reset</a>.\n" " " msgstr "" +"\n" +" Der Link zum Zurücksetzen des Passwortes war falsch, " +"wahrscheinlich, weil er bereits benutzt wurde. Bitte starten Sie eine neue " +"Anfrage <a href=\"%(passwd_reset_url)s\" class=\"blue-text text-" +"lighten-2\">zum Zurücksetzen des Passwortes</a>.\n" +" " #: aleksis/core/templates/account/password_reset_from_key.html:25 -#, fuzzy -#| msgid "" -#| "\n" -#| " If you think this is an error in AlekSIS, please contact your site\n" -#| " administrators:\n" -#| " " msgid "" "\n" " If this issue persists, please contact one of your site\n" @@ -1321,69 +1304,59 @@ msgid "" " " msgstr "" "\n" -" Wenn Sie der Meinung sind, dass es sich um einen Fehler in AlekSIS handelt, kontaktieren Sie bitte einen Ihrer\n" -" Systemadministratoren:\n" -" " +" Wenn dieser Fehler bestehen bleibt,\n" +"kontaktieren Sie bitte einen der Administratoren:\n" +" " #: aleksis/core/templates/account/password_reset_from_key.html:56 #: aleksis/core/templates/account/password_reset_from_key_done.html:15 -#, fuzzy -#| msgid "" -#| "\n" -#| " Updated by %(person)s\n" -#| " " msgid "" "\n" " Your password is now changed!\n" " " msgstr "" "\n" -" Aktualisiert von %(person)s\n" -" " +" Ihr Password wurde geändert!\n" +" " #: aleksis/core/templates/account/password_reset_from_key.html:61 -#, fuzzy -#| msgid "Back to Profile" msgid "Back to login" -msgstr "Zurück zum Profil" +msgstr "Zurück zur Anmeldung" #: aleksis/core/templates/account/password_reset_from_key_done.html:13 msgid "Password changed!" -msgstr "" +msgstr "Passwort geändert!" #: aleksis/core/templates/account/password_set.html:5 #: aleksis/core/templates/account/password_set.html:6 #: aleksis/core/templates/account/password_set.html:12 msgid "Set password" -msgstr "" +msgstr "Password setzen" #: aleksis/core/templates/account/signup.html:5 #: aleksis/core/templates/account/signup.html:6 #: aleksis/core/templates/socialaccount/signup.html:5 #: aleksis/core/templates/socialaccount/signup.html:6 msgid "Signup" -msgstr "" +msgstr "Registrierung" #: aleksis/core/templates/account/signup.html:12 #, python-format msgid "Already have an account? Then please <a href=\"%(login_url)s\">sign in</a>." msgstr "" +"Haben Sie bereits ein Konto? Dann <a href=\"%(login_url)s\">melden Sie sich " +"bitte an</a>." #: aleksis/core/templates/account/signup_closed.html:5 #: aleksis/core/templates/account/signup_closed.html:6 msgid "Signup closed" -msgstr "" +msgstr "Registrierung geschlossen" #: aleksis/core/templates/account/signup_closed.html:13 msgid "Signup closed." -msgstr "" +msgstr "Registrierung geschlossen." #: aleksis/core/templates/account/signup_closed.html:15 -#, fuzzy -#| msgid "" -#| "\n" -#| " This page is currently unavailable. If this error persists, contact your site administrators:\n" -#| " " msgid "" "\n" " This sign up is currently closed. If you think this is an\n" @@ -1391,23 +1364,23 @@ msgid "" " " msgstr "" "\n" -" Diese Seite ist aktuell nicht erreichbar. Wenn dieser Fehler bestehen bleibt, kontaktieren Sie bitte einen Ihrer Systemadministratoren:\n" +" Die Registrierung ist aktuell geschlossen. Wenn Sie denken, dass " +"dies ein Fehler ist,\n" +" kontaktieren Sie bitte einen Ihrer Systemadministratoren.\n" " " #: aleksis/core/templates/account/verification_email_required.html:14 msgid "Password reset mail sent!" -msgstr "" +msgstr "E-Mail zum Zurücksetzen des Passwortes versendet!" #: aleksis/core/templates/account/verification_sent.html:5 #: aleksis/core/templates/account/verification_sent.html:6 -#, fuzzy -#| msgid "E-mail address" msgid "Verify your email address" -msgstr "E-Mail-Adresse" +msgstr "Verifizieren Sie Ihre E-Mail-Adresse" #: aleksis/core/templates/account/verification_sent.html:14 msgid "Verify your email!" -msgstr "" +msgstr "Verifizieren Sie Ihre E-Mail!" #: aleksis/core/templates/account/verification_sent.html:16 msgid "" @@ -1416,6 +1389,12 @@ msgid "" " For this purpose, we require that you verify ownership of your e-mail address.\n" " " msgstr "" +"\n" +" Dieser Teil der Anwendung setzt voraus, dass wir verifizieren, " +"dass Sie die Person sind, die sie vorgeben, zu sein.\n" +"Zu diesem Zweck setzen wir voraus, dass Sie die Inhaberschaft Ihrer E-Mail-" +"Adresse bestätigen.\n" +" " #: aleksis/core/templates/account/verification_sent.html:22 msgid "" @@ -1425,11 +1404,19 @@ msgid "" " contact us if you do not receive it within a few minutes.\n" " " msgstr "" +"\n" +" Wir haben Ihnen eine E-Mail zur Verifizierung geschickt.\n" +"Bitte klicken Sie auf den Link in dieser E-Mail.\n" +"Bitte kontaktieren Sie uns, wenn Sie diese nicht binnen weniger Minuten " +"erhalten.\n" +" " #: aleksis/core/templates/account/verification_sent.html:30 #, python-format msgid "<strong>Note:</strong> you can still <a href=\"%(email_url)s\">change your e-mail address</a>" msgstr "" +"<strong>Hinweis:</strong> Sie können immer noch <a href=\"%(email_url)s\"> " +"Ihre E-Mail-Adresse ändern</a>" #: aleksis/core/templates/core/additional_field/edit.html:6 #: aleksis/core/templates/core/additional_field/edit.html:7 @@ -2367,19 +2354,13 @@ msgstr "Bitte geben Sie einen Suchausdruck ein." #: aleksis/core/templates/socialaccount/authentication_error.html:5 #: aleksis/core/templates/socialaccount/authentication_error.html:6 msgid "Social Network Login Failure" -msgstr "" +msgstr "Anmeldung über soziales Netzwerk fehlgeschlagen" #: aleksis/core/templates/socialaccount/authentication_error.html:13 msgid "Social Network Login Failure." -msgstr "" +msgstr "Anmeldung über soziales Netzwerk fehlgeschlagen." #: aleksis/core/templates/socialaccount/authentication_error.html:15 -#, fuzzy -#| msgid "" -#| "\n" -#| " If you think this is an error in AlekSIS, please contact your site\n" -#| " administrators:\n" -#| " " msgid "" "\n" " An error occurred while attempting to login via your social network account.\n" @@ -2387,34 +2368,35 @@ msgid "" " " msgstr "" "\n" -" Wenn Sie der Meinung sind, dass es sich um einen Fehler in AlekSIS handelt, kontaktieren Sie bitte einen Ihrer\n" -" Systemadministratoren:\n" +" Beim dem Versuch, die Anmeldung über Ihr soziales Netzwerk " +"durchzuführen, ist ein Fehler aufgetreten.\n" +" Kontaktieren Sie bitte einen Ihrer Systemadministratoren:\n" " " #: aleksis/core/templates/socialaccount/connections.html:5 #: aleksis/core/templates/socialaccount/connections.html:6 -#, fuzzy -#| msgid "Actions" msgid "Connections" -msgstr "Aktionen" +msgstr "Verbindungen" #: aleksis/core/templates/socialaccount/connections.html:24 msgid "Remove" -msgstr "" +msgstr "Löschen" #: aleksis/core/templates/socialaccount/connections.html:34 msgid "You currently have no social network accounts connected to this account." msgstr "" +"Sie haben aktuell keine Konten von sozialen Netzwerken mit Ihrem Konto " +"verbunden." #: aleksis/core/templates/socialaccount/connections.html:37 msgid "Add a 3rd Party Account" -msgstr "" +msgstr "Ein Drittanbieterkonto hinzufügen" #: aleksis/core/templates/socialaccount/login_cancelled.html:5 #: aleksis/core/templates/socialaccount/login_cancelled.html:6 #: aleksis/core/templates/socialaccount/login_cancelled.html:13 msgid "Login cancelled" -msgstr "" +msgstr "Login abgebrochen" #: aleksis/core/templates/socialaccount/login_cancelled.html:15 #, python-format @@ -2423,6 +2405,11 @@ msgid "" " You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to <a href=\"%(login_url)s\">sign in</a>.\n" " " msgstr "" +"\n" +" Sie haben sich entschieden, die Anmeldung mit einem Ihrer " +"bestehenden Konten bei uns abzubrechen. Wenn dies ein Fehler war, <a href=\"" +"%(login_url)s\">fahren Sie bitte mit dem Login fort</a>.\n" +" " #: aleksis/core/templates/socialaccount/signup.html:12 #, python-format @@ -2430,36 +2417,31 @@ msgid "" "You are about to use your %(provider_name)s account to login to\n" " %(site_name)s. As a final step, please complete the following form:" msgstr "" +"Sie sind dabei, Ihr %(provider_name)s-Konto zur Anmeldung bei %(site_name)s " +"zu nutzen. \n" +"Als ein letzter Schritt vervollständigen Sie bitte das folgende Formular:" #: aleksis/core/templates/socialaccount/snippets/provider_list.html:12 -#, fuzzy, python-format -#| msgid "" -#| "\n" -#| " Valid for %(from)s\n" -#| " " +#, python-format msgid "" "\n" " Login with %(name)s\n" " " msgstr "" "\n" -" Gültig für %(from)s\n" -" " +" Anmelden mit %(name)s\n" +" " #: aleksis/core/templates/socialaccount/snippets/provider_list.html:21 -#, fuzzy, python-format -#| msgid "" -#| "\n" -#| " Valid for %(from)s\n" -#| " " +#, python-format msgid "" "\n" " Login with %(name)s\n" " " msgstr "" "\n" -" Gültig für %(from)s\n" -" " +" Anmelden mit %(name)s\n" +" " #: aleksis/core/templates/socialaccount/snippets/provider_list.html:30 msgid "" @@ -2467,6 +2449,9 @@ msgid "" " No 3rd party account providers available.\n" " " msgstr "" +"\n" +" Keine Drittanbieter verfügbar.\n" +" " #: aleksis/core/templates/templated_email/data_checks.email:4 msgid "The system detected some new problems with your data." @@ -2645,11 +2630,6 @@ msgid "Please login to see this page." msgstr "Bitte melden Sie sich an, um diese Seite zu sehen." #: aleksis/core/templates/two_factor/core/login.html:43 -#, fuzzy -#| msgid "" -#| "\n" -#| " We are calling your phone right now, please enter the digits you hear.\n" -#| " " msgid "" "\n" " We are calling your phone right now, please enter the\n" @@ -2657,15 +2637,11 @@ msgid "" " " msgstr "" "\n" -" Wir rufen Ihr Telefon jetzt an, bitte geben Sie die Zahlen ein, die Sie hören.\n" -" " +" Wir rufen Ihr Telefon jetzt an, \n" +" bitte geben Sie die Zahlen ein, die Sie hören.\n" +" " #: aleksis/core/templates/two_factor/core/login.html:48 -#, fuzzy -#| msgid "" -#| "\n" -#| " We sent you a text message, please enter the tokens we sent.\n" -#| " " msgid "" "\n" " We sent you a text message, please enter the tokens we\n" @@ -2673,29 +2649,23 @@ msgid "" " " msgstr "" "\n" -" Wir haben Ihnen per SMS einen Token geschickt, bitte geben Sie diesen ein.\n" -" " +" Wir haben Ihnen per SMS einen Token geschickt, \n" +" bitte geben Sie diesen ein.\n" +" " #: aleksis/core/templates/two_factor/core/login.html:53 -#, fuzzy -#| msgid "" -#| "Please enter the tokens generated by your token\n" -#| " generator." msgid "" "\n" " Please enter the tokens generated by your token\n" " generator.\n" " " msgstr "" -"Bitte geben Sie den von Ihrem Token-Generator\n" -" generierten Token ein." +"\n" +" Bitte geben Sie den von Ihrem Token-Generator\n" +" generierten Token ein.\n" +" " #: aleksis/core/templates/two_factor/core/login.html:59 -#, fuzzy -#| msgid "" -#| "Use this form for entering backup tokens for logging in.\n" -#| " These tokens have been generated for you to print and keep safe. Please\n" -#| " enter one of these backup tokens to login to your account." msgid "" "\n" " Use this form for entering backup tokens for logging in.\n" @@ -2703,9 +2673,13 @@ msgid "" " enter one of these backup tokens to login to your account.\n" " " msgstr "" -"Nutzen Sie dieses Formular um Ihre Backup-Tokens zum Anmelden einzugeben.\n" -" Diese Tokens wurden für Sie generiert, um diese gut aufzubewahren. Bitte\n" -" geben Sie einen dieser Tokens ein, um sich einzuloggen." +"\n" +" Nutzen Sie dieses Formular um Ihre Backup-Tokens zum " +"Anmelden einzugeben.\n" +" Diese Tokens wurden für Sie generiert, um diese gut " +"aufzubewahren. Bitte\n" +" geben Sie einen dieser Tokens ein, um sich einzuloggen.\n" +" " #: aleksis/core/templates/two_factor/core/login.html:74 msgid "Or, alternatively, use one of your backup phones:" diff --git a/aleksis/core/migrations/0007_dashboard_widget_order.py b/aleksis/core/migrations/0007_dashboard_widget_order.py index b25390d77aa8717e5ca499da7618d52f670d1be8..78c1c8bcb372a8fd9abfa6bd578e88c70e61d01f 100644 --- a/aleksis/core/migrations/0007_dashboard_widget_order.py +++ b/aleksis/core/migrations/0007_dashboard_widget_order.py @@ -29,7 +29,6 @@ class Migration(migrations.Migration): 'verbose_name_plural': 'Dashboard widget orders', }, managers=[ - ('objects', django.contrib.sites.managers.CurrentSiteManager()), ], ), ] diff --git a/docs/dev/01_setup.rst b/docs/dev/01_setup.rst index 122a9baa14ce942886bd8d1a73fc5584f77cad19..dd3121a822e53c603b21511b790f5ef6950f295a 100644 --- a/docs/dev/01_setup.rst +++ b/docs/dev/01_setup.rst @@ -11,22 +11,41 @@ framework and selected apps. Also, `Yarn`_ is needed to resolve JavaScript dependencies. +For repository management, `myrepos` is required. + +Setup database and message broker +--------------------------------- + +AlekSIS requires `PostgreSQL`_ (version 13 or newer) as database +backend. To provide a database names `aleksis` with a user named +`aleksis` on Debian:: + + sudo apt install postgresql-13 + sudo -u postgres createuser -P aleksis + sudo -u postgres createdb -O aleksis aleksis + +Additionally, `Redis`_ is used as message broker and for caching. +The default configuration of the server in Debian is sufficient:: + + sudo apt install redis-server + Get the source tree ------------------- To download AlekSIS and all officially bundled apps in their development version, use Git like so:: - git clone --recurse-submodules https://edugit.org/AlekSIS/AlekSIS + git clone https://edugit.org/AlekSIS/official/AlekSIS -If you do not want to download the bundled apps, leave out the -``--recurse-submodules`` option. +This first downloads a meta repository that contains a config file for mr. +To clone the AlekSIS-Core and all official (and onboarding) apps, run:: + mr update Install native dependencies --------------------------- -Some system libraries are required to install AlekSIS:: +Some system libraries are required to install AlekSIS. On Debian, for example, this would be done with:: sudo apt install build-essential libpq-dev libpq5 libssl-dev python3-dev python3-pip python3-venv yarnpkg gettext chromium @@ -36,7 +55,7 @@ Get Poetry Make sure to have Poetry installed like described in its documentation. Right now, we encourage using pip to install Poetry once system-wide (this will change once distributions pick up -Poetry). On Debian, for example, this would be done with:: +Poetry).:: sudo pip3 install poetry @@ -47,10 +66,15 @@ Install AlekSIS in its own virtual environment ---------------------------------------------- Poetry will automatically manage virtual environments per project, so -installing AlekSIS is a matter of:: +installing AlekSIS is a matter of switching into the Core's directory and running the initial AlekSIS installation:: + cd apps/official/AlekSIS-Core poetry install +Now it's recommended to run a shell that uses the newly created venv:: + + poetry shell + Regular tasks ------------- @@ -63,13 +87,13 @@ some maintenance tasks need to be done: 3. Run database migrations All three steps can be done with the ``poetry run`` command and -``manage.py``:: +``aleksis-admin``:: - poetry run ./manage.py yarn install - poetry run ./manage.py collectstatic - poetry run ./manage.py compilemessages - poetry run ./manage.py migrate - poetry run ./manage.py createinitialrevisions + poetry run aleksis-admin yarn install + poetry run aleksis-admin collectstatic + poetry run aleksis-admin compilemessages + poetry run aleksis-admin migrate + poetry run aleksis-admin createinitialrevisions (You might need database settings for the `migrate` command; see below.) @@ -78,13 +102,13 @@ Running the development server The development server can be started using Django's ``runserver`` command. If you want to automatically start other necessary tools in development, -like the `Celery` worker and scheduler, use ``runuwsgi`` instead. +like the `Celery`_ worker and scheduler, use ``runuwsgi`` instead. You can either configure AlekSIS like in a production environment, or pass basic settings in as environment variable. Here is an example that runs the development server against a local PostgreSQL database with password `aleksis` (all else remains default) and with the `debug` setting enabled:: - ALEKSIS_debug=true ALEKSIS_database__password=aleksis poetry run ./manage.py runuwsgi + ALEKSIS_debug=true ALEKSIS_database__password=aleksis poetry run aleksis-admin runuwsgi .. figure:: /screenshots/index.png :scale: 50% @@ -96,4 +120,6 @@ development server against a local PostgreSQL database with password .. _Poetry: https://poetry.eustace.io/ .. _Poetry installation methods: https://poetry.eustace.io/docs/#installation .. _Yarn: https://yarnpkg.com +.. _PostgreSQL: https://www.postgresql.org/ +.. _Redis: https://redis.io/ .. _Celery: https://celeryproject.org/ diff --git a/docs/dev/02_install_apps.rst b/docs/dev/02_install_apps.rst index db3fe87f6ff6407ad0ca0db0aec0177720be70dd..bbfbb9b4007e533c1e910ae829ddf80f382b7d99 100644 --- a/docs/dev/02_install_apps.rst +++ b/docs/dev/02_install_apps.rst @@ -4,18 +4,18 @@ Installing apps into development environment Officially bundled apps ----------------------- -Officially bundlede apps are available in the ``apps/official/`` -sub-folder as Git submodules. If you followed the documentation, they +Officially bundled apps are available in the ``apps/official/`` +sub-folder of the meta repository. If you followed the documentation, they will already be checked out in the version required for the bundle you are running. -Installing apps into the existing virtual environment is a bit awkward:: +Installing apps into the existing virtual environment of `AlekSIS-Core` can +be easily done after starting `poetry shell`:: - poetry run sh -c "cd apps/official/AlekSIS-App-Exlibris; poetry install" - -This will install the Exlibris app (library management) app by using a -shell for first ``cd``'ing into the app directory and then using -poetry to install the app. + poetry install Do not forget to run the maintenance tasks described earlier after installing any app. + +**Heads up:** This is not suitable for working on the core, because it +will install the `AlekSIS-Core` version used by the app using `pip` again. diff --git a/poetry.lock b/poetry.lock index 61d9e7bf6c8b4a7830a843cec8e81c7322bbe7b6..b5989fdcb97c20819171489c37d17a2e8397ce44 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1124,7 +1124,7 @@ tablib = ["tablib"] [[package]] name = "django-templated-email" -version = "2.3.0" +version = "2.4.0" description = "A Django oriented templated / transaction email abstraction" category = "main" optional = false @@ -1132,7 +1132,6 @@ python-versions = "*" [package.dependencies] django-render-block = ">=0.5" -six = ">=1" [[package]] name = "django-timezone-field" @@ -1630,7 +1629,7 @@ zookeeper = ["kazoo (>=1.3.1)"] [[package]] name = "libsass" -version = "0.20.1" +version = "0.21.0" description = "Sass for Python: A straightforward binding of libsass for Python." category = "main" optional = false @@ -2671,7 +2670,7 @@ s3 = ["boto3", "django-storages"] [metadata] lock-version = "1.1" python-versions = "^3.9" -content-hash = "ea255c70cdcfee06fa1ba40233d5ddc8cc8f10409ca2f24d1ddb66a5cfae0d51" +content-hash = "9009e40aa54a752649e5539cba2b0b12dc0580c7e93999d177b19f041bdaf85b" [metadata.files] alabaster = [ @@ -3136,7 +3135,7 @@ django-tables2 = [ {file = "django_tables2-2.4.0-py2.py3-none-any.whl", hash = "sha256:0f10ecef25708385a9d32d68d7c9478ca8dda31569410cb05a025be3f2c57593"}, ] django-templated-email = [ - {file = "django-templated-email-2.3.0.tar.gz", hash = "sha256:536c4e5ae099eabfb9aab36087d4d7799948c654e73da55a744213d086d5bb33"}, + {file = "django-templated-email-2.4.0.tar.gz", hash = "sha256:3bcd95cb806070b13c9919a72fec944b5ce319e30e8828a08180767bb1f84027"}, ] django-timezone-field = [ {file = "django-timezone-field-4.1.2.tar.gz", hash = "sha256:cffac62452d060e365938aa9c9f7b72d70d8b26b9c60243bce227b35abd1b9df"}, @@ -3289,19 +3288,15 @@ kombu = [ {file = "kombu-5.0.2.tar.gz", hash = "sha256:f4965fba0a4718d47d470beeb5d6446e3357a62402b16c510b6a2f251e05ac3c"}, ] libsass = [ - {file = "libsass-0.20.1-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:4a246e4b88fd279abef8b669206228c92534d96ddcd0770d7012088c408dff23"}, - {file = "libsass-0.20.1-cp27-cp27m-win32.whl", hash = "sha256:697f0f9fa8a1367ca9ec6869437cb235b1c537fc8519983d1d890178614a8903"}, - {file = "libsass-0.20.1-cp27-cp27m-win_amd64.whl", hash = "sha256:1b2d415bbf6fa7da33ef46e549db1418498267b459978eff8357e5e823962d35"}, - {file = "libsass-0.20.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1521d2a8d4b397c6ec90640a1f6b5529077035efc48ef1c2e53095544e713d1b"}, - {file = "libsass-0.20.1-cp36-abi3-macosx_10_14_x86_64.whl", hash = "sha256:2ae806427b28bc1bb7cb0258666d854fcf92ba52a04656b0b17ba5e190fb48a9"}, - {file = "libsass-0.20.1-cp36-abi3-manylinux1_x86_64.whl", hash = "sha256:25ebc2085f5eee574761ccc8d9cd29a9b436fc970546d5ef08c6fa41eb57dff1"}, - {file = "libsass-0.20.1-cp36-cp36m-win32.whl", hash = "sha256:553e5096414a8d4fb48d0a48f5a038d3411abe254d79deac5e008516c019e63a"}, - {file = "libsass-0.20.1-cp36-cp36m-win_amd64.whl", hash = "sha256:e64ae2587f1a683e831409aad03ba547c245ef997e1329fffadf7a866d2510b8"}, - {file = "libsass-0.20.1-cp37-cp37m-win32.whl", hash = "sha256:c9411fec76f480ffbacc97d8188322e02a5abca6fc78e70b86a2a2b421eae8a2"}, - {file = "libsass-0.20.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a8fd4af9f853e8bf42b1425c5e48dd90b504fa2e70d7dac5ac80b8c0a5a5fe85"}, - {file = "libsass-0.20.1-cp38-cp38-win32.whl", hash = "sha256:f6852828e9e104d2ce0358b73c550d26dd86cc3a69439438c3b618811b9584f5"}, - {file = "libsass-0.20.1-cp38-cp38-win_amd64.whl", hash = "sha256:daa98a51086d92aa7e9c8871cf1a8258124b90e2abf4697852a3dca619838618"}, - {file = "libsass-0.20.1.tar.gz", hash = "sha256:e0e60836eccbf2d9e24ec978a805cd6642fa92515fbd95e3493fee276af76f8a"}, + {file = "libsass-0.21.0-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:06c8776417fe930714bdc930a3d7e795ae3d72be6ac883ff72a1b8f7c49e5ffb"}, + {file = "libsass-0.21.0-cp27-cp27m-win32.whl", hash = "sha256:a005f298f64624f313a3ac618ab03f844c71d84ae4f4a4aec4b68d2a4ffe75eb"}, + {file = "libsass-0.21.0-cp27-cp27m-win_amd64.whl", hash = "sha256:6b984510ed94993708c0d697b4fef2d118929bbfffc3b90037be0f5ccadf55e7"}, + {file = "libsass-0.21.0-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1e25dd9047a9392d3c59a0b869e0404f2b325a03871ee45285ee33b3664f5613"}, + {file = "libsass-0.21.0-cp36-abi3-macosx_10_14_x86_64.whl", hash = "sha256:12f39712de38689a8b785b7db41d3ba2ea1d46f9379d81ea4595802d91fa6529"}, + {file = "libsass-0.21.0-cp36-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e2b1a7d093f2e76dc694c17c0c285e846d0b0deb0e8b21dc852ba1a3a4e2f1d6"}, + {file = "libsass-0.21.0-cp36-abi3-win32.whl", hash = "sha256:abc29357ee540849faf1383e1746d40d69ed5cb6d4c346df276b258f5aa8977a"}, + {file = "libsass-0.21.0-cp36-abi3-win_amd64.whl", hash = "sha256:659ae41af8708681fa3ec73f47b9735a6725e71c3b66ff570bfce78952f2314e"}, + {file = "libsass-0.21.0.tar.gz", hash = "sha256:d5ba529d9ce668be9380563279f3ffe988f27bc5b299c5a28453df2e0b0fbaf2"}, ] license-expression = [ {file = "license-expression-1.2.tar.gz", hash = "sha256:7960e1dfdf20d127e75ead931476f2b5c7556df05b117a73880b22ade17d1abc"}, diff --git a/pyproject.toml b/pyproject.toml index 99f2f3ec5a70246da90c4e4a7d35e79a6b0156b7..ba39d5d1f7f4176ccc9d2b8579c720ce633af173 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,7 +41,7 @@ django-menu-generator-ng = "^1.2.3" django-tables2 = "^2.1" django-phonenumber-field = {version = "<5.2", extras = ["phonenumbers"]} django-sass-processor = "^1.0" -libsass = "^0.20.0" +libsass = "^0.21.0" colour = "^0.1.5" dynaconf = {version = "^3.1", extras = ["yaml", "toml", "ini"]} django-auth-ldap = { version = "^2.2", optional = true }