Compare commits

..

11 Commits

Author SHA1 Message Date
Ariel Rin
4b77a5f9a8 Merge branch 'translations_7f31a07ccd4e4a66b1dd7b6bc2dbddb5' into 'master'
Updates for project Alliance Auth

See merge request allianceauth/allianceauth!1764
2025-10-17 04:27:38 +00:00
Ariel Rin
a2ec428124 Translate django.po in nl_NL [Manual Sync]
44% of minimum 1% translated source file: 'django.po'
on 'nl_NL'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
2025-10-17 04:27:36 +00:00
Ariel Rin
cda7f358e0 Translate django.po in cs_CZ [Manual Sync]
14% of minimum 1% translated source file: 'django.po'
on 'cs_CZ'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
2025-10-17 04:26:59 +00:00
Ariel Rin
ecd27b823e Merge branch 'supervisor-env-variables' into 'master'
[ADD] Environment variables to supervisor config

See merge request allianceauth/allianceauth!1739
2025-10-17 04:20:22 +00:00
Ariel Rin
dae4afddb1 Merge branch 'hide-menu' into 'master'
[ADD] User setting to keep the sidebar menu minimized

See merge request allianceauth/allianceauth!1769
2025-10-17 04:20:10 +00:00
Peter Pfeufer
d507663316
[CHANGE] Hide setting on mobile devices to avoid confusion 2025-10-15 10:54:44 +02:00
Peter Pfeufer
67081ab465
[ADD] Device detection and always minimize the sidebar on mobile 2025-10-15 10:40:44 +02:00
Peter Pfeufer
bce90344f8
[CHANGE] Always minimize when not authenticated
We have no user settings here, so keep it minimized on public pages.
2025-10-15 09:45:15 +02:00
Peter Pfeufer
29c6fa292a
[REMOVE] JS local storage usage
To make it an actual choice through the setting
2025-10-15 09:42:07 +02:00
Peter Pfeufer
295361a541
[ADD] User setting to keep the sidebar menu minimized 2025-10-15 01:13:42 +02:00
Peter Pfeufer
d67ab108a0
[ADD] Environment variables to supervisor config 2025-08-10 12:59:56 +02:00
16 changed files with 638 additions and 313 deletions

View File

@ -52,4 +52,10 @@ class UserSettingsMiddleware(MiddlewareMixin):
except Exception as e:
logger.exception(e)
# Minimize Menu
try:
request.session["MINIMIZE_SIDEBAR"] = request.user.profile.minimize_sidebar
except Exception as e:
pass # We don't care that an anonymous user has no profile (not logged in)
return response

View File

@ -0,0 +1,22 @@
# Generated by Django 4.2.25 on 2025-10-14 22:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("authentication", "0024_alter_userprofile_language"),
]
operations = [
migrations.AddField(
model_name="userprofile",
name="minimize_sidebar",
field=models.BooleanField(
default=False,
help_text="Keep the sidebar menu minimized",
verbose_name="Minimize Sidebar Menu",
),
),
]

View File

@ -97,7 +97,8 @@ class UserProfile(models.Model):
on_delete=models.SET_DEFAULT,
default=get_guest_state_pk)
language = models.CharField(
_("Language"), max_length=10,
_("Language"),
max_length=10,
choices=Language.choices,
blank=True,
default='')
@ -112,6 +113,12 @@ class UserProfile(models.Model):
null=True,
help_text="Bootstrap 5 Themes from https://bootswatch.com/ or Community Apps"
)
minimize_sidebar = models.BooleanField(
_("Minimize Sidebar Menu"),
default=False,
help_text=_("Keep the sidebar menu minimized")
)
def assign_state(self, state=None, commit=True):
if not state:

View File

@ -88,6 +88,7 @@ class TestUserSettingsMiddlewareLoginFlow(TestCase):
self.request.LANGUAGE_CODE = 'en'
self.request.user.profile.language = 'de'
self.request.user.profile.night_mode = True
self.request.user.profile.minimize_sidebar = False
self.request.user.is_anonymous = False
self.response = Mock()
self.response.content = 'hello world'
@ -173,3 +174,26 @@ class TestUserSettingsMiddlewareLoginFlow(TestCase):
self.response
)
self.assertEqual(self.request.session["NIGHT_MODE"], True)
def test_middleware_set_mimimize_sidebar(self):
"""
tests the middleware will always set minimize_sidebar to False (default)
"""
response = self.middleware.process_response(
self.request,
self.response
)
self.assertEqual(self.request.session["MINIMIZE_SIDEBAR"], False)
def test_middleware_minimize_sidebar_when_set(self):
"""
tests the middleware will set mimimize_sidebar to True from DB
"""
self.request.user.profile.minimize_sidebar = True
response = self.middleware.process_response(
self.request,
self.response
)
self.assertEqual(self.request.session["MINIMIZE_SIDEBAR"], True)

View File

@ -13,6 +13,7 @@ class StartProject(BaseStartProject):
parser.add_argument('--celery', help='The path to the celery executable.')
parser.add_argument('--gunicorn', help='The path to the gunicorn executable.')
parser.add_argument('--memmon', help='The path to the memmon executable.')
parser.add_argument('--venv_directory', help='The path to the virtual environment directory.')
def create_project(parser, options, args):
@ -27,7 +28,7 @@ def create_project(parser, options, args):
allianceauth_path = os.path.dirname(allianceauth.__file__)
template_path = os.path.join(allianceauth_path, 'project_template')
# Determine locations of commands to render supervisor cond
# Determine locations of commands to render supervisor configuration
command_options = {
'template': template_path,
'python': shutil.which('python'),
@ -35,6 +36,7 @@ def create_project(parser, options, args):
'celery': shutil.which('celery'),
'memmon': shutil.which('memmon'),
'extensions': ['py', 'conf', 'json'],
'venv_directory': os.getenv('VIRTUAL_ENV'),
}
# Strip 'start' out of the arguments, leaving project name (and optionally destination dir)

View File

