Compare commits

...

11 Commits

Author SHA1 Message Date
Erik Kalkoken
9b9756ff14 Merge branch 'seperate-out-celery-once' into 'master'
Remove dependecies from celery_once customizations

See merge request allianceauth/allianceauth!1491
2025-07-03 07:37:58 +02:00
Joel Falknau
34b94ae685
Version Bump 4.8.0 2025-07-03 09:19:25 +10:00
Ariel Rin
50fd900bdc Merge branch 'translations_7f31a07ccd4e4a66b1dd7b6bc2dbddb5' into 'master'
Updates for project Alliance Auth

See merge request allianceauth/allianceauth!1732
2025-07-02 23:17:15 +00:00
Ariel Rin
1bf8ec5bc6 Updates for project Alliance Auth 2025-07-02 23:17:15 +00:00
Ariel Rin
f849b75029 Merge branch 'fix-sidebar-localStorage-behavior' into 'master'
[FIX] Sidebar `localStorage` behavior

See merge request allianceauth/allianceauth!1733
2025-07-02 23:06:28 +00:00
Peter Pfeufer
25c27793fe
[FIX] Sidebar localStorage behavior 2025-07-01 14:07:12 +02:00
Ariel Rin
6e413772ad Merge branch 'custom-static-file-storage' into 'master'
[ADD] Custom Static Files Storage Class

See merge request allianceauth/allianceauth!1726
2025-06-30 23:43:33 +00:00
Peter Pfeufer
fc51f6bea2
[FIX] Cleanup file path name to work with CSS url("foobar") notations
This essentially removes quotes from the filename, which aren't allowed anyways.
2025-06-12 10:19:48 +02:00
Peter Pfeufer
6477c22308
[CHANGE] Use the same quotation marks for strings and not a mix of both
Just while we're at it …
2025-06-01 00:05:34 +02:00
Peter Pfeufer
329b3fecfb
[ADD] Custom Static Files Storage Class 2025-06-01 00:02:09 +02:00
Erik Kalkoken
0dd47e72bc Move celery once config into own package 2023-02-28 15:16:51 +01:00
39 changed files with 1493 additions and 911 deletions

View File

@ -5,7 +5,7 @@ manage online service access.
# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
__version__ = '4.7.0'
__version__ = '4.8.0'
__title__ = 'Alliance Auth'
__url__ = 'https://gitlab.com/allianceauth/allianceauth'
NAME = f'{__title__} v{__version__}'

View File

@ -0,0 +1,105 @@
"""
Custom static files storage for Alliance Auth.
This module defines a custom static files storage class for
Alliance Auth, named `AaManifestStaticFilesStorage`.
Using `ManifestStaticFilesStorage` will give us a hashed name for
our static files, which is useful for cache busting.
This storage class extends Django's `ManifestStaticFilesStorage` to ignore missing files,
which the original class does not handle, and log them in debug mode.
It is useful for handling cases where static files may not exist, such as when a
CSS file references a background image that is not present in the static files directory.
With debug mode enabled, it will print a message for each missing file when running `collectstatic`,
which can help identify issues with static file references during development.
"""
from django.conf import settings
from django.contrib.staticfiles.storage import ManifestStaticFilesStorage
class AaManifestStaticFilesStorage(ManifestStaticFilesStorage):
"""
Custom static files storage that ignores missing files.
"""
@classmethod
def _cleanup_name(cls, name: str) -> str:
"""
Clean up the name by removing quotes.
This method is used to ensure that the name does not contain any quotes,
which can cause issues with file paths.
:param name: The name of the static file.
:type name: str
:return: The cleaned-up name without quotes.
:rtype: str
"""
# Remove quotes from the name
return name.replace('"', "").replace("'", "")
def __init__(self, *args, **kwargs):
"""
Initialize the static files storage, ignoring missing files.
:param args:
:type args:
:param kwargs:
:type kwargs:
"""
self.missing_files = []
super().__init__(*args, **kwargs)
def hashed_name(self, name, content=None, filename=None):
"""
Generate a hashed name for the given static file, ignoring missing files.
Ignore missing files, e.g. non-existent background image referenced from css.
Returns the original filename if the referenced file doesn't exist.
:param name: The name of the static file to hash.
:type name: str
:param content: The content of the static file, if available.
:type content: bytes | None
:param filename: The original filename of the static file, if available.
:type filename: str | None
:return: The hashed name of the static file, or the original name if the file is missing.
:rtype: str
"""
try:
clean_name = self._cleanup_name(name)
return super().hashed_name(clean_name, content, filename)
except ValueError as e:
if settings.DEBUG:
# In debug mode, we log the missing file message
message = e.args[0].split(" with ")[0]
self.missing_files.append(message)
# print(f'\x1b[0;30;41m{message}\x1b[0m')
return name
def post_process(self, *args, **kwargs):
"""
Post-process the static files, printing any missing files in debug mode.
:param args:
:type args:
:param kwargs:
:type kwargs:
:return:
:rtype:
"""
yield from super().post_process(*args, **kwargs)
if settings.DEBUG:
# In debug mode, print the missing files
for message in sorted(set(self.missing_files)):
print(f"\x1b[0;30;41m{message}\x1b[0m")

File diff suppressed because it is too large Load Diff

View File

