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: except Exception as e:
logger.exception(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 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, on_delete=models.SET_DEFAULT,
default=get_guest_state_pk) default=get_guest_state_pk)
language = models.CharField( language = models.CharField(
_("Language"), max_length=10, _("Language"),
max_length=10,
choices=Language.choices, choices=Language.choices,
blank=True, blank=True,
default='') default='')
@ -112,6 +113,12 @@ class UserProfile(models.Model):
null=True, null=True,
help_text="Bootstrap 5 Themes from https://bootswatch.com/ or Community Apps" 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): def assign_state(self, state=None, commit=True):
if not state: if not state:

View File

@ -88,6 +88,7 @@ class TestUserSettingsMiddlewareLoginFlow(TestCase):
self.request.LANGUAGE_CODE = 'en' self.request.LANGUAGE_CODE = 'en'
self.request.user.profile.language = 'de' self.request.user.profile.language = 'de'
self.request.user.profile.night_mode = True self.request.user.profile.night_mode = True
self.request.user.profile.minimize_sidebar = False
self.request.user.is_anonymous = False self.request.user.is_anonymous = False
self.response = Mock() self.response = Mock()
self.response.content = 'hello world' self.response.content = 'hello world'
@ -173,3 +174,26 @@ class TestUserSettingsMiddlewareLoginFlow(TestCase):
self.response self.response
) )
self.assertEqual(self.request.session["NIGHT_MODE"], True) 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('--celery', help='The path to the celery executable.')
parser.add_argument('--gunicorn', help='The path to the gunicorn 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('--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): def create_project(parser, options, args):
@ -27,7 +28,7 @@ def create_project(parser, options, args):
allianceauth_path = os.path.dirname(allianceauth.__file__) allianceauth_path = os.path.dirname(allianceauth.__file__)
template_path = os.path.join(allianceauth_path, 'project_template') 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 = { command_options = {
'template': template_path, 'template': template_path,
'python': shutil.which('python'), 'python': shutil.which('python'),
@ -35,6 +36,7 @@ def create_project(parser, options, args):
'celery': shutil.which('celery'), 'celery': shutil.which('celery'),
'memmon': shutil.which('memmon'), 'memmon': shutil.which('memmon'),
'extensions': ['py', 'conf', 'json'], 'extensions': ['py', 'conf', 'json'],
'venv_directory': os.getenv('VIRTUAL_ENV'),
} }
# Strip 'start' out of the arguments, leaving project name (and optionally destination dir) # Strip 'start' out of the arguments, leaving project name (and optionally destination dir)

View File

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

View File

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

View File

@ -72,6 +72,31 @@
{% theme_select %} {% 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 %} {% if user.is_superuser %}
<li><hr class="dropdown-divider"></li> <li><hr class="dropdown-divider"></li>
<li><h6 class="dropdown-header">{% translate "Super User" %}</h6></li> <li><h6 class="dropdown-header">{% translate "Super User" %}</h6></li>

View File