@ -11,7 +11,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-09-21 13:44+1000\n"
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
"Last-Translator: Tomas Skarecky <t.skarecky@gmail.com>, 2024\n"
"Language-Team: Czech (Czech Republic) (https://app.transifex.com/alliance-auth/teams/107430/cs_CZ/)\n"
@ -62,7 +62,7 @@ msgstr ""
"přístupem:%s"
#: 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 "Angličtina"
@ -71,57 +71,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 "Němčina"
#: 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 "Španělština"
#: 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 "Italština"
#: 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 "Japonština"
#: 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 "Korejština"
#: 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 "Francouzština"
#: 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 "Ruština"
#: 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 "Ukrajinština"
#: 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 ""
@ -166,14 +166,12 @@ msgstr "Postavy"
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:11
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:12
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:4
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:6
msgid "Add Character"
msgstr "Přidat postavu"
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:14
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:15
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:10
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:12
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:8
msgid "Change Main"
msgstr "Změnit postavu"
@ -230,8 +228,8 @@ msgstr ""
#: allianceauth/hrapplications/templates/hrapplications/management.html:168
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:35
#: allianceauth/hrapplications/templates/hrapplications/view.html:94
#: allianceauth/srp/templates/srp/data.html:83
#: allianceauth/srp/templates/srp/management.html:53
#: allianceauth/srp/templates/srp/data.html:81
#: allianceauth/srp/templates/srp/management.html:51
msgid "Actions"
msgstr "Akce"
@ -282,7 +280,7 @@ msgstr "Registrace"
msgid "Invalid or expired activation link."
msgstr "Nevalidní, nebo expirovaný aktivační odkaz."
#: allianceauth/authentication/views.py:158
#: allianceauth/authentication/views.py:159
#, python-format
msgid ""
"Cannot change main character to %(char)s: character owned by a different "
@ -290,22 +288,22 @@ msgid ""
msgstr ""
"Není možné změnit hlavní postavu na %(char)s: postava patří pod jiný účet."
#: allianceauth/authentication/views.py:165
#: allianceauth/authentication/views.py:166
#, python-format
msgid "Changed main character to %s"
msgstr "Hlavní postava změněna na %s"
#: allianceauth/authentication/views.py:179
#: allianceauth/authentication/views.py:180
#, python-format
msgid "Added %(name)s to your account."
msgstr "%(name)spřidána k vačenu účtu"
#: allianceauth/authentication/views.py:181
#: allianceauth/authentication/views.py:182
#, python-format
msgid "Failed to add %(name)s to your account: they already have an account."
msgstr "Přidání %(name)sk vašemu účtu se nezdařilo: již mají účet"
#: allianceauth/authentication/views.py:226
#: allianceauth/authentication/views.py:227
msgid ""
"Unable to authenticate as the selected character. Please log in with the "
"main character associated with this account."
@ -313,11 +311,11 @@ msgstr ""
"Není možné váš ověřit pomocí vybrané postavu. Prosím přihlaste se pomocí "
"hlavní postavy spojené s tímto účtem."
#: allianceauth/authentication/views.py:293
#: allianceauth/authentication/views.py:294
msgid "Registration token has expired."
msgstr "Registrační token expiroval"
#: allianceauth/authentication/views.py:354
#: allianceauth/authentication/views.py:355
msgid ""
"Sent confirmation email. Please follow the link to confirm your email "
"address."
@ -325,11 +323,11 @@ msgstr ""
"Byl vám odeslán potvrzovací email. Otevřete prosím odkaz pro potvrzení "
"emailové adresy. "
#: allianceauth/authentication/views.py:360
#: allianceauth/authentication/views.py:361
msgid "Confirmed your email address. Please login to continue."
msgstr "Emailová adresa potvrzena. Přihlaste se prosím."
#: allianceauth/authentication/views.py:366
#: allianceauth/authentication/views.py:367
msgid "Registration of new accounts is not allowed at this time."
msgstr "Momentálně není povolena registrace nových účtů."
@ -346,11 +344,11 @@ msgstr ""
msgid "Corporations"
msgstr "Korporace"
#: allianceauth/corputils/templates/corputils/base.html:35
#: allianceauth/corputils/templates/corputils/base.html:31
msgid "Add corporation"
msgstr "Přidat korporaci"
#: allianceauth/corputils/templates/corputils/base.html:51
#: allianceauth/corputils/templates/corputils/base.html:47
msgid "Search all corporations..."
msgstr "Vyhledat všechny korporace"
@ -498,7 +496,7 @@ msgid "Fleet Activity Tracking"
msgstr ""
#: allianceauth/fleetactivitytracking/forms.py:6 allianceauth/srp/form.py:8
#: allianceauth/srp/templates/srp/management.html:44
#: allianceauth/srp/templates/srp/management.html:42
msgid "Fleet Name"
msgstr "Jméno flotily"
@ -988,7 +986,7 @@ msgstr ""
#: allianceauth/hrapplications/templates/hrapplications/management.html:123
#: allianceauth/hrapplications/templates/hrapplications/management.html:167
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:34
#: allianceauth/srp/templates/srp/data.html:81
#: allianceauth/srp/templates/srp/data.html:79
msgid "Status"
msgstr ""
@ -1001,7 +999,7 @@ msgid "Hidden"
msgstr ""
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45
#: allianceauth/templates/allianceauth/admin-status/overview.html:15
#: allianceauth/templates/allianceauth/admin-status/overview.html:53
msgid "Open"
msgstr ""
@ -1046,17 +1044,9 @@ msgstr ""
msgid "Leave"
msgstr ""
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:74
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:89
#: allianceauth/hrapplications/templates/hrapplications/management.html:46
#: allianceauth/hrapplications/templates/hrapplications/management.html:95
#: allianceauth/hrapplications/templates/hrapplications/management.html:138
#: allianceauth/hrapplications/templates/hrapplications/management.html:182
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:46
#: allianceauth/hrapplications/templates/hrapplications/view.html:25
#: allianceauth/srp/templates/srp/data.html:120
#: allianceauth/srp/templates/srp/management.html:87
msgid "Pending"
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88
msgid "Request pending"
msgstr ""
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80
@ -1067,7 +1057,11 @@ msgstr ""
msgid "Request"
msgstr ""
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:93
msgid "Retract"
msgstr ""
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:103
msgid "No groups available."
msgstr ""
@ -1196,6 +1190,19 @@ msgstr ""
msgid "Applied to leave group %(group)s."
msgstr ""
#: allianceauth/groupmanagement/views.py:438
msgid "You cannot retract that request"
msgstr ""
#: allianceauth/groupmanagement/views.py:450
#, python-format
msgid "Retracted application to group %(group)s."
msgstr ""
#: allianceauth/groupmanagement/views.py:458
msgid "You have no open request for that group."
msgstr ""
#: allianceauth/hrapplications/apps.py:8
msgid "HR Applications"
msgstr ""
@ -1266,12 +1273,23 @@ msgstr ""
msgid "Username"
msgstr ""
#: allianceauth/hrapplications/templates/hrapplications/management.html:46
#: allianceauth/hrapplications/templates/hrapplications/management.html:95
#: allianceauth/hrapplications/templates/hrapplications/management.html:138
#: allianceauth/hrapplications/templates/hrapplications/management.html:182
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:46
#: allianceauth/hrapplications/templates/hrapplications/view.html:25
#: allianceauth/srp/templates/srp/data.html:118
#: allianceauth/srp/templates/srp/management.html:85
msgid "Pending"
msgstr ""
#: allianceauth/hrapplications/templates/hrapplications/management.html:48
#: allianceauth/hrapplications/templates/hrapplications/management.html:141
#: allianceauth/hrapplications/templates/hrapplications/management.html:185
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:48
#: allianceauth/hrapplications/templates/hrapplications/view.html:21
#: allianceauth/srp/templates/srp/data.html:112
#: allianceauth/srp/templates/srp/data.html:110
msgid "Approved"
msgstr ""
@ -1279,7 +1297,7 @@ msgstr ""
#: allianceauth/hrapplications/templates/hrapplications/management.html:143
#: allianceauth/hrapplications/templates/hrapplications/management.html:187
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:50
#: allianceauth/srp/templates/srp/data.html:116
#: allianceauth/srp/templates/srp/data.html:114
msgid "Rejected"
msgstr ""
@ -1514,8 +1532,8 @@ msgstr ""
#: 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
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:13
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:14
msgid "Sign In"
msgstr ""
@ -1543,11 +1561,11 @@ msgstr ""
msgid "Read"
msgstr ""
#: allianceauth/notifications/templates/notifications/list.html:32
#: allianceauth/notifications/templates/notifications/list.html:31
msgid "Mark all notifications as read"
msgstr ""
#: allianceauth/notifications/templates/notifications/list.html:38
#: allianceauth/notifications/templates/notifications/list.html:35
msgid "Delete all read notifications"
msgstr ""
@ -1612,12 +1630,12 @@ msgid "Operation Type"
msgstr ""
#: allianceauth/optimer/form.py:17
#: allianceauth/srp/templates/srp/management.html:47
#: allianceauth/srp/templates/srp/management.html:45
msgid "Fleet Commander"
msgstr ""
#: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14
#: allianceauth/srp/templates/srp/data.html:72
#: allianceauth/srp/templates/srp/data.html:70
msgid "Additional Info"
msgstr ""
@ -1626,7 +1644,7 @@ msgid "(Optional) Describe the operation with a couple of short words."
msgstr ""
#: allianceauth/optimer/templates/optimer/add.html:8
#: allianceauth/optimer/templates/optimer/management.html:18
#: allianceauth/optimer/templates/optimer/management.html:16
msgid "Create Operation"
msgstr ""
@ -1675,26 +1693,26 @@ msgstr ""
msgid "Fleet Operation Management"
msgstr ""
#: allianceauth/optimer/templates/optimer/management.html:28
#: allianceauth/timerboard/templates/timerboard/view.html:32
#: allianceauth/optimer/templates/optimer/management.html:26
#: allianceauth/timerboard/templates/timerboard/view.html:30
msgid "Current EVE time:"
msgstr ""
#: allianceauth/optimer/templates/optimer/management.html:36
#: allianceauth/optimer/templates/optimer/management.html:34
msgid "Next Fleet Operations"
msgstr ""
#: allianceauth/optimer/templates/optimer/management.html:44
#: allianceauth/timerboard/templates/timerboard/view.html:63
#: allianceauth/optimer/templates/optimer/management.html:42
#: allianceauth/timerboard/templates/timerboard/view.html:61
msgid "No upcoming timers."
msgstr ""
#: allianceauth/optimer/templates/optimer/management.html:52
#: allianceauth/optimer/templates/optimer/management.html:50
msgid "Past Fleet Operations"
msgstr ""
#: allianceauth/optimer/templates/optimer/management.html:60
#: allianceauth/timerboard/templates/timerboard/view.html:81
#: allianceauth/optimer/templates/optimer/management.html:58
#: allianceauth/timerboard/templates/timerboard/view.html:79
msgid "No past timers."
msgstr ""
@ -2262,7 +2280,7 @@ msgid "Enabled"
msgstr ""
#: allianceauth/services/templates/services/service_status.html:7
#: allianceauth/srp/templates/srp/management.html:78
#: allianceauth/srp/templates/srp/management.html:76
msgid "Disabled"
msgstr ""
@ -2300,12 +2318,12 @@ msgid "Ship Replacement"
msgstr ""
#: allianceauth/srp/form.py:9
#: allianceauth/srp/templates/srp/management.html:45
#: allianceauth/srp/templates/srp/management.html:43
msgid "Fleet Time"
msgstr ""
#: allianceauth/srp/form.py:10
#: allianceauth/srp/templates/srp/management.html:46
#: allianceauth/srp/templates/srp/management.html:44
msgid "Fleet Doctrine"
msgstr ""
@ -2354,7 +2372,7 @@ msgid "Give this link to the line members."
msgstr ""
#: allianceauth/srp/templates/srp/data.html:8
#: allianceauth/srp/templates/srp/data.html:39
#: allianceauth/srp/templates/srp/data.html:37
msgid "SRP Fleet Data"
msgstr ""
@ -2362,64 +2380,64 @@ msgstr ""
msgid "View Fleets"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:26
#: allianceauth/srp/templates/srp/data.html:24
msgid "Mark Incomplete"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:30
#: allianceauth/srp/templates/srp/data.html:28
msgid "Mark Completed"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:48
#: allianceauth/srp/templates/srp/data.html:142
#: allianceauth/srp/templates/srp/data.html:46
#: allianceauth/srp/templates/srp/data.html:140
msgid "Total Losses:"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:49
#: allianceauth/srp/templates/srp/data.html:143
#: allianceauth/srp/templates/srp/management.html:36
#: allianceauth/srp/templates/srp/data.html:47
#: allianceauth/srp/templates/srp/data.html:141
#: allianceauth/srp/templates/srp/management.html:34
msgid "Total ISK Cost:"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:60
#: allianceauth/srp/templates/srp/data.html:154
#: allianceauth/srp/templates/srp/data.html:58
#: allianceauth/srp/templates/srp/data.html:152
msgid "Are you sure you want to delete SRP requests?"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:70
#: allianceauth/srp/templates/srp/data.html:68
msgid "Pilot Name"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:71
#: allianceauth/srp/templates/srp/data.html:69
msgid "Killboard Link"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:73
#: allianceauth/srp/templates/srp/data.html:71
msgid "Ship Type"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:74
#: allianceauth/srp/templates/srp/data.html:72
msgid "Killboard Loss Amt"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:76
#: allianceauth/srp/templates/srp/data.html:74
msgid "SRP ISK Cost"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:77
#: allianceauth/srp/templates/srp/data.html:75
msgid "Click value to edit Enter to save & next ESC to cancel"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:80
#: allianceauth/srp/templates/srp/data.html:78
msgid "Post Time"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:102
#: allianceauth/srp/templates/srp/management.html:70
#: allianceauth/srp/templates/srp/data.html:100
#: allianceauth/srp/templates/srp/management.html:68
msgid "Link"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:163
#: allianceauth/srp/templates/srp/data.html:161
msgid "No SRP requests for this fleet."
msgstr ""
@ -2431,39 +2449,39 @@ msgstr ""
msgid "View All"
msgstr ""
#: allianceauth/srp/templates/srp/management.html:27
#: allianceauth/srp/templates/srp/management.html:25
msgid "Add SRP Fleet"
msgstr ""
#: allianceauth/srp/templates/srp/management.html:48
#: allianceauth/srp/templates/srp/management.html:46
msgid "Fleet AAR"
msgstr ""
#: allianceauth/srp/templates/srp/management.html:49
#: allianceauth/srp/templates/srp/management.html:47
msgid "Fleet SRP Code"
msgstr ""
#: allianceauth/srp/templates/srp/management.html:50
#: allianceauth/srp/templates/srp/management.html:48
msgid "Fleet ISK Cost"
msgstr ""
#: allianceauth/srp/templates/srp/management.html:51
#: allianceauth/srp/templates/srp/management.html:49
msgid "SRP Status"
msgstr ""
#: allianceauth/srp/templates/srp/management.html:52
#: allianceauth/srp/templates/srp/management.html:50
msgid "Pending Requests"
msgstr ""
#: allianceauth/srp/templates/srp/management.html:91
#: allianceauth/srp/templates/srp/management.html:89
msgid "Completed"
msgstr ""
#: allianceauth/srp/templates/srp/management.html:108
#: allianceauth/srp/templates/srp/management.html:106
msgid "Are you sure you want to delete this SRP code and its contents?"
msgstr ""
#: allianceauth/srp/templates/srp/management.html:129
#: allianceauth/srp/templates/srp/management.html:127
msgid "No SRP fleets created."
msgstr ""
@ -2599,67 +2617,120 @@ msgstr ""
msgid "Your Server received an ESI error response code of "
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:8
msgid "Alliance Auth Notifications"
#: allianceauth/templates/allianceauth/admin-status/overview.html:11
msgid "second"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:20
msgid "No notifications at this time"
#: allianceauth/templates/allianceauth/admin-status/overview.html:12
msgid "seconds"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:29
msgid "Powered by GitLab"
#: allianceauth/templates/allianceauth/admin-status/overview.html:13
msgid "minute"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:35
msgid "Support Discord"
#: allianceauth/templates/allianceauth/admin-status/overview.html:14
msgid "minutes"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:49
#: allianceauth/templates/allianceauth/admin-status/overview.html:53
msgid "Software Version"
#: allianceauth/templates/allianceauth/admin-status/overview.html:15
msgid "hour"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:56
msgid "Current"
#: allianceauth/templates/allianceauth/admin-status/overview.html:16
msgid "hours"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:63
msgid "Latest Stable"
#: allianceauth/templates/allianceauth/admin-status/overview.html:17
msgid "N/A"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:68
msgid "Update available"
#: allianceauth/templates/allianceauth/admin-status/overview.html:18
msgid "ERROR"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:76
msgid "Latest Pre-Release"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:81
msgid "Pre-Release available"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:91
msgid "Task Queue"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:96
#, python-format
msgid ""
"\n"
" Status of %(total)s processed tasks • last %(latest)s\n"
" "
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:112
#: allianceauth/templates/allianceauth/admin-status/overview.html:19
msgid "running"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:113
#: allianceauth/templates/allianceauth/admin-status/overview.html:20
msgid "queued"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:21
msgid "succeeded"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:22
msgid "retried"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:23
msgid "failed"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:29
msgid "Debug mode"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:34
msgid ""
"Debug mode is currently turned on!<br>Make sure to turn it off as soon as "
"you are finished testing."
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:46
msgid "Alliance Auth Notifications"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:58
msgid "No notifications at this time"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:67
msgid "Powered by GitLab"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:73
msgid "Support Discord"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:87
#: allianceauth/templates/allianceauth/admin-status/overview.html:91
msgid "Software Version"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:94
msgid "Current"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:101
msgid "Latest Stable"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:106
msgid "Update available"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:114
msgid "Latest Pre-Release"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:119
msgid "Pre-Release available"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:129
msgid "Task Queue"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:134
msgid ""
"\n"
" Status of <span id=\"total-task-count\">?</span> processed tasks • last <span id=\"celery-uptime\">?</span>\n"
" "
msgstr ""
#: allianceauth/templates/allianceauth/top-menu-admin.html:19
msgid "AA Documentation"
msgstr ""
@ -2883,7 +2954,7 @@ msgid "Theft"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7
#: allianceauth/timerboard/templates/timerboard/view.html:54
#: allianceauth/timerboard/templates/timerboard/view.html:52
msgid "Upcoming Timers"
msgstr ""
@ -2911,7 +2982,7 @@ msgid "Create Timer"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9
#: allianceauth/timerboard/templates/timerboard/view.html:22
#: allianceauth/timerboard/templates/timerboard/view.html:20
msgid "Create Structure Timer"
msgstr ""
@ -2929,11 +3000,11 @@ msgstr ""
msgid "Structure Timer Management"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/view.html:41
#: allianceauth/timerboard/templates/timerboard/view.html:39
msgid "Corporation Timers"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/view.html:72
#: allianceauth/timerboard/templates/timerboard/view.html:70
msgid "Past Timers"
msgstr ""