@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-24 16:55+1000\n"
"POT-Creation-Date: 2025-06-19 20:23+1000\n"
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
"Last-Translator: Peter Pfeufer, 2025\n"
"Language-Team: German (https://app.transifex.com/alliance-auth/teams/107430/de/)\n"
@ -25,7 +25,7 @@ msgstr ""
#: allianceauth/analytics/apps.py:8
msgid "Analytics"
msgstr ""
msgstr "Analyse"
#: allianceauth/analytics/models.py:22
msgid "Google Analytics Universal"
@ -37,7 +37,7 @@ msgstr "Google Analytics V4"
#: allianceauth/authentication/apps.py:9
msgid "Authentication"
msgstr ""
msgstr "Authentifizierung"
#: allianceauth/authentication/constants.py:6
msgid ""
@ -134,7 +134,7 @@ msgid "Simplified Chinese"
msgstr "Vereinfachtes Chinesisch"
#: allianceauth/authentication/models.py:100
#: allianceauth/menu/templates/menu/menu-user.html:42
#: allianceauth/menu/templates/menu/menu-user.html:67
msgid "Language"
msgstr "Sprache"
@ -144,7 +144,7 @@ msgid "Night Mode"
msgstr "Nachtmodus"
#: allianceauth/authentication/models.py:109
#: allianceauth/menu/templates/menu/menu-user.html:46
#: allianceauth/theme/templates/theme/theme_select.html:4
msgid "Theme"
msgstr "Theme"
@ -215,6 +215,8 @@ msgstr "Status:"
#: allianceauth/authentication/templates/authentication/tokens.html:7
#: allianceauth/authentication/templates/authentication/tokens.html:11
#: allianceauth/menu/templates/menu/menu-user.html:133
#: allianceauth/menu/templates/menu/menu-user.html:136
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62
msgid "Token Management"
msgstr "Token-Verwaltung"
@ -456,7 +458,7 @@ msgstr "Fehler beim Sammeln von Corpstatistiken mit ausgewählten Token."
#: allianceauth/crontab/apps.py:16
msgid "Crontab"
msgstr ""
msgstr "Crontab"
#: allianceauth/crontab/models.py:13
msgid "Minute Offset"
@ -493,11 +495,11 @@ msgstr "Dieses CSS wird der Site nach dem Standard-CSS hinzugefügt."
#: allianceauth/eveonline/apps.py:8
msgid "EVE Online"
msgstr ""
msgstr "EVE Online"
#: allianceauth/eveonline/autogroups/apps.py:8
msgid "EVE Online Autogroups"
msgstr ""
msgstr "EVE Online Autogrouppen"
#: allianceauth/fleetactivitytracking/apps.py:8
#: allianceauth/fleetactivitytracking/auth_hooks.py:10
@ -614,7 +616,7 @@ msgstr "Schiff"
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18
#: allianceauth/timerboard/templates/timerboard/timertable.html:12
msgid "EVE time"
msgstr ""
msgstr "EVE Zeit"
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:49
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:52
@ -782,7 +784,7 @@ msgstr ""
#: allianceauth/framework/apps.py:16
msgid "Framework"
msgstr ""
msgstr "Framework"
#: allianceauth/groupmanagement/apps.py:8
#: allianceauth/groupmanagement/auth_hooks.py:18
@ -1240,7 +1242,7 @@ msgstr "Austrittsanfrage für Gruppe %(group)s gesendet."
#: allianceauth/hrapplications/apps.py:8
msgid "HR Applications"
msgstr ""
msgstr "Bewerbungen"
#: allianceauth/hrapplications/auth_hooks.py:15
msgid "Applications"
@ -1450,7 +1452,7 @@ msgstr "sichtbar"
#: allianceauth/menu/apps.py:16
msgid "Menu"
msgstr ""
msgstr "Menü"
#: allianceauth/menu/constants.py:16
msgid "app"
@ -1528,20 +1530,38 @@ msgstr "Ordner hinzufügen"
msgid "Notifications"
msgstr "Benachrichtigungen"
#: allianceauth/menu/templates/menu/menu-user.html:56
#: allianceauth/menu/templates/menu/menu-user.html:77
msgid "Super User"
msgstr "Super User"
#: allianceauth/menu/templates/menu/menu-user.html:70
#: allianceauth/menu/templates/menu/menu-user.html:83
#: allianceauth/menu/templates/menu/menu-user.html:86
msgid "Alliance Auth Documentation"
msgstr "Alliance Auth Dokumentation"
#: allianceauth/menu/templates/menu/menu-user.html:94
#: allianceauth/menu/templates/menu/menu-user.html:97
msgid "Alliance Auth Discord"
msgstr "Alliance Auth Discord"
#: allianceauth/menu/templates/menu/menu-user.html:105
#: allianceauth/menu/templates/menu/menu-user.html:108
msgid "Alliance Auth Git"
msgstr "Alliance Auth Git"
#: allianceauth/menu/templates/menu/menu-user.html:118
#: allianceauth/menu/templates/menu/menu-user.html:121
#: allianceauth/templates/allianceauth/top-menu-admin.html:9
msgid "Admin"
msgstr "Admin"
#: allianceauth/menu/templates/menu/menu-user.html:82
#: allianceauth/menu/templates/menu/menu-user.html:144
#: allianceauth/menu/templates/menu/menu-user.html:147
msgid "Sign Out"
msgstr "Ausloggen"
#: allianceauth/menu/templates/menu/menu-user.html:86
#: allianceauth/menu/templates/menu/menu-user.html:155
#: allianceauth/menu/templates/menu/menu-user.html:158
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:17
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:18
msgid "Sign In"
@ -1706,7 +1726,7 @@ msgstr "Flottenoperationen Verwaltung"
#: allianceauth/optimer/templates/optimer/management.html:28
#: allianceauth/timerboard/templates/timerboard/view.html:32
msgid "Current EVE time:"
msgstr ""
msgstr "Aktuelle EVE Zeit"
#: allianceauth/optimer/templates/optimer/management.html:36
msgid "Next Fleet Operations"
@ -1873,7 +1893,7 @@ msgstr "Das Passwort muss mindestens 8 Zeichen lang sein"
#: allianceauth/services/modules/discord/apps.py:8
msgid "Discord Service"
msgstr ""
msgstr "Discord Service"
#: allianceauth/services/modules/discord/models.py:187
msgid "Discord Account Disabled"
@ -1929,7 +1949,7 @@ msgstr ""
#: allianceauth/services/modules/discourse/apps.py:8
msgid "Discourse Service"
msgstr ""
msgstr "Discourse Service"
#: allianceauth/services/modules/discourse/templates/services/discourse/discourse_service_ctrl.html:5
msgid "Discourse"
@ -1969,11 +1989,11 @@ msgstr ""
#: allianceauth/services/modules/example/apps.py:8
msgid "Example Service"
msgstr ""
msgstr "Beispiel Service"
#: allianceauth/services/modules/ips4/apps.py:8
msgid "IPS4 Service"
msgstr ""
msgstr "IPS4 Service"
#: allianceauth/services/modules/ips4/views.py:31
msgid "Activated IPSuite4 account."
@ -2000,7 +2020,7 @@ msgstr "IP4Suite Konto deaktiviert."
#: allianceauth/services/modules/mumble/apps.py:8
msgid "Mumble Service"
msgstr ""
msgstr "Mumble Service"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7
msgid "Mumble"
@ -2059,7 +2079,7 @@ msgstr "Verlauf der Mumbleverbindungen"
#: allianceauth/services/modules/openfire/apps.py:8
msgid "Openfire Service"
msgstr ""
msgstr "Openfire Service"
#: allianceauth/services/modules/openfire/auth_hooks.py:27
msgid "Jabber"
@ -2114,7 +2134,7 @@ msgstr "Setze Jabber Passwort."
#: allianceauth/services/modules/phpbb3/apps.py:8
msgid "phpBB3 Service"
msgstr ""
msgstr "phpBB3 Service"
#: allianceauth/services/modules/phpbb3/views.py:34
msgid "Activated forum account."
@ -2141,7 +2161,7 @@ msgstr "Setze Forum Passwort."
#: allianceauth/services/modules/smf/apps.py:8
msgid "SMF Service"
msgstr ""
msgstr "SMF Service"
#: allianceauth/services/modules/smf/views.py:52
msgid "Activated SMF account."
@ -2168,7 +2188,7 @@ msgstr "Setze SMF Passwort."
#: allianceauth/services/modules/teamspeak3/apps.py:8
msgid "TeamSpeak 3 Service"
msgstr ""
msgstr "TeamSpeak 3 Service"
#: allianceauth/services/modules/teamspeak3/forms.py:14
#, python-format
@ -2222,7 +2242,7 @@ msgstr "TeamSpeak3 Berechtigungsschlüssel zurücksetzen."
#: allianceauth/services/modules/xenforo/apps.py:8
msgid "Xenforo Service"
msgstr ""
msgstr "Xenforo Service"
#: allianceauth/services/modules/xenforo/views.py:30
msgid "Activated XenForo account."
@ -2732,7 +2752,7 @@ msgstr "Ausloggen"
msgid "Toggle navigation"
msgstr "Navigation umschalten"
#: allianceauth/theme/templates/theme/theme_select.html:7
#: allianceauth/theme/templates/theme/theme_select.html:11
msgid "Select Theme"
msgstr "Theme auswählen"
@ -2931,7 +2951,7 @@ msgstr "Aufgegeben"
#: allianceauth/timerboard/models.py:60
msgid "Theft"
msgstr ""
msgstr "Diebstahl"
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7
#: allianceauth/timerboard/templates/timerboard/view.html:54

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-19 20:23+1000\n"
"POT-Creation-Date: 2025-07-03 09:07+1000\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"
@ -57,7 +57,7 @@ msgid "You are not allowed to add or remove these restricted groups: %s"
msgstr ""
#: allianceauth/authentication/models.py:72
#: allianceauth/project_template/project_name/settings/base.py:106
#: allianceauth/project_template/project_name/settings/base.py:104
msgid "English"
msgstr ""
@ -66,57 +66,57 @@ msgid "Czech"
msgstr ""
#: allianceauth/authentication/models.py:74
#: allianceauth/project_template/project_name/settings/base.py:108
#: allianceauth/project_template/project_name/settings/base.py:106
msgid "German"
msgstr ""
#: allianceauth/authentication/models.py:75
#: allianceauth/project_template/project_name/settings/base.py:109
#: allianceauth/project_template/project_name/settings/base.py:107
msgid "Spanish"
msgstr ""
#: allianceauth/authentication/models.py:76
#: allianceauth/project_template/project_name/settings/base.py:110
#: allianceauth/project_template/project_name/settings/base.py:108
msgid "Italian"
msgstr ""
#: allianceauth/authentication/models.py:77
#: allianceauth/project_template/project_name/settings/base.py:111
#: allianceauth/project_template/project_name/settings/base.py:109
msgid "Japanese"
msgstr ""
#: allianceauth/authentication/models.py:78
#: allianceauth/project_template/project_name/settings/base.py:112
#: allianceauth/project_template/project_name/settings/base.py:110
msgid "Korean"
msgstr ""
#: allianceauth/authentication/models.py:79
#: allianceauth/project_template/project_name/settings/base.py:113
#: allianceauth/project_template/project_name/settings/base.py:111
msgid "French"
msgstr ""
#: allianceauth/authentication/models.py:80
#: allianceauth/project_template/project_name/settings/base.py:116
#: allianceauth/project_template/project_name/settings/base.py:114
msgid "Russian"
msgstr ""
#: allianceauth/authentication/models.py:81
#: allianceauth/project_template/project_name/settings/base.py:114
#: allianceauth/project_template/project_name/settings/base.py:112
msgid "Dutch"
msgstr ""
#: allianceauth/authentication/models.py:82
#: allianceauth/project_template/project_name/settings/base.py:115
#: allianceauth/project_template/project_name/settings/base.py:113
msgid "Polish"
msgstr ""
#: allianceauth/authentication/models.py:83
#: allianceauth/project_template/project_name/settings/base.py:117
#: allianceauth/project_template/project_name/settings/base.py:115
msgid "Ukrainian"
msgstr ""
#: allianceauth/authentication/models.py:84
#: allianceauth/project_template/project_name/settings/base.py:118
#: allianceauth/project_template/project_name/settings/base.py:116
msgid "Simplified Chinese"
msgstr ""