@ -3,7 +3,7 @@
{% load menu_menu_items %} {% load menu_menu_items %}
<div class="col-auto px-0"> <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>
<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 %}"> <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 %} {% 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.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware", "django.contrib.sessions.middleware.SessionMiddleware",
"allianceauth.authentication.middleware.UserSettingsMiddleware", "allianceauth.authentication.middleware.UserSettingsMiddleware",
"allianceauth.middleware.DeviceDetectionMiddleware",
"django.middleware.locale.LocaleMiddleware", "django.middleware.locale.LocaleMiddleware",
"django.middleware.common.CommonMiddleware", "django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware", "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] [program:beat]
command = {{ celery }} -A {{ project_name }} beat command = %(ENV_AA_COMMAND_CELERY)s
directory = {{ project_directory }} -A %(ENV_AA_PROJECT_NAME)s beat
user = allianceserver directory = %(ENV_AA_VENV_DIRECTORY)s
stdout_logfile = {{ project_directory }}/log/%(program_name)s.log user = %(ENV_AA_USER)s
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 autostart = true
autorestart = true autorestart = true
startsecs = 10 startsecs = 10
priority = 998 priority = 998
[program:worker] [program:worker]
command = {{ celery }} -A {{ project_name }} worker --pool=threads --concurrency=5 -n %(program_name)s_%(process_num)02d command = %(ENV_AA_COMMAND_CELERY)s
directory = {{ project_directory }} -A %(ENV_AA_PROJECT_NAME)s worker
user = allianceserver --pool=threads
--concurrency=5
-n %(program_name)s_%(process_num)02d
directory = %(ENV_AA_VENV_DIRECTORY)s
user = %(ENV_AA_USER)s
numprocs = 1 numprocs = 1
process_name = %(program_name)s_%(process_num)02d process_name = %(program_name)s_%(process_num)02d
stdout_logfile = {{ project_directory }}/log/%(program_name)s.log stdout_logfile = %(ENV_AA_VENV_DIRECTORY)s/log/%(program_name)s.log
stderr_logfile = {{ project_directory }}/log/%(program_name)s.log stderr_logfile = %(ENV_AA_VENV_DIRECTORY)s/log/%(program_name)s.log
autostart = true autostart = true
autorestart = true autorestart = true
startsecs = 10 startsecs = 10
@ -26,22 +41,26 @@ priority = 998
{% if gunicorn %} {% if gunicorn %}
[program:gunicorn] [program:gunicorn]
user = allianceserver user = %(ENV_AA_USER)s
directory = {{ project_directory }} directory = %(ENV_AA_VENV_DIRECTORY)s
command = {{ gunicorn }} {{ project_name }}.wsgi --workers=3 --timeout 120 command = %(ENV_AA_COMMAND_GUNICORN)s %(ENV_AA_PROJECT_NAME)s.wsgi
stdout_logfile = {{ project_directory }}/log/%(program_name)s.log --workers=3
stderr_logfile = {{ project_directory }}/log/%(program_name)s.log --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 autostart = true
autorestart = true autorestart = true
stopsignal = INT stopsignal = INT
{% endif %} {% endif %}
[eventlistener:memmon] [eventlistener:memmon]
command = {{ memmon }} -p worker_00=256MB -p gunicorn=256MB command = %(ENV_AA_COMMAND_MEMMON)s
directory = {{ project_directory }} -p worker_00=256MB
-p gunicorn=256MB
directory = %(ENV_AA_VENV_DIRECTORY)s
events = TICK_60 events = TICK_60
stdout_logfile = {{ project_directory }}/log/memmon.log stdout_logfile = %(ENV_AA_VENV_DIRECTORY)s/log/memmon.log
stderr_logfile = {{ project_directory }}/log/memmon.log stderr_logfile = %(ENV_AA_VENV_DIRECTORY)s/log/memmon.log
[group:{{ project_name }}] [group:{{ project_name }}]
programs = beat,worker{% if gunicorn %},gunicorn{% endif %} programs = beat,worker{% if gunicorn %},gunicorn{% endif %}

View File

@ -1,23 +1,6 @@
$(document).ready(() => { $(document).ready(() => {
'use strict'; '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'); const activeChildMenuItem = document.querySelector('ul#sidebar-menu ul.collapse a.active');
if (activeChildMenuItem) { if (activeChildMenuItem) {

View File

@ -80,7 +80,10 @@ urlpatterns = [
path('night/', views.NightModeRedirectView.as_view(), name='nightmode'), path('night/', views.NightModeRedirectView.as_view(), name='nightmode'),
# Theme Change # 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") url_hooks = get_hooks("url_hook")

View File

@ -48,6 +48,29 @@ class ThemeRedirectView(View):
return HttpResponseRedirect(request.GET.get("next", "/")) 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 # TODO: error views should be renamed to a proper function name when possible

View File

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