View File

@ -13,7 +13,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-09-21 13:44+1000\n"
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
"Last-Translator: Machiel Broekman, 2025\n"
"Language-Team: Dutch (Netherlands) (https://app.transifex.com/alliance-auth/teams/107430/nl_NL/)\n"
@ -71,7 +71,7 @@ msgstr ""
"Je bent niet gemachtigd om de volgende beperkte groepen te verwijderen: %s"
#: 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 "Engels"
@ -80,57 +80,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 "Duits"
#: 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 "Spaans"
#: 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 "Italiaans"
#: 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 "Japans"
#: 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 "Koreaans"
#: 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 "Frans"
#: 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 "Russisch"
#: 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 "Nederlands"
#: 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 "Pools"
#: 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 "Oekraïens"
#: 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 "Eenvoudig Chinees"
@ -175,14 +175,12 @@ msgstr "Karakter"
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:11
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:12
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:4
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:6
msgid "Add Character"
msgstr "Personages toevoegen"
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:14
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:15
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:10
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:12
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:8
msgid "Change Main"
msgstr "Verander Main"
@ -242,8 +240,8 @@ msgstr "Scopes"
#: allianceauth/hrapplications/templates/hrapplications/management.html:168
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:35
#: allianceauth/hrapplications/templates/hrapplications/view.html:94
#: allianceauth/srp/templates/srp/data.html:83
#: allianceauth/srp/templates/srp/management.html:53
#: allianceauth/srp/templates/srp/data.html:81
#: allianceauth/srp/templates/srp/management.html:51
msgid "Actions"
msgstr "Acties"
@ -294,7 +292,7 @@ msgstr "Registreer"
msgid "Invalid or expired activation link."
msgstr "Ongeldige of verlopen activeringslink."
#: allianceauth/authentication/views.py:158
#: allianceauth/authentication/views.py:159
#, python-format
msgid ""
"Cannot change main character to %(char)s: character owned by a different "
@ -303,23 +301,23 @@ msgstr ""
"Het hoofdkarakter kan niet worden gewijzigd naar %(char)s: Karakter is "
"eigendom van een ander account."
#: allianceauth/authentication/views.py:165
#: allianceauth/authentication/views.py:166
#, python-format
msgid "Changed main character to %s"
msgstr "Hoofdkarakter veranderd naar %s"
#: allianceauth/authentication/views.py:179
#: allianceauth/authentication/views.py:180
#, python-format
msgid "Added %(name)s to your account."
msgstr "%(name)s aan uw account toegevoegd."
#: allianceauth/authentication/views.py:181
#: allianceauth/authentication/views.py:182
#, python-format
msgid "Failed to add %(name)s to your account: they already have an account."
msgstr ""
"Toevoegen van %(name)s aan uw account is mislukt: ze hebben al een account."
#: allianceauth/authentication/views.py:226
#: allianceauth/authentication/views.py:227
msgid ""
"Unable to authenticate as the selected character. Please log in with the "
"main character associated with this account."
@ -327,11 +325,11 @@ msgstr ""
"Niet mogelijk om te authenticeren als de geselecteerde karakter. Log "
"alstublieft in met het hoofdkarakter dat aan dit account is gekoppeld."
#: allianceauth/authentication/views.py:293
#: allianceauth/authentication/views.py:294
msgid "Registration token has expired."
msgstr "Registratietoken is verlopen."
#: allianceauth/authentication/views.py:354
#: allianceauth/authentication/views.py:355
msgid ""
"Sent confirmation email. Please follow the link to confirm your email "
"address."
@ -339,11 +337,11 @@ msgstr ""
"E-mail met bevestiging verzonden. Volg de link om uw e-mailadres te "
"bevestigen."
#: allianceauth/authentication/views.py:360
#: allianceauth/authentication/views.py:361
msgid "Confirmed your email address. Please login to continue."
msgstr "Uw e-mailadres is bevestigd. Gelieve in te loggen om verder te gaan."
#: allianceauth/authentication/views.py:366
#: allianceauth/authentication/views.py:367
msgid "Registration of new accounts is not allowed at this time."
msgstr "Registratie van nieuwe accounts in momenteel niet toegestaan."
@ -360,11 +358,11 @@ msgstr "Gegevens van bedrijfsleden"
msgid "Corporations"
msgstr "Bedrijven"
#: allianceauth/corputils/templates/corputils/base.html:35
#: allianceauth/corputils/templates/corputils/base.html:31
msgid "Add corporation"
msgstr "Voeg bedrijf toe"
#: allianceauth/corputils/templates/corputils/base.html:51
#: allianceauth/corputils/templates/corputils/base.html:47
msgid "Search all corporations..."
msgstr "Zoek in alle bedrijven..."
@ -514,7 +512,7 @@ msgid "Fleet Activity Tracking"
msgstr "Fleetactiviteit Tracking"
#: allianceauth/fleetactivitytracking/forms.py:6 allianceauth/srp/form.py:8
#: allianceauth/srp/templates/srp/management.html:44
#: allianceauth/srp/templates/srp/management.html:42
msgid "Fleet Name"
msgstr "Fleet naam"
@ -1002,7 +1000,7 @@ msgstr "Beschrijving"
#: allianceauth/hrapplications/templates/hrapplications/management.html:123
#: allianceauth/hrapplications/templates/hrapplications/management.html:167
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:34
#: allianceauth/srp/templates/srp/data.html:81
#: allianceauth/srp/templates/srp/data.html:79
msgid "Status"
msgstr "Status"
@ -1015,7 +1013,7 @@ msgid "Hidden"
msgstr "verborgen"
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45
#: allianceauth/templates/allianceauth/admin-status/overview.html:15
#: allianceauth/templates/allianceauth/admin-status/overview.html:53
msgid "Open"
msgstr "Open"
@ -1060,18 +1058,10 @@ msgstr "Groep"
msgid "Leave"
msgstr "Verlaat"
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:74
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:89
#: allianceauth/hrapplications/templates/hrapplications/management.html:46
#: allianceauth/hrapplications/templates/hrapplications/management.html:95
#: allianceauth/hrapplications/templates/hrapplications/management.html:138
#: allianceauth/hrapplications/templates/hrapplications/management.html:182
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:46
#: allianceauth/hrapplications/templates/hrapplications/view.html:25
#: allianceauth/srp/templates/srp/data.html:120
#: allianceauth/srp/templates/srp/management.html:87
msgid "Pending"
msgstr "In behandeling"
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:73
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:88
msgid "Request pending"
msgstr ""
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:80
msgid "Join"
@ -1081,7 +1071,11 @@ msgstr "Toetreden"
msgid "Request"
msgstr "Aanvraag"
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:99
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:93
msgid "Retract"
msgstr ""
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:103
msgid "No groups available."
msgstr ""
@ -1210,6 +1204,19 @@ msgstr ""
msgid "Applied to leave group %(group)s."
msgstr ""
#: allianceauth/groupmanagement/views.py:438
msgid "You cannot retract that request"
msgstr ""
#: allianceauth/groupmanagement/views.py:450
#, python-format
msgid "Retracted application to group %(group)s."
msgstr ""
#: allianceauth/groupmanagement/views.py:458
msgid "You have no open request for that group."
msgstr ""
#: allianceauth/hrapplications/apps.py:8
msgid "HR Applications"
msgstr ""
@ -1280,12 +1287,23 @@ msgstr ""
msgid "Username"
msgstr "Gebruikersnaam"
#: allianceauth/hrapplications/templates/hrapplications/management.html:46
#: allianceauth/hrapplications/templates/hrapplications/management.html:95
#: allianceauth/hrapplications/templates/hrapplications/management.html:138
#: allianceauth/hrapplications/templates/hrapplications/management.html:182
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:46
#: allianceauth/hrapplications/templates/hrapplications/view.html:25
#: allianceauth/srp/templates/srp/data.html:118
#: allianceauth/srp/templates/srp/management.html:85
msgid "Pending"
msgstr "In behandeling"
#: allianceauth/hrapplications/templates/hrapplications/management.html:48
#: allianceauth/hrapplications/templates/hrapplications/management.html:141
#: allianceauth/hrapplications/templates/hrapplications/management.html:185
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:48
#: allianceauth/hrapplications/templates/hrapplications/view.html:21
#: allianceauth/srp/templates/srp/data.html:112
#: allianceauth/srp/templates/srp/data.html:110
msgid "Approved"
msgstr "Aanvaard"
@ -1293,7 +1311,7 @@ msgstr "Aanvaard"
#: allianceauth/hrapplications/templates/hrapplications/management.html:143
#: allianceauth/hrapplications/templates/hrapplications/management.html:187
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:50
#: allianceauth/srp/templates/srp/data.html:116
#: allianceauth/srp/templates/srp/data.html:114
msgid "Rejected"
msgstr "Afgewezen"
@ -1528,8 +1546,8 @@ msgstr ""
#: 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
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:13
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:14
msgid "Sign In"
msgstr ""
@ -1557,11 +1575,11 @@ msgstr "Ongelezen"
msgid "Read"
msgstr "Gelezen"
#: allianceauth/notifications/templates/notifications/list.html:32
#: allianceauth/notifications/templates/notifications/list.html:31
msgid "Mark all notifications as read"
msgstr ""
#: allianceauth/notifications/templates/notifications/list.html:38
#: allianceauth/notifications/templates/notifications/list.html:35
msgid "Delete all read notifications"
msgstr ""
@ -1626,12 +1644,12 @@ msgid "Operation Type"
msgstr ""
#: allianceauth/optimer/form.py:17
#: allianceauth/srp/templates/srp/management.html:47
#: allianceauth/srp/templates/srp/management.html:45
msgid "Fleet Commander"
msgstr ""
#: allianceauth/optimer/form.py:22 allianceauth/srp/form.py:14
#: allianceauth/srp/templates/srp/data.html:72
#: allianceauth/srp/templates/srp/data.html:70
msgid "Additional Info"
msgstr ""
@ -1640,7 +1658,7 @@ msgid "(Optional) Describe the operation with a couple of short words."
msgstr ""
#: allianceauth/optimer/templates/optimer/add.html:8
#: allianceauth/optimer/templates/optimer/management.html:18
#: allianceauth/optimer/templates/optimer/management.html:16
msgid "Create Operation"
msgstr ""
@ -1689,26 +1707,26 @@ msgstr "Vloot Commandant"
msgid "Fleet Operation Management"
msgstr ""
#: allianceauth/optimer/templates/optimer/management.html:28
#: allianceauth/timerboard/templates/timerboard/view.html:32
#: allianceauth/optimer/templates/optimer/management.html:26
#: allianceauth/timerboard/templates/timerboard/view.html:30
msgid "Current EVE time:"
msgstr ""
#: allianceauth/optimer/templates/optimer/management.html:36
#: allianceauth/optimer/templates/optimer/management.html:34
msgid "Next Fleet Operations"
msgstr ""
#: allianceauth/optimer/templates/optimer/management.html:44
#: allianceauth/timerboard/templates/timerboard/view.html:63
#: allianceauth/optimer/templates/optimer/management.html:42
#: allianceauth/timerboard/templates/timerboard/view.html:61
msgid "No upcoming timers."
msgstr ""
#: allianceauth/optimer/templates/optimer/management.html:52
#: allianceauth/optimer/templates/optimer/management.html:50
msgid "Past Fleet Operations"
msgstr ""
#: allianceauth/optimer/templates/optimer/management.html:60
#: allianceauth/timerboard/templates/timerboard/view.html:81
#: allianceauth/optimer/templates/optimer/management.html:58
#: allianceauth/timerboard/templates/timerboard/view.html:79
msgid "No past timers."
msgstr ""
@ -2276,7 +2294,7 @@ msgid "Enabled"
msgstr ""
#: allianceauth/services/templates/services/service_status.html:7
#: allianceauth/srp/templates/srp/management.html:78
#: allianceauth/srp/templates/srp/management.html:76
msgid "Disabled"
msgstr "Uitgeschakeld"
@ -2314,12 +2332,12 @@ msgid "Ship Replacement"
msgstr ""
#: allianceauth/srp/form.py:9
#: allianceauth/srp/templates/srp/management.html:45
#: allianceauth/srp/templates/srp/management.html:43
msgid "Fleet Time"
msgstr ""
#: allianceauth/srp/form.py:10
#: allianceauth/srp/templates/srp/management.html:46
#: allianceauth/srp/templates/srp/management.html:44
msgid "Fleet Doctrine"
msgstr ""
@ -2368,7 +2386,7 @@ msgid "Give this link to the line members."
msgstr ""
#: allianceauth/srp/templates/srp/data.html:8
#: allianceauth/srp/templates/srp/data.html:39
#: allianceauth/srp/templates/srp/data.html:37
msgid "SRP Fleet Data"
msgstr ""
@ -2376,64 +2394,64 @@ msgstr ""
msgid "View Fleets"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:26
#: allianceauth/srp/templates/srp/data.html:24
msgid "Mark Incomplete"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:30
#: allianceauth/srp/templates/srp/data.html:28
msgid "Mark Completed"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:48
#: allianceauth/srp/templates/srp/data.html:142
#: allianceauth/srp/templates/srp/data.html:46
#: allianceauth/srp/templates/srp/data.html:140
msgid "Total Losses:"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:49
#: allianceauth/srp/templates/srp/data.html:143
#: allianceauth/srp/templates/srp/management.html:36
#: allianceauth/srp/templates/srp/data.html:47
#: allianceauth/srp/templates/srp/data.html:141
#: allianceauth/srp/templates/srp/management.html:34
msgid "Total ISK Cost:"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:60
#: allianceauth/srp/templates/srp/data.html:154
#: allianceauth/srp/templates/srp/data.html:58
#: allianceauth/srp/templates/srp/data.html:152
msgid "Are you sure you want to delete SRP requests?"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:70
#: allianceauth/srp/templates/srp/data.html:68
msgid "Pilot Name"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:71
#: allianceauth/srp/templates/srp/data.html:69
msgid "Killboard Link"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:73
#: allianceauth/srp/templates/srp/data.html:71
msgid "Ship Type"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:74
#: allianceauth/srp/templates/srp/data.html:72
msgid "Killboard Loss Amt"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:76
#: allianceauth/srp/templates/srp/data.html:74
msgid "SRP ISK Cost"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:77
#: allianceauth/srp/templates/srp/data.html:75
msgid "Click value to edit Enter to save & next ESC to cancel"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:80
#: allianceauth/srp/templates/srp/data.html:78
msgid "Post Time"
msgstr ""
#: allianceauth/srp/templates/srp/data.html:102
#: allianceauth/srp/templates/srp/management.html:70
#: allianceauth/srp/templates/srp/data.html:100
#: allianceauth/srp/templates/srp/management.html:68
msgid "Link"
msgstr "Link"
#: allianceauth/srp/templates/srp/data.html:163
#: allianceauth/srp/templates/srp/data.html:161
msgid "No SRP requests for this fleet."
msgstr ""
@ -2445,39 +2463,39 @@ msgstr ""
msgid "View All"
msgstr ""
#: allianceauth/srp/templates/srp/management.html:27
#: allianceauth/srp/templates/srp/management.html:25
msgid "Add SRP Fleet"
msgstr ""
#: allianceauth/srp/templates/srp/management.html:48
#: allianceauth/srp/templates/srp/management.html:46
msgid "Fleet AAR"
msgstr ""
#: allianceauth/srp/templates/srp/management.html:49
#: allianceauth/srp/templates/srp/management.html:47
msgid "Fleet SRP Code"
msgstr ""
#: allianceauth/srp/templates/srp/management.html:50
#: allianceauth/srp/templates/srp/management.html:48
msgid "Fleet ISK Cost"
msgstr "Vloot ISK Kost"
#: allianceauth/srp/templates/srp/management.html:51
#: allianceauth/srp/templates/srp/management.html:49
msgid "SRP Status"
msgstr ""
#: allianceauth/srp/templates/srp/management.html:52
#: allianceauth/srp/templates/srp/management.html:50
msgid "Pending Requests"
msgstr "Lopende Aanvragen"
#: allianceauth/srp/templates/srp/management.html:91
#: allianceauth/srp/templates/srp/management.html:89
msgid "Completed"
msgstr "Voltooid"
#: allianceauth/srp/templates/srp/management.html:108
#: allianceauth/srp/templates/srp/management.html:106
msgid "Are you sure you want to delete this SRP code and its contents?"
msgstr ""
#: allianceauth/srp/templates/srp/management.html:129
#: allianceauth/srp/templates/srp/management.html:127
msgid "No SRP fleets created."
msgstr ""
@ -2613,67 +2631,120 @@ msgstr ""
msgid "Your Server received an ESI error response code of "
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:8
msgid "Alliance Auth Notifications"
msgstr "Alliantie Authenticatie Notificaties"
#: allianceauth/templates/allianceauth/admin-status/overview.html:20
msgid "No notifications at this time"
#: allianceauth/templates/allianceauth/admin-status/overview.html:11
msgid "second"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:29
msgid "Powered by GitLab"
#: allianceauth/templates/allianceauth/admin-status/overview.html:12
msgid "seconds"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:35
msgid "Support Discord"
#: allianceauth/templates/allianceauth/admin-status/overview.html:13
msgid "minute"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:49
#: allianceauth/templates/allianceauth/admin-status/overview.html:53
msgid "Software Version"
msgstr "Software Versie"
#: allianceauth/templates/allianceauth/admin-status/overview.html:56
msgid "Current"
msgstr "Huidige"
#: allianceauth/templates/allianceauth/admin-status/overview.html:63
msgid "Latest Stable"
#: allianceauth/templates/allianceauth/admin-status/overview.html:14
msgid "minutes"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:68
msgid "Update available"
msgstr "Update Beschikbaar"
#: allianceauth/templates/allianceauth/admin-status/overview.html:76
msgid "Latest Pre-Release"
#: allianceauth/templates/allianceauth/admin-status/overview.html:15
msgid "hour"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:81
msgid "Pre-Release available"
#: allianceauth/templates/allianceauth/admin-status/overview.html:16
msgid "hours"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:91
msgid "Task Queue"
#: allianceauth/templates/allianceauth/admin-status/overview.html:17
msgid "N/A"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:96
#, python-format
msgid ""
"\n"
" Status of %(total)s processed tasks • last %(latest)s\n"
" "
#: allianceauth/templates/allianceauth/admin-status/overview.html:18
msgid "ERROR"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:112
#: allianceauth/templates/allianceauth/admin-status/overview.html:19
msgid "running"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:113
#: allianceauth/templates/allianceauth/admin-status/overview.html:20
msgid "queued"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:21
msgid "succeeded"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:22
msgid "retried"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:23
msgid "failed"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:29
msgid "Debug mode"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:34
msgid ""
"Debug mode is currently turned on!<br>Make sure to turn it off as soon as "
"you are finished testing."
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:46
msgid "Alliance Auth Notifications"
msgstr "Alliantie Authenticatie Notificaties"
#: allianceauth/templates/allianceauth/admin-status/overview.html:58
msgid "No notifications at this time"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:67
msgid "Powered by GitLab"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:73
msgid "Support Discord"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:87
#: allianceauth/templates/allianceauth/admin-status/overview.html:91
msgid "Software Version"
msgstr "Software Versie"
#: allianceauth/templates/allianceauth/admin-status/overview.html:94
msgid "Current"
msgstr "Huidige"
#: allianceauth/templates/allianceauth/admin-status/overview.html:101
msgid "Latest Stable"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:106
msgid "Update available"
msgstr "Update Beschikbaar"
#: allianceauth/templates/allianceauth/admin-status/overview.html:114
msgid "Latest Pre-Release"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:119
msgid "Pre-Release available"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:129
msgid "Task Queue"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:134
msgid ""
"\n"
" Status of <span id=\"total-task-count\">?</span> processed tasks • last <span id=\"celery-uptime\">?</span>\n"
" "
msgstr ""
#: allianceauth/templates/allianceauth/top-menu-admin.html:19
msgid "AA Documentation"
msgstr "AA Documentatie"
@ -2897,7 +2968,7 @@ msgid "Theft"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7
#: allianceauth/timerboard/templates/timerboard/view.html:54
#: allianceauth/timerboard/templates/timerboard/view.html:52
msgid "Upcoming Timers"
msgstr ""
@ -2925,7 +2996,7 @@ msgid "Create Timer"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timer_create_form.html:9
#: allianceauth/timerboard/templates/timerboard/view.html:22
#: allianceauth/timerboard/templates/timerboard/view.html:20
msgid "Create Structure Timer"
msgstr ""
@ -2943,11 +3014,11 @@ msgstr "Constructie"
msgid "Structure Timer Management"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/view.html:41
#: allianceauth/timerboard/templates/timerboard/view.html:39
msgid "Corporation Timers"
msgstr "Corporatie Timers"
#: allianceauth/timerboard/templates/timerboard/view.html:72
#: allianceauth/timerboard/templates/timerboard/view.html:70
msgid "Past Timers"
msgstr "Verlopen Timers."