View File

@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-24 16:55+1000\n"
"POT-Creation-Date: 2025-06-19 20:23+1000\n"
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
"Last-Translator: trenus, 2025\n"
"Language-Team: Spanish (https://app.transifex.com/alliance-auth/teams/107430/es/)\n"
@ -130,7 +130,7 @@ msgid "Simplified Chinese"
msgstr "Chino Simplificado"
#: allianceauth/authentication/models.py:100
#: allianceauth/menu/templates/menu/menu-user.html:42
#: allianceauth/menu/templates/menu/menu-user.html:67
msgid "Language"
msgstr "Idioma"
@ -140,7 +140,7 @@ msgid "Night Mode"
msgstr "Modo Nocturno"
#: allianceauth/authentication/models.py:109
#: allianceauth/menu/templates/menu/menu-user.html:46
#: allianceauth/theme/templates/theme/theme_select.html:4
msgid "Theme"
msgstr "Tema"
@ -211,6 +211,8 @@ msgstr "Estado:"
#: allianceauth/authentication/templates/authentication/tokens.html:7
#: allianceauth/authentication/templates/authentication/tokens.html:11
#: allianceauth/menu/templates/menu/menu-user.html:133
#: allianceauth/menu/templates/menu/menu-user.html:136
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62
msgid "Token Management"
msgstr "Gestión de Tokens"
@ -1518,20 +1520,38 @@ msgstr ""
msgid "Notifications"
msgstr "Notificaciones"
#: allianceauth/menu/templates/menu/menu-user.html:56
#: allianceauth/menu/templates/menu/menu-user.html:77
msgid "Super User"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:70
#: allianceauth/menu/templates/menu/menu-user.html:83
#: allianceauth/menu/templates/menu/menu-user.html:86
msgid "Alliance Auth Documentation"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:94
#: allianceauth/menu/templates/menu/menu-user.html:97
msgid "Alliance Auth Discord"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:105
#: allianceauth/menu/templates/menu/menu-user.html:108
msgid "Alliance Auth Git"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:118
#: allianceauth/menu/templates/menu/menu-user.html:121
#: allianceauth/templates/allianceauth/top-menu-admin.html:9
msgid "Admin"
msgstr "Administrador"
#: allianceauth/menu/templates/menu/menu-user.html:82
#: allianceauth/menu/templates/menu/menu-user.html:144
#: allianceauth/menu/templates/menu/menu-user.html:147
msgid "Sign Out"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:86
#: allianceauth/menu/templates/menu/menu-user.html:155
#: allianceauth/menu/templates/menu/menu-user.html:158
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:17
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:18
msgid "Sign In"
@ -2713,7 +2733,7 @@ msgstr "Salir"
msgid "Toggle navigation"
msgstr "Navegacion"
#: allianceauth/theme/templates/theme/theme_select.html:7
#: allianceauth/theme/templates/theme/theme_select.html:11
msgid "Select Theme"
msgstr "Seleccionar tema"

View File

@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-24 16:55+1000\n"
"POT-Creation-Date: 2025-06-19 20:23+1000\n"
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
"Last-Translator: T'rahk Rokym, 2024\n"
"Language-Team: French (France) (https://app.transifex.com/alliance-auth/teams/107430/fr_FR/)\n"
@ -143,7 +143,7 @@ msgid "Simplified Chinese"
msgstr ""
#: allianceauth/authentication/models.py:100
#: allianceauth/menu/templates/menu/menu-user.html:42
#: allianceauth/menu/templates/menu/menu-user.html:67
msgid "Language"
msgstr "Langue"
@ -153,7 +153,7 @@ msgid "Night Mode"
msgstr "Mode Nuit"
#: allianceauth/authentication/models.py:109
#: allianceauth/menu/templates/menu/menu-user.html:46
#: allianceauth/theme/templates/theme/theme_select.html:4
msgid "Theme"
msgstr "Thème"
@ -224,6 +224,8 @@ msgstr "État:"
#: allianceauth/authentication/templates/authentication/tokens.html:7
#: allianceauth/authentication/templates/authentication/tokens.html:11
#: allianceauth/menu/templates/menu/menu-user.html:133
#: allianceauth/menu/templates/menu/menu-user.html:136
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62
msgid "Token Management"
msgstr "Gestion des jetons"
@ -1535,20 +1537,38 @@ msgstr "Ajouter un dossier"
msgid "Notifications"
msgstr "Alertes"
#: allianceauth/menu/templates/menu/menu-user.html:56
#: allianceauth/menu/templates/menu/menu-user.html:77
msgid "Super User"
msgstr "Super Utilisateur"
#: allianceauth/menu/templates/menu/menu-user.html:70
#: allianceauth/menu/templates/menu/menu-user.html:83
#: allianceauth/menu/templates/menu/menu-user.html:86
msgid "Alliance Auth Documentation"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:94
#: allianceauth/menu/templates/menu/menu-user.html:97
msgid "Alliance Auth Discord"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:105
#: allianceauth/menu/templates/menu/menu-user.html:108
msgid "Alliance Auth Git"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:118
#: allianceauth/menu/templates/menu/menu-user.html:121
#: allianceauth/templates/allianceauth/top-menu-admin.html:9
msgid "Admin"
msgstr "Administrateur"
#: allianceauth/menu/templates/menu/menu-user.html:82
#: allianceauth/menu/templates/menu/menu-user.html:144
#: allianceauth/menu/templates/menu/menu-user.html:147
msgid "Sign Out"
msgstr "Se Déconnecter"
#: allianceauth/menu/templates/menu/menu-user.html:86
#: allianceauth/menu/templates/menu/menu-user.html:155
#: allianceauth/menu/templates/menu/menu-user.html:158
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:17
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:18
msgid "Sign In"
@ -2736,7 +2756,7 @@ msgstr "Déconnexion"
msgid "Toggle navigation"
msgstr "Activer navigation"
#: allianceauth/theme/templates/theme/theme_select.html:7
#: allianceauth/theme/templates/theme/theme_select.html:11
msgid "Select Theme"
msgstr "Sélectionner un thème"

View File

@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-24 16:55+1000\n"
"POT-Creation-Date: 2025-06-19 20:23+1000\n"
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
"Last-Translator: Tuz, 2024\n"
"Language-Team: Italian (Italy) (https://app.transifex.com/alliance-auth/teams/107430/it_IT/)\n"
@ -134,7 +134,7 @@ msgid "Simplified Chinese"
msgstr ""
#: allianceauth/authentication/models.py:100
#: allianceauth/menu/templates/menu/menu-user.html:42
#: allianceauth/menu/templates/menu/menu-user.html:67
msgid "Language"
msgstr "Lingua"
@ -144,7 +144,7 @@ msgid "Night Mode"
msgstr "Modalità scura"
#: allianceauth/authentication/models.py:109
#: allianceauth/menu/templates/menu/menu-user.html:46
#: allianceauth/theme/templates/theme/theme_select.html:4
msgid "Theme"
msgstr "Tema"
@ -215,6 +215,8 @@ msgstr "Stato:"
#: allianceauth/authentication/templates/authentication/tokens.html:7
#: allianceauth/authentication/templates/authentication/tokens.html:11
#: allianceauth/menu/templates/menu/menu-user.html:133
#: allianceauth/menu/templates/menu/menu-user.html:136
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62
msgid "Token Management"
msgstr "Gestione dei Token"
@ -1532,20 +1534,38 @@ msgstr "Aggiungi cartella"
msgid "Notifications"
msgstr "Notifiche"
#: allianceauth/menu/templates/menu/menu-user.html:56
#: allianceauth/menu/templates/menu/menu-user.html:77
msgid "Super User"
msgstr "Super User"
#: allianceauth/menu/templates/menu/menu-user.html:70
#: allianceauth/menu/templates/menu/menu-user.html:83
#: allianceauth/menu/templates/menu/menu-user.html:86
msgid "Alliance Auth Documentation"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:94
#: allianceauth/menu/templates/menu/menu-user.html:97
msgid "Alliance Auth Discord"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:105
#: allianceauth/menu/templates/menu/menu-user.html:108
msgid "Alliance Auth Git"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:118
#: allianceauth/menu/templates/menu/menu-user.html:121
#: allianceauth/templates/allianceauth/top-menu-admin.html:9
msgid "Admin"
msgstr "Amministratore"
#: allianceauth/menu/templates/menu/menu-user.html:82
#: allianceauth/menu/templates/menu/menu-user.html:144
#: allianceauth/menu/templates/menu/menu-user.html:147
msgid "Sign Out"
msgstr "Sign Out"
#: allianceauth/menu/templates/menu/menu-user.html:86
#: allianceauth/menu/templates/menu/menu-user.html:155
#: allianceauth/menu/templates/menu/menu-user.html:158
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:17
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:18
msgid "Sign In"
@ -2734,7 +2754,7 @@ msgstr "Disconnettersi"
msgid "Toggle navigation"
msgstr "Attiva/disattiva navigazione"
#: allianceauth/theme/templates/theme/theme_select.html:7
#: allianceauth/theme/templates/theme/theme_select.html:11
msgid "Select Theme"
msgstr "Seleziona Tema"

View File

@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-24 16:55+1000\n"
"POT-Creation-Date: 2025-06-19 20:23+1000\n"
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
"Last-Translator: kotaneko, 2024\n"
"Language-Team: Japanese (https://app.transifex.com/alliance-auth/teams/107430/ja/)\n"
@ -129,7 +129,7 @@ msgid "Simplified Chinese"
msgstr ""
#: allianceauth/authentication/models.py:100
#: allianceauth/menu/templates/menu/menu-user.html:42
#: allianceauth/menu/templates/menu/menu-user.html:67
msgid "Language"
msgstr "言語"
@ -139,7 +139,7 @@ msgid "Night Mode"
msgstr "ナイトモード"
#: allianceauth/authentication/models.py:109
#: allianceauth/menu/templates/menu/menu-user.html:46
#: allianceauth/theme/templates/theme/theme_select.html:4
msgid "Theme"
msgstr "テーマ"
@ -210,6 +210,8 @@ msgstr "状態:"
#: allianceauth/authentication/templates/authentication/tokens.html:7
#: allianceauth/authentication/templates/authentication/tokens.html:11
#: allianceauth/menu/templates/menu/menu-user.html:133
#: allianceauth/menu/templates/menu/menu-user.html:136
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62
msgid "Token Management"
msgstr "トークン管理"
@ -1481,20 +1483,38 @@ msgstr "フォルダーを追加"
msgid "Notifications"
msgstr "通知"
#: allianceauth/menu/templates/menu/menu-user.html:56
#: allianceauth/menu/templates/menu/menu-user.html:77
msgid "Super User"
msgstr "スーパーユーザ"
#: allianceauth/menu/templates/menu/menu-user.html:70
#: allianceauth/menu/templates/menu/menu-user.html:83
#: allianceauth/menu/templates/menu/menu-user.html:86
msgid "Alliance Auth Documentation"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:94
#: allianceauth/menu/templates/menu/menu-user.html:97
msgid "Alliance Auth Discord"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:105
#: allianceauth/menu/templates/menu/menu-user.html:108
msgid "Alliance Auth Git"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:118
#: allianceauth/menu/templates/menu/menu-user.html:121
#: allianceauth/templates/allianceauth/top-menu-admin.html:9
msgid "Admin"
msgstr "管理者"
#: allianceauth/menu/templates/menu/menu-user.html:82
#: allianceauth/menu/templates/menu/menu-user.html:144
#: allianceauth/menu/templates/menu/menu-user.html:147
msgid "Sign Out"
msgstr "サインアウト"
#: allianceauth/menu/templates/menu/menu-user.html:86
#: allianceauth/menu/templates/menu/menu-user.html:155
#: allianceauth/menu/templates/menu/menu-user.html:158
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:17
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:18
msgid "Sign In"
@ -2670,7 +2690,7 @@ msgstr "ログアウト"
msgid "Toggle navigation"
msgstr "ナビゲーションを切り替え"
#: allianceauth/theme/templates/theme/theme_select.html:7
#: allianceauth/theme/templates/theme/theme_select.html:11
msgid "Select Theme"
msgstr "テーマを選択"

View File

@ -18,7 +18,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-24 16:55+1000\n"
"POT-Creation-Date: 2025-06-19 20:23+1000\n"
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
"Last-Translator: Woojin Kang, 2024\n"
"Language-Team: Korean (Korea) (https://app.transifex.com/alliance-auth/teams/107430/ko_KR/)\n"
@ -135,7 +135,7 @@ msgid "Simplified Chinese"
msgstr ""
#: allianceauth/authentication/models.py:100
#: allianceauth/menu/templates/menu/menu-user.html:42
#: allianceauth/menu/templates/menu/menu-user.html:67
msgid "Language"
msgstr "언어"
@ -145,7 +145,7 @@ msgid "Night Mode"
msgstr "야간 모드"
#: allianceauth/authentication/models.py:109
#: allianceauth/menu/templates/menu/menu-user.html:46
#: allianceauth/theme/templates/theme/theme_select.html:4
msgid "Theme"
msgstr "테마"
@ -216,6 +216,8 @@ msgstr "상태:"
#: allianceauth/authentication/templates/authentication/tokens.html:7
#: allianceauth/authentication/templates/authentication/tokens.html:11
#: allianceauth/menu/templates/menu/menu-user.html:133
#: allianceauth/menu/templates/menu/menu-user.html:136
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62
msgid "Token Management"
msgstr "토큰 관리"
@ -1490,20 +1492,38 @@ msgstr "폴더 추가"
msgid "Notifications"
msgstr "알림"
#: allianceauth/menu/templates/menu/menu-user.html:56
#: allianceauth/menu/templates/menu/menu-user.html:77
msgid "Super User"
msgstr "Super User"
#: allianceauth/menu/templates/menu/menu-user.html:70
#: allianceauth/menu/templates/menu/menu-user.html:83
#: allianceauth/menu/templates/menu/menu-user.html:86
msgid "Alliance Auth Documentation"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:94
#: allianceauth/menu/templates/menu/menu-user.html:97
msgid "Alliance Auth Discord"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:105
#: allianceauth/menu/templates/menu/menu-user.html:108
msgid "Alliance Auth Git"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:118
#: allianceauth/menu/templates/menu/menu-user.html:121
#: allianceauth/templates/allianceauth/top-menu-admin.html:9
msgid "Admin"
msgstr "어드민"
#: allianceauth/menu/templates/menu/menu-user.html:82
#: allianceauth/menu/templates/menu/menu-user.html:144
#: allianceauth/menu/templates/menu/menu-user.html:147
msgid "Sign Out"
msgstr "탈퇴"
#: allianceauth/menu/templates/menu/menu-user.html:86
#: allianceauth/menu/templates/menu/menu-user.html:155
#: allianceauth/menu/templates/menu/menu-user.html:158
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:17
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:18
msgid "Sign In"
@ -2674,7 +2694,7 @@ msgstr "로그아웃"
msgid "Toggle navigation"
msgstr "네비게이션 전환"
#: allianceauth/theme/templates/theme/theme_select.html:7
#: allianceauth/theme/templates/theme/theme_select.html:11
msgid "Select Theme"
msgstr "테마 선택"