View File

@ -72,6 +72,31 @@
{% theme_select %}
{% if user.is_authenticated and not request.is_mobile_device %}
<li><hr class="dropdown-divider"></li>
<li><h6 class="dropdown-header">{% translate "Sidebar" %}</h6></li>
<li>
<form class="dropdown-item" action="{% url 'minimize_sidebar' %}?next={{ request.path|urlencode }}" method="post">
{% csrf_token %}
<div class="form-check form-switch">
<input
class="form-check-input"
type="checkbox"
role="switch"
id="toggle-sidebar"
onchange="this.form.submit()"
{% if request.session.MINIMIZE_SIDEBAR %}checked{% endif %}
>
<label class="form-check-label" for="toggle-sidebar">
{% translate "Minimize Sidebar" %}
</label>
</div>
</form>
</li>
{% endif %}
{% if user.is_superuser %}
<li><hr class="dropdown-divider"></li>
<li><h6 class="dropdown-header">{% translate "Super User" %}</h6></li>

View File

@ -3,7 +3,7 @@
{% load menu_menu_items %}
<div class="col-auto px-0">
<div class="collapse collapse-horizontal" tabindex="-1" id="sidebar">
<div class="collapse collapse-horizontal {% if user.is_authenticated and not request.is_mobile_device and not request.session.MINIMIZE_SIDEBAR %}show{% endif %}" tabindex="-1" id="sidebar">
<div>
<div class="nav-padding navbar-dark text-bg-dark px-0 d-flex flex-column overflow-hidden vh-100 {% if not user.is_authenticated %}position-relative{% endif %}">
{% if user.is_authenticated %}

View File

@ -0,0 +1,65 @@
"""
Alliance Auth Middleware
"""
from user_agents import parse
class DeviceDetectionMiddleware:
"""
Middleware to detect the type of device making the request.
Sets flags on the request object for easy access in views and templates.
Flags include:
- is_mobile: True if the device is a mobile phone.
- is_tablet: True if the device is a tablet.
- is_mobile_device: True if the device is either a mobile phone or a tablet.
- is_touch_capable: True if the device has touch capabilities.
- is_pc: True if the device is a desktop or laptop computer.
- is_bot: True if the device is identified as a bot or crawler.
"""
def __init__(self, get_response):
"""
Initialize the middleware with the get_response callable.
:param get_response:
:type get_response:
"""
self.get_response = get_response
def __call__(self, request):
"""
Process the incoming request to determine if it's from a mobile device.
This method is called when the middleware is invoked. It inspects the
`user-agent` header of the incoming HTTP request to determine the type
of client making the request (e.g., mobile, tablet, PC, bot, etc.).
Flags are set on the `request` object to indicate the client type.
:param request: The HTTP request object.
:type request: HttpRequest
:return: The HTTP response object after processing the request.
:rtype: HttpResponse
"""
# Retrieve the user-agent string from the request headers
user_agent_string = request.headers.get("user-agent", "")
# Parse the user-agent string to extract client information
user_agent = parse(user_agent_string)
# Set flags on the request object based on the client type
request.is_mobile = user_agent.is_mobile # True if the client is a mobile phone
request.is_tablet = user_agent.is_tablet # True if the client is a tablet
request.is_mobile_device = user_agent.is_mobile or user_agent.is_tablet # True if mobile phone or tablet
request.is_touch_capable = user_agent.is_touch_capable # True if the client supports touch input
request.is_pc = user_agent.is_pc # True if the client is a PC
request.is_bot = user_agent.is_bot # True if the client is a bot
# Pass the request to the next middleware or view and get the response
response = self.get_response(request)
# Return the processed response
return response