File diff suppressed because it is too large Load Diff

View File

@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-24 16:55+1000\n"
"POT-Creation-Date: 2025-06-19 20:23+1000\n"
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
"Last-Translator: MisBimbrownik, 2024\n"
"Language-Team: Polish (Poland) (https://app.transifex.com/alliance-auth/teams/107430/pl_PL/)\n"
@ -135,7 +135,7 @@ msgid "Simplified Chinese"
msgstr ""
#: allianceauth/authentication/models.py:100
#: allianceauth/menu/templates/menu/menu-user.html:42
#: allianceauth/menu/templates/menu/menu-user.html:67
msgid "Language"
msgstr "Język"
@ -145,7 +145,7 @@ msgid "Night Mode"
msgstr "Tryb nocny"
#: allianceauth/authentication/models.py:109
#: allianceauth/menu/templates/menu/menu-user.html:46
#: allianceauth/theme/templates/theme/theme_select.html:4
msgid "Theme"
msgstr "Styl"
@ -216,6 +216,8 @@ msgstr "Stan:"
#: allianceauth/authentication/templates/authentication/tokens.html:7
#: allianceauth/authentication/templates/authentication/tokens.html:11
#: allianceauth/menu/templates/menu/menu-user.html:133
#: allianceauth/menu/templates/menu/menu-user.html:136
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62
msgid "Token Management"
msgstr "Zarządzanie Tokenem"
@ -1526,20 +1528,38 @@ msgstr "Dodaj folder"
msgid "Notifications"
msgstr "Powiadomienia"
#: allianceauth/menu/templates/menu/menu-user.html:56
#: allianceauth/menu/templates/menu/menu-user.html:77
msgid "Super User"
msgstr "Super-Użytkownik"
#: allianceauth/menu/templates/menu/menu-user.html:70
#: allianceauth/menu/templates/menu/menu-user.html:83
#: allianceauth/menu/templates/menu/menu-user.html:86
msgid "Alliance Auth Documentation"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:94
#: allianceauth/menu/templates/menu/menu-user.html:97
msgid "Alliance Auth Discord"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:105
#: allianceauth/menu/templates/menu/menu-user.html:108
msgid "Alliance Auth Git"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:118
#: allianceauth/menu/templates/menu/menu-user.html:121
#: allianceauth/templates/allianceauth/top-menu-admin.html:9
msgid "Admin"
msgstr "Administrator"
#: allianceauth/menu/templates/menu/menu-user.html:82
#: allianceauth/menu/templates/menu/menu-user.html:144
#: allianceauth/menu/templates/menu/menu-user.html:147
msgid "Sign Out"
msgstr "Wyloguj"
#: allianceauth/menu/templates/menu/menu-user.html:86
#: allianceauth/menu/templates/menu/menu-user.html:155
#: allianceauth/menu/templates/menu/menu-user.html:158
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:17
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:18
msgid "Sign In"
@ -2725,7 +2745,7 @@ msgstr "Wyloguj"
msgid "Toggle navigation"
msgstr "Przełącz nawigację"
#: allianceauth/theme/templates/theme/theme_select.html:7
#: allianceauth/theme/templates/theme/theme_select.html:11
msgid "Select Theme"
msgstr "Wybierz styl"

View File

@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-24 16:55+1000\n"
"POT-Creation-Date: 2025-06-19 20:23+1000\n"
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
"Last-Translator: Joel Falknau <ozirascal@gmail.com>, 2024\n"
"Language-Team: Russian (https://app.transifex.com/alliance-auth/teams/107430/ru/)\n"
@ -130,7 +130,7 @@ msgid "Simplified Chinese"
msgstr ""
#: allianceauth/authentication/models.py:100
#: allianceauth/menu/templates/menu/menu-user.html:42
#: allianceauth/menu/templates/menu/menu-user.html:67
msgid "Language"
msgstr "Язык"
@ -140,7 +140,7 @@ msgid "Night Mode"
msgstr "Ночной режим"
#: allianceauth/authentication/models.py:109
#: allianceauth/menu/templates/menu/menu-user.html:46
#: allianceauth/theme/templates/theme/theme_select.html:4
msgid "Theme"
msgstr ""
@ -211,6 +211,8 @@ msgstr ""
#: allianceauth/authentication/templates/authentication/tokens.html:7
#: allianceauth/authentication/templates/authentication/tokens.html:11
#: allianceauth/menu/templates/menu/menu-user.html:133
#: allianceauth/menu/templates/menu/menu-user.html:136
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62
msgid "Token Management"
msgstr "Управление токенами"
@ -1515,20 +1517,38 @@ msgstr ""
msgid "Notifications"
msgstr "Уведомления"
#: allianceauth/menu/templates/menu/menu-user.html:56
#: allianceauth/menu/templates/menu/menu-user.html:77
msgid "Super User"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:70
#: allianceauth/menu/templates/menu/menu-user.html:83
#: allianceauth/menu/templates/menu/menu-user.html:86
msgid "Alliance Auth Documentation"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:94
#: allianceauth/menu/templates/menu/menu-user.html:97
msgid "Alliance Auth Discord"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:105
#: allianceauth/menu/templates/menu/menu-user.html:108
msgid "Alliance Auth Git"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:118
#: allianceauth/menu/templates/menu/menu-user.html:121
#: allianceauth/templates/allianceauth/top-menu-admin.html:9
msgid "Admin"
msgstr "Администратор"
#: allianceauth/menu/templates/menu/menu-user.html:82
#: allianceauth/menu/templates/menu/menu-user.html:144
#: allianceauth/menu/templates/menu/menu-user.html:147
msgid "Sign Out"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:86
#: allianceauth/menu/templates/menu/menu-user.html:155
#: allianceauth/menu/templates/menu/menu-user.html:158
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:17
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:18
msgid "Sign In"
@ -2713,7 +2733,7 @@ msgstr "Выход"
msgid "Toggle navigation"
msgstr "Проложить маршрут"
#: allianceauth/theme/templates/theme/theme_select.html:7
#: allianceauth/theme/templates/theme/theme_select.html:11
msgid "Select Theme"
msgstr ""

View File

@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-24 16:55+1000\n"
"POT-Creation-Date: 2025-06-19 20:23+1000\n"
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
"Last-Translator: Bandera Primary, 2025\n"
"Language-Team: Ukrainian (https://app.transifex.com/alliance-auth/teams/107430/uk/)\n"
@ -134,7 +134,7 @@ msgid "Simplified Chinese"
msgstr "Cпрощена китайська"
#: allianceauth/authentication/models.py:100
#: allianceauth/menu/templates/menu/menu-user.html:42
#: allianceauth/menu/templates/menu/menu-user.html:67
msgid "Language"
msgstr "Мова"
@ -144,7 +144,7 @@ msgid "Night Mode"
msgstr "Нічний режим"
#: allianceauth/authentication/models.py:109
#: allianceauth/menu/templates/menu/menu-user.html:46
#: allianceauth/theme/templates/theme/theme_select.html:4
msgid "Theme"
msgstr "Тема"
@ -215,6 +215,8 @@ msgstr "Стан:"
#: allianceauth/authentication/templates/authentication/tokens.html:7
#: allianceauth/authentication/templates/authentication/tokens.html:11
#: allianceauth/menu/templates/menu/menu-user.html:133
#: allianceauth/menu/templates/menu/menu-user.html:136
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62
msgid "Token Management"
msgstr "Керування токенами"
@ -1533,20 +1535,38 @@ msgstr "Додати теку"
msgid "Notifications"
msgstr "Повідомлення"
#: allianceauth/menu/templates/menu/menu-user.html:56
#: allianceauth/menu/templates/menu/menu-user.html:77
msgid "Super User"
msgstr "Супер користувач"
#: allianceauth/menu/templates/menu/menu-user.html:70
#: allianceauth/menu/templates/menu/menu-user.html:83
#: allianceauth/menu/templates/menu/menu-user.html:86
msgid "Alliance Auth Documentation"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:94
#: allianceauth/menu/templates/menu/menu-user.html:97
msgid "Alliance Auth Discord"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:105
#: allianceauth/menu/templates/menu/menu-user.html:108
msgid "Alliance Auth Git"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:118
#: allianceauth/menu/templates/menu/menu-user.html:121
#: allianceauth/templates/allianceauth/top-menu-admin.html:9
msgid "Admin"
msgstr "Адміністратор"
#: allianceauth/menu/templates/menu/menu-user.html:82
#: allianceauth/menu/templates/menu/menu-user.html:144
#: allianceauth/menu/templates/menu/menu-user.html:147
msgid "Sign Out"
msgstr "Вийти"
#: allianceauth/menu/templates/menu/menu-user.html:86
#: allianceauth/menu/templates/menu/menu-user.html:155
#: allianceauth/menu/templates/menu/menu-user.html:158
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:17
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:18
msgid "Sign In"
@ -2737,7 +2757,7 @@ msgstr "Вихід"
msgid "Toggle navigation"
msgstr "Перемикання навігації"
#: allianceauth/theme/templates/theme/theme_select.html:7
#: allianceauth/theme/templates/theme/theme_select.html:11
msgid "Select Theme"
msgstr "Виберіть тему"