View File

@ -88,6 +88,7 @@ MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"allianceauth.authentication.middleware.UserSettingsMiddleware",
"allianceauth.middleware.DeviceDetectionMiddleware",
"django.middleware.locale.LocaleMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",

View File

@ -1,22 +1,37 @@
[supervisord]
environment =
AA_USER = allianceserver, ; The user under which the processes will run
AA_PROJECT_NAME = {{ project_name }}, ; The name of the project
AA_PROJECT_DIRECTORY = {{ project_directory }}, ; The directory of the project
AA_VENV_DIRECTORY = {{ venv_directory }}, ; The directory of the virtual environment
AA_COMMAND_CELERY = {{ celery }}, ; The command to run Celery
AA_COMMAND_GUNICORN = {{ gunicorn }}, ; The command to run Gunicorn
AA_COMMAND_MEMMON = {{ memmon }} ; The command to run Memmon
[program:beat]
command = {{ celery }} -A {{ project_name }} beat
directory = {{ project_directory }}
user = allianceserver
stdout_logfile = {{ project_directory }}/log/%(program_name)s.log
stderr_logfile = {{ project_directory }}/log/%(program_name)s.log
command = %(ENV_AA_COMMAND_CELERY)s
-A %(ENV_AA_PROJECT_NAME)s beat
directory = %(ENV_AA_VENV_DIRECTORY)s
user = %(ENV_AA_USER)s
stdout_logfile = %(ENV_AA_VENV_DIRECTORY)s/log/%(program_name)s.log
stderr_logfile = %(ENV_AA_VENV_DIRECTORY)s/log/%(program_name)s.log
autostart = true
autorestart = true
startsecs = 10
priority = 998
[program:worker]
command = {{ celery }} -A {{ project_name }} worker --pool=threads --concurrency=5 -n %(program_name)s_%(process_num)02d
directory = {{ project_directory }}
user = allianceserver
command = %(ENV_AA_COMMAND_CELERY)s
-A %(ENV_AA_PROJECT_NAME)s worker
--pool=threads
--concurrency=5
-n %(program_name)s_%(process_num)02d
directory = %(ENV_AA_VENV_DIRECTORY)s
user = %(ENV_AA_USER)s
numprocs = 1
process_name = %(program_name)s_%(process_num)02d
stdout_logfile = {{ project_directory }}/log/%(program_name)s.log
stderr_logfile = {{ project_directory }}/log/%(program_name)s.log
stdout_logfile = %(ENV_AA_VENV_DIRECTORY)s/log/%(program_name)s.log
stderr_logfile = %(ENV_AA_VENV_DIRECTORY)s/log/%(program_name)s.log
autostart = true
autorestart = true
startsecs = 10
@ -26,22 +41,26 @@ priority = 998
{% if gunicorn %}
[program:gunicorn]
user = allianceserver
directory = {{ project_directory }}
command = {{ gunicorn }} {{ project_name }}.wsgi --workers=3 --timeout 120
stdout_logfile = {{ project_directory }}/log/%(program_name)s.log
stderr_logfile = {{ project_directory }}/log/%(program_name)s.log
user = %(ENV_AA_USER)s
directory = %(ENV_AA_VENV_DIRECTORY)s
command = %(ENV_AA_COMMAND_GUNICORN)s %(ENV_AA_PROJECT_NAME)s.wsgi
--workers=3
--timeout 120
stdout_logfile = %(ENV_AA_VENV_DIRECTORY)s/log/%(program_name)s.log
stderr_logfile = %(ENV_AA_VENV_DIRECTORY)s/log/%(program_name)s.log
autostart = true
autorestart = true
stopsignal = INT
{% endif %}
[eventlistener:memmon]
command = {{ memmon }} -p worker_00=256MB -p gunicorn=256MB
directory = {{ project_directory }}
command = %(ENV_AA_COMMAND_MEMMON)s
-p worker_00=256MB
-p gunicorn=256MB
directory = %(ENV_AA_VENV_DIRECTORY)s
events = TICK_60
stdout_logfile = {{ project_directory }}/log/memmon.log
stderr_logfile = {{ project_directory }}/log/memmon.log
stdout_logfile = %(ENV_AA_VENV_DIRECTORY)s/log/memmon.log
stderr_logfile = %(ENV_AA_VENV_DIRECTORY)s/log/memmon.log
[group:{{ project_name }}]
programs = beat,worker{% if gunicorn %},gunicorn{% endif %}