View File

@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-24 16:55+1000\n"
"POT-Creation-Date: 2025-06-19 20:23+1000\n"
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
"Last-Translator: Aika Yu, 2025\n"
"Language-Team: Chinese Simplified (https://app.transifex.com/alliance-auth/teams/107430/zh-Hans/)\n"
@ -128,7 +128,7 @@ msgid "Simplified Chinese"
msgstr "简体中文"
#: allianceauth/authentication/models.py:100
#: allianceauth/menu/templates/menu/menu-user.html:42
#: allianceauth/menu/templates/menu/menu-user.html:67
msgid "Language"
msgstr "语言"
@ -138,7 +138,7 @@ msgid "Night Mode"
msgstr "夜间模式"
#: allianceauth/authentication/models.py:109
#: allianceauth/menu/templates/menu/menu-user.html:46
#: allianceauth/theme/templates/theme/theme_select.html:4
msgid "Theme"
msgstr ""
@ -209,6 +209,8 @@ msgstr ""
#: allianceauth/authentication/templates/authentication/tokens.html:7
#: allianceauth/authentication/templates/authentication/tokens.html:11
#: allianceauth/menu/templates/menu/menu-user.html:133
#: allianceauth/menu/templates/menu/menu-user.html:136
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62
msgid "Token Management"
msgstr ""
@ -1471,20 +1473,38 @@ msgstr ""
msgid "Notifications"
msgstr "通知"
#: allianceauth/menu/templates/menu/menu-user.html:56
#: allianceauth/menu/templates/menu/menu-user.html:77
msgid "Super User"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:70
#: allianceauth/menu/templates/menu/menu-user.html:83
#: allianceauth/menu/templates/menu/menu-user.html:86
msgid "Alliance Auth Documentation"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:94
#: allianceauth/menu/templates/menu/menu-user.html:97
msgid "Alliance Auth Discord"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:105
#: allianceauth/menu/templates/menu/menu-user.html:108
msgid "Alliance Auth Git"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:118
#: allianceauth/menu/templates/menu/menu-user.html:121
#: allianceauth/templates/allianceauth/top-menu-admin.html:9
msgid "Admin"
msgstr "管理员"
#: allianceauth/menu/templates/menu/menu-user.html:82
#: allianceauth/menu/templates/menu/menu-user.html:144
#: allianceauth/menu/templates/menu/menu-user.html:147
msgid "Sign Out"
msgstr "登出"
#: allianceauth/menu/templates/menu/menu-user.html:86
#: allianceauth/menu/templates/menu/menu-user.html:155
#: allianceauth/menu/templates/menu/menu-user.html:158
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:17
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:18
msgid "Sign In"
@ -2652,7 +2672,7 @@ msgstr "登出"
msgid "Toggle navigation"
msgstr "打开导航栏"
#: allianceauth/theme/templates/theme/theme_select.html:7
#: allianceauth/theme/templates/theme/theme_select.html:11
msgid "Select Theme"
msgstr ""

View File

@ -26,7 +26,7 @@ app.conf.task_default_priority = 5 # anything called with the task.delay() will
app.conf.worker_prefetch_multiplier = 1 # only prefetch single tasks at a time on the workers so that prio tasks happen
app.conf.ONCE = {
'backend': 'allianceauth.services.tasks.DjangoBackend',
'backend': 'allianceauth.services.celery_once.backends.DjangoBackend',
'settings': {}
}

View File