View File

@ -1,23 +1,6 @@
$(document).ready(() => {
'use strict';
const sidebar = document.getElementById('sidebar');
const sidebarKey = `sidebar_${sidebar.id}`;
sidebar.addEventListener('shown.bs.collapse', (event) => {
if (event.target.id === sidebar.id) {
localStorage.removeItem(sidebarKey);
}
});
sidebar.addEventListener('hidden.bs.collapse', (event) => {
if (event.target.id === sidebar.id) {
localStorage.setItem(sidebarKey, 'closed');
}
});
sidebar.classList.toggle('show', localStorage.getItem(sidebarKey) !== 'closed');
const activeChildMenuItem = document.querySelector('ul#sidebar-menu ul.collapse a.active');
if (activeChildMenuItem) {

View File

@ -80,7 +80,10 @@ urlpatterns = [
path('night/', views.NightModeRedirectView.as_view(), name='nightmode'),
# Theme Change
path('theme/', views.ThemeRedirectView.as_view(), name='theme')
path('theme/', views.ThemeRedirectView.as_view(), name='theme'),
# Minimize Menu
path('minimize-sidebar/', views.MinimizeSidebarRedirectView.as_view(), name='minimize_sidebar')
]
url_hooks = get_hooks("url_hook")

View File

@ -48,6 +48,29 @@ class ThemeRedirectView(View):
return HttpResponseRedirect(request.GET.get("next", "/"))
class MinimizeSidebarRedirectView(View):
SESSION_VAR = "MINIMIZE_SIDEBAR"
def post(self, request, *args, **kwargs):
request.session[self.SESSION_VAR] = not self.minimize_sidebar_state(request)
if not request.user.is_anonymous:
try:
request.user.profile.minimize_sidebar = request.session[self.SESSION_VAR]
request.user.profile.save()
except Exception as e:
logger.exception(e)
return HttpResponseRedirect(request.GET.get("next", "/"))
@classmethod
def minimize_sidebar_state(cls, request):
try:
return request.session.get(cls.SESSION_VAR, False)
except AttributeError:
# Session is middleware
# Sometimes request wont have a session attribute
return False
# TODO: error views should be renamed to a proper function name when possible

View File

@ -61,11 +61,14 @@ dependencies = [
"passlib",
"pydiscourse",
"python-slugify>=1.2",
"pyyaml",
"redis>=4",
"requests>=2.9.1",
"requests-oauthlib",
"semantic-version",
"slixmpp<1.9",
"ua-parser",
"user-agents",
]
optional-dependencies.docs = [
"myst-parser",