@ -15,68 +15,68 @@ from django.contrib import messages
from django.utils.translation import gettext_lazy as _
INSTALLED_APPS = [
'allianceauth', # needs to be on top of this list to support favicons in Django admin (see https://gitlab.com/allianceauth/allianceauth/-/issues/1301)
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.humanize',
'django_celery_beat',
'solo',
'bootstrapform',
'django_bootstrap5', # https://github.com/zostera/django-bootstrap5
'sortedm2m',
'esi',
'allianceauth.framework',
'allianceauth.authentication',
'allianceauth.services',
'allianceauth.eveonline',
'allianceauth.groupmanagement',
'allianceauth.notifications',
'allianceauth.thirdparty.navhelper',
'allianceauth.analytics',
'allianceauth.menu',
'allianceauth.theme',
'allianceauth.theme.darkly',
'allianceauth.theme.flatly',
'allianceauth.theme.materia',
"allianceauth", # needs to be on top of this list to support favicons in Django admin (see https://gitlab.com/allianceauth/allianceauth/-/issues/1301)
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"django.contrib.humanize",
"django_celery_beat",
"solo",
"bootstrapform",
"django_bootstrap5", # https://github.com/zostera/django-bootstrap5
"sortedm2m",
"esi",
"allianceauth.framework",
"allianceauth.authentication",
"allianceauth.services",
"allianceauth.eveonline",
"allianceauth.groupmanagement",
"allianceauth.notifications",
"allianceauth.thirdparty.navhelper",
"allianceauth.analytics",
"allianceauth.menu",
"allianceauth.theme",
"allianceauth.theme.darkly",
"allianceauth.theme.flatly",
"allianceauth.theme.materia",
"allianceauth.custom_css",
'allianceauth.crontab',
'sri',
"allianceauth.crontab",
"sri",
]
SRI_ALGORITHM = "sha512"
SECRET_KEY = "wow I'm a really bad default secret key"
# Celery configuration
BROKER_URL = 'redis://localhost:6379/0'
BROKER_URL = "redis://localhost:6379/0"
CELERYBEAT_SCHEDULER = "allianceauth.crontab.schedulers.OffsetDatabaseScheduler"
CELERYBEAT_SCHEDULE = {
'esi_cleanup_callbackredirect': {
'task': 'esi.tasks.cleanup_callbackredirect',
'schedule': crontab(minute='0', hour='*/4'),
"esi_cleanup_callbackredirect": {
"task": "esi.tasks.cleanup_callbackredirect",
"schedule": crontab(minute="0", hour="*/4"),
},
'esi_cleanup_token': {
'task': 'esi.tasks.cleanup_token',
'schedule': crontab(minute='0', hour='0'),
'apply_offset': True,
"esi_cleanup_token": {
"task": "esi.tasks.cleanup_token",
"schedule": crontab(minute="0", hour="0"),
"apply_offset": True,
},
'run_model_update': {
'task': 'allianceauth.eveonline.tasks.run_model_update',
'schedule': crontab(minute='0', hour="*/6"),
'apply_offset': True
"run_model_update": {
"task": "allianceauth.eveonline.tasks.run_model_update",
"schedule": crontab(minute="0", hour="*/6"),
"apply_offset": True,
},
'check_all_character_ownership': {
'task': 'allianceauth.authentication.tasks.check_all_character_ownership',
'schedule': crontab(minute='0', hour='*/4'),
'apply_offset': True
"check_all_character_ownership": {
"task": "allianceauth.authentication.tasks.check_all_character_ownership",
"schedule": crontab(minute="0", hour="*/4"),
"apply_offset": True,
},
"analytics_daily_stats": {
"task": "allianceauth.analytics.tasks.analytics_daily_stats",
"schedule": crontab(minute="0", hour="2"),
},
'analytics_daily_stats': {
'task': 'allianceauth.analytics.tasks.analytics_daily_stats',
'schedule': crontab(minute='0', hour='2'),
}
}
@ -85,22 +85,20 @@ PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_DIR = os.path.dirname(PROJECT_DIR)
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'allianceauth.authentication.middleware.UserSettingsMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
"django.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"allianceauth.authentication.middleware.UserSettingsMiddleware",
"django.middleware.locale.LocaleMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
]
ROOT_URLCONF = 'allianceauth.urls'
ROOT_URLCONF = "allianceauth.urls"
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale/'),
)
LOCALE_PATHS = (os.path.join(BASE_DIR, "locale/"),)
LANGUAGES = ( # Sorted by Language Code alphabetical order + English at top
("en", _("English")),
@ -160,58 +158,58 @@ LANGUAGE_MAPPING = {
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(PROJECT_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'allianceauth.context_processors.auth_settings',
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [os.path.join(PROJECT_DIR, "templates")],
"APP_DIRS": True,
"OPTIONS": {
"context_processors": [
"django.template.context_processors.debug",
"django.template.context_processors.request",
"django.contrib.auth.context_processors.auth",
"django.contrib.messages.context_processors.messages",
"django.template.context_processors.i18n",
"django.template.context_processors.media",
"django.template.context_processors.static",
"django.template.context_processors.tz",
"allianceauth.context_processors.auth_settings",
],
},
},
]
WSGI_APPLICATION = 'allianceauth.wsgi.application'
WSGI_APPLICATION = "allianceauth.wsgi.application"
# Password validation
# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",
},
]
AUTHENTICATION_BACKENDS = [
'allianceauth.authentication.backends.StateBackend',
'django.contrib.auth.backends.ModelBackend'
"allianceauth.authentication.backends.StateBackend",
"django.contrib.auth.backends.ModelBackend",
]
# Internationalization
# https://docs.djangoproject.com/en/1.10/topics/i18n/
LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = "en-us"
LANGUAGE_COOKIE_AGE = 1209600
TIME_ZONE = 'UTC'
TIME_ZONE = "UTC"
USE_I18N = True
@ -219,44 +217,51 @@ USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/
STATIC_URL = '/static/'
STORAGES = {
"default": {
"BACKEND": "django.core.files.storage.FileSystemStorage",
},
"staticfiles": {
"BACKEND": "allianceauth.framework.staticfiles.storage.AaManifestStaticFilesStorage",
},
}
STATIC_URL = "/static/"
STATICFILES_DIRS = [
os.path.join(PROJECT_DIR, 'static'),
os.path.join(PROJECT_DIR, "static"),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_ROOT = os.path.join(BASE_DIR, "static")
# Bootstrap messaging css workaround
MESSAGE_TAGS = {
messages.ERROR: 'danger error'
}
MESSAGE_TAGS = {messages.ERROR: "danger error"}
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1" # change the 1 here for the DB used
"LOCATION": "redis://127.0.0.1:6379/1", # change the 1 here for the DB used
}
}
SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"
DEBUG = True
ALLOWED_HOSTS = ['*']
ALLOWED_HOSTS = ["*"]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': str(os.path.join(BASE_DIR, 'alliance_auth.sqlite3')),
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": str(os.path.join(BASE_DIR, "alliance_auth.sqlite3")),
},
}
SITE_NAME = 'Alliance Auth'
SITE_NAME = "Alliance Auth"
DEFAULT_THEME = "allianceauth.theme.flatly.auth_hooks.FlatlyThemeHook"
DEFAULT_THEME_DARK = "allianceauth.theme.darkly.auth_hooks.DarklyThemeHook" # Legacy AAv3 user.profile.night_mode=1
LOGIN_URL = 'auth_login_user' # view that handles login logic
LOGIN_URL = "auth_login_user" # view that handles login logic
LOGIN_REDIRECT_URL = 'authentication:dashboard' # default destination when logging in if no redirect specified
LOGOUT_REDIRECT_URL = 'authentication:dashboard' # destination after logging out
LOGIN_REDIRECT_URL = "authentication:dashboard" # default destination when logging in if no redirect specified
LOGOUT_REDIRECT_URL = "authentication:dashboard" # destination after logging out
# Both of these redirects accept values as per the django redirect shortcut
# https://docs.djangoproject.com/en/1.11/topics/http/shortcuts/#redirect
# - url names eg 'authentication:dashboard'
@ -264,73 +269,71 @@ LOGOUT_REDIRECT_URL = 'authentication:dashboard' # destination after logging ou
# - absolute urls eg 'http://example.com/dashboard'
# scopes required on new tokens when logging in. Cannot be blank.
LOGIN_TOKEN_SCOPES = ['publicData']
LOGIN_TOKEN_SCOPES = ["publicData"]
EMAIL_TIMEOUT = 15
# number of days email verification links are valid for
ACCOUNT_ACTIVATION_DAYS = 1
ESI_API_URL = 'https://esi.evetech.net/'
ESI_API_URL = "https://esi.evetech.net/"
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
'datefmt': "%d/%b/%Y %H:%M:%S"
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"verbose": {
"format": "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
"datefmt": "%d/%b/%Y %H:%M:%S",
},
'simple': {
'format': '%(levelname)s %(message)s'
"simple": {"format": "%(levelname)s %(message)s"},
},
"handlers": {
"log_file": {
"level": "INFO", # edit this line to change logging level to file
"class": "logging.handlers.RotatingFileHandler",
"filename": os.path.join(BASE_DIR, "log/allianceauth.log"),
"formatter": "verbose",
"maxBytes": 1024 * 1024 * 5, # edit this line to change max log file size
"backupCount": 5, # edit this line to change number of log backups
},
"extension_file": {
"level": "INFO",
"class": "logging.handlers.RotatingFileHandler",
"filename": os.path.join(BASE_DIR, "log/extensions.log"),
"formatter": "verbose",
"maxBytes": 1024 * 1024 * 5, # edit this line to change max log file size
"backupCount": 5, # edit this line to change number of log backups
},
"console": {
"level": "DEBUG", # edit this line to change logging level to console
"class": "logging.StreamHandler",
"formatter": "verbose",
},
"notifications": { # creates notifications for users with logging_notifications permission
"level": "ERROR", # edit this line to change logging level to notifications
"class": "allianceauth.notifications.handlers.NotificationHandler",
"formatter": "verbose",
},
},
'handlers': {
'log_file': {
'level': 'INFO', # edit this line to change logging level to file
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(BASE_DIR, 'log/allianceauth.log'),
'formatter': 'verbose',
'maxBytes': 1024 * 1024 * 5, # edit this line to change max log file size
'backupCount': 5, # edit this line to change number of log backups
"loggers": {
"allianceauth": {
"handlers": ["log_file", "console", "notifications"],
"level": "DEBUG",
},
'extension_file': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(BASE_DIR, 'log/extensions.log'),
'formatter': 'verbose',
'maxBytes': 1024 * 1024 * 5, # edit this line to change max log file size
'backupCount': 5, # edit this line to change number of log backups
"extensions": {
"handlers": ["extension_file", "console"],
"level": "DEBUG",
},
'console': {
'level': 'DEBUG', # edit this line to change logging level to console
'class': 'logging.StreamHandler',
'formatter': 'verbose',
"django": {
"handlers": ["log_file", "console"],
"level": "ERROR",
},
'notifications': { # creates notifications for users with logging_notifications permission
'level': 'ERROR', # edit this line to change logging level to notifications
'class': 'allianceauth.notifications.handlers.NotificationHandler',
'formatter': 'verbose',
"esi": {
"handlers": ["log_file", "console"],
"level": "DEBUG",
},
},
'loggers': {
'allianceauth': {
'handlers': ['log_file', 'console', 'notifications'],
'level': 'DEBUG',
},
'extensions': {
'handlers': ['extension_file', 'console'],
'level': 'DEBUG',
},
'django': {
'handlers': ['log_file', 'console'],
'level': 'ERROR',
},
'esi': {
'handlers': ['log_file', 'console'],
'level': 'DEBUG',
},
}
}
DEFAULT_AUTO_FIELD = "django.db.models.AutoField"

View File

@ -0,0 +1,19 @@
from celery_once import AlreadyQueued
from django.core.cache import cache
class DjangoBackend:
"""Locking backend for celery once."""
def __init__(self, settings):
pass
@staticmethod
def raise_or_lock(key, timeout):
acquired = cache.add(key=key, value="lock", timeout=timeout)
if not acquired:
raise AlreadyQueued(int(cache.ttl(key)))
@staticmethod
def clear_lock(key):
return cache.delete(key)

View File

@ -0,0 +1,8 @@
from celery_once import QueueOnce as BaseTask
class QueueOnce(BaseTask):
"""QueueOnce class with custom defaults."""
once = BaseTask.once
once["graceful"] = True

View File

@ -0,0 +1,47 @@
from celery_once import AlreadyQueued
from django.core.cache import cache
from django.test import TestCase
from allianceauth.services.celery_once.backends import DjangoBackend
class TestDjangoBackend(TestCase):
TEST_KEY = "my-django-backend-test-key"
TIMEOUT = 1800
def setUp(self) -> None:
cache.delete(self.TEST_KEY)
self.backend = DjangoBackend(dict())
def test_can_get_lock(self):
"""
when lock can be acquired
then set it with timeout
"""
self.backend.raise_or_lock(self.TEST_KEY, self.TIMEOUT)
self.assertIsNotNone(cache.get(self.TEST_KEY))
self.assertAlmostEqual(cache.ttl(self.TEST_KEY), self.TIMEOUT, delta=2)
def test_when_cant_get_lock_raise_exception(self):
"""
when lock can bot be acquired
then raise AlreadyQueued exception with countdown
"""
self.backend.raise_or_lock(self.TEST_KEY, self.TIMEOUT)
try:
self.backend.raise_or_lock(self.TEST_KEY, self.TIMEOUT)
except Exception as ex:
self.assertIsInstance(ex, AlreadyQueued)
self.assertAlmostEqual(ex.countdown, self.TIMEOUT, delta=2)
def test_can_clear_lock(self):
"""
when a lock exists
then can get a new lock after clearing it
"""
self.backend.raise_or_lock(self.TEST_KEY, self.TIMEOUT)
self.backend.clear_lock(self.TEST_KEY)
self.backend.raise_or_lock(self.TEST_KEY, self.TIMEOUT)
self.assertIsNotNone(cache.get(self.TEST_KEY))

View File

@ -3,33 +3,11 @@ import logging
from celery import shared_task
from django.contrib.auth.models import User
from .hooks import ServicesHook
from celery_once import QueueOnce as BaseTask, AlreadyQueued
from django.core.cache import cache
from .celery_once.tasks import QueueOnce # noqa: F401 - for backwards compatibility
logger = logging.getLogger(__name__)
class QueueOnce(BaseTask):
once = BaseTask.once
once['graceful'] = True
class DjangoBackend:
def __init__(self, settings):
pass
@staticmethod
def raise_or_lock(key, timeout):
acquired = cache.add(key=key, value="lock", timeout=timeout)
if not acquired:
raise AlreadyQueued(int(cache.ttl(key)))
@staticmethod
def clear_lock(key):
return cache.delete(key)
@shared_task(bind=True)
def validate_services(self, pk):
user = User.objects.get(pk=pk)
@ -38,7 +16,7 @@ def validate_services(self, pk):
for svc in ServicesHook.get_services():
try:
svc.validate_user(user)
except:
except Exception:
logger.exception(f'Exception running validate_user for services module {svc} on user {user}')

View File

@ -1,15 +1,10 @@
from unittest import mock
from celery_once import AlreadyQueued
from django.core.cache import cache
from django.test import override_settings, TestCase
from allianceauth.tests.auth_utils import AuthUtils
from allianceauth.services.tasks import validate_services, update_groups_for_user
from ..tasks import DjangoBackend
@override_settings(CELERY_ALWAYS_EAGER=True, CELERY_EAGER_PROPAGATES_EXCEPTIONS=True)
class ServicesTasksTestCase(TestCase):
@ -46,46 +41,3 @@ class ServicesTasksTestCase(TestCase):
self.assertTrue(svc.update_groups.called)
args, _ = svc.update_groups.call_args
self.assertEqual(self.member, args[0]) # Assert correct user
class TestDjangoBackend(TestCase):
TEST_KEY = "my-django-backend-test-key"
TIMEOUT = 1800
def setUp(self) -> None:
cache.delete(self.TEST_KEY)
self.backend = DjangoBackend(dict())
def test_can_get_lock(self):
"""
when lock can be acquired
then set it with timetout
"""
self.backend.raise_or_lock(self.TEST_KEY, self.TIMEOUT)
self.assertIsNotNone(cache.get(self.TEST_KEY))
self.assertAlmostEqual(cache.ttl(self.TEST_KEY), self.TIMEOUT, delta=2)
def test_when_cant_get_lock_raise_exception(self):
"""
when lock can bot be acquired
then raise AlreadyQueued exception with countdown
"""
self.backend.raise_or_lock(self.TEST_KEY, self.TIMEOUT)
try:
self.backend.raise_or_lock(self.TEST_KEY, self.TIMEOUT)
except Exception as ex:
self.assertIsInstance(ex, AlreadyQueued)
self.assertAlmostEqual(ex.countdown, self.TIMEOUT, delta=2)
def test_can_clear_lock(self):
"""
when a lock exists
then can get a new lock after clearing it
"""
self.backend.raise_or_lock(self.TEST_KEY, self.TIMEOUT)
self.backend.clear_lock(self.TEST_KEY)
self.backend.raise_or_lock(self.TEST_KEY, self.TIMEOUT)
self.assertIsNotNone(cache.get(self.TEST_KEY))

View File

@ -102,19 +102,24 @@
(() => {
// TODO Move to own JS file
const sidebar = document.getElementById('sidebar');
const sidebarKey = `sidebar_${sidebar.id}`;
sidebar.addEventListener('shown.bs.collapse', () => {
localStorage.removeItem(`sidebar_${sidebar.id}`);
sidebar.addEventListener('shown.bs.collapse', (event) => {
if (event.target.id === sidebar.id) {
localStorage.removeItem(sidebarKey);
}
});
sidebar.addEventListener('hidden.bs.collapse', () => {
localStorage.setItem(`sidebar_${sidebar.id}`, 'closed');
sidebar.addEventListener('hidden.bs.collapse', (event) => {
if (event.target.id === sidebar.id) {
localStorage.setItem(sidebarKey, 'closed');
}
});
if (localStorage.getItem(`sidebar_${sidebar.id}`) === 'closed') {
sidebar.classList.remove('show')
if (localStorage.getItem(sidebarKey) === 'closed') {
sidebar.classList.remove('show');
} else {
sidebar.classList.add("show")
sidebar.classList.add('show');
}
const activeChildMenuItem = document.querySelector('#sidebar-menu li ul li a.active');
@ -133,6 +138,7 @@
</script>
{% include 'bundles/jquery-js.html' %}
{% theme_js %}
{% if user.is_authenticated %}
@ -148,6 +154,7 @@
{% block extra_javascript %}
{% endblock extra_javascript %}
<script>
{% block extra_script %}
{% endblock extra_script %}

View File

@ -1,7 +1,7 @@
PROTOCOL=https://
AUTH_SUBDOMAIN=%AUTH_SUBDOMAIN%
DOMAIN=%DOMAIN%
AA_DOCKER_TAG=registry.gitlab.com/allianceauth/allianceauth/auth:v4.7.0
AA_DOCKER_TAG=registry.gitlab.com/allianceauth/allianceauth/auth:v4.8.0
# Nginx Proxy Manager
PROXY_HTTP_PORT=80

View File

@ -1,5 +1,5 @@
FROM python:3.11-slim
ARG AUTH_VERSION=v4.7.0
ARG AUTH_VERSION=v4.8.0
ARG AUTH_PACKAGE=allianceauth==${AUTH_VERSION}
ENV AUTH_USER=allianceauth
ENV AUTH_GROUP=allianceauth

View File

@ -26,7 +26,7 @@ app.conf.task_default_priority = 5 # anything called with the task.delay() will
app.conf.worker_prefetch_multiplier = 1 # only prefetch single tasks at a time on the workers so that prio tasks happen
app.conf.ONCE = {
'backend': 'allianceauth.services.tasks.DjangoBackend',
'backend': 'allianceauth.services.celery_once.backends.DjangoBackend',
'settings': {}
}