mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-04 14:16:21 +01:00
Compare commits
56 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7033406ba6 | ||
|
|
6b395ca1d4 | ||
|
|
795a7e006f | ||
|
|
2a894cd62c | ||
|
|
9ada26e849 | ||
|
|
7120b3956c | ||
|
|
4da67cfaf6 | ||
|
|
0a940810bd | ||
|
|
a868438492 | ||
|
|
dc1ed8c570 | ||
|
|
8489f204dd | ||
|
|
1478588016 | ||
|
|
a16eb4b7f7 | ||
|
|
292fb7b29d | ||
|
|
c6890dd2c6 | ||
|
|
702564d15e | ||
|
|
cef2e86ea1 | ||
|
|
50681b023b | ||
|
|
2822775fb8 | ||
|
|
ef7c8be7b5 | ||
|
|
d639617eba | ||
|
|
2125192f72 | ||
|
|
8d63801b00 | ||
|
|
e053fb7d96 | ||
|
|
ae7ed5c297 | ||
|
|
d624ba4427 | ||
|
|
164cd4fbb2 | ||
|
|
94b52c850e | ||
|
|
4d19ceb388 | ||
|
|
9a64728311 | ||
|
|
dcc0c78daf | ||
|
|
5507c30af4 | ||
|
|
66b97835d4 | ||
|
|
fd66a7cb20 | ||
|
|
c0f0f8db73 | ||
|
|
4210b2eabc | ||
|
|
225e68647e | ||
|
|
7e2f864ebf | ||
|
|
f2384ba45b | ||
|
|
c5918b9b3c | ||
|
|
ffedc4103d | ||
|
|
0467b23a1a | ||
|
|
cda5ce739f | ||
|
|
e5c8426ea3 | ||
|
|
b2bd489ddc | ||
|
|
6397cf358a | ||
|
|
90fcc4a811 | ||
|
|
ec7472fe22 | ||
|
|
5148b1914d | ||
|
|
2e0716f5ae | ||
|
|
1fb091acb2 | ||
|
|
07c62ed32a | ||
|
|
660fe79d08 | ||
|
|
1dea92ed76 | ||
|
|
3f54d49d8b | ||
|
|
77da6928b2 |
@@ -5,7 +5,7 @@
|
||||
[](https://pypi.org/project/allianceauth/)
|
||||
[](https://pypi.org/project/allianceauth/)
|
||||
[](https://gitlab.com/allianceauth/allianceauth/commits/master)
|
||||
[](http://allianceauth.readthedocs.io/?badge=latest)
|
||||
[](https://allianceauth.readthedocs.io/?badge=latest)
|
||||
[](https://gitlab.com/allianceauth/allianceauth/commits/master)
|
||||
[](https://discord.gg/fjnHAmk)
|
||||
|
||||
@@ -14,7 +14,7 @@ An auth system for EVE Online to help in-game organizations manage online servic
|
||||
## Content
|
||||
|
||||
- [Overview](#overview)
|
||||
- [Documentation](http://allianceauth.rtfd.io)
|
||||
- [Documentation](https://allianceauth.rtfd.io)
|
||||
- [Support](#support)
|
||||
- [Release Notes](https://gitlab.com/allianceauth/allianceauth/-/releases)
|
||||
- [Developer Team](#development-team)
|
||||
@@ -38,7 +38,7 @@ Main features:
|
||||
|
||||
- English :flag_gb:, Chinese :flag_cn:, German :flag_de:, Spanish :flag_es:, Korean :flag_kr:, Russian :flag_ru:, Italian :flag_it:, French :flag_fr:, Japanese :flag_jp: and Ukrainian :flag_ua: Localization
|
||||
|
||||
For further details about AA - including an installation guide and a full list of included services and plugin apps - please see the [official documentation](http://allianceauth.rtfd.io).
|
||||
For further details about AA - including an installation guide and a full list of included services and plugin apps - please see the [official documentation](https://allianceauth.rtfd.io).
|
||||
|
||||
## Screenshot
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ manage online service access.
|
||||
# This will make sure the app is always imported when
|
||||
# Django starts so that shared_task will use this app.
|
||||
|
||||
__version__ = '4.3.1'
|
||||
__version__ = '4.5.0'
|
||||
__title__ = 'Alliance Auth'
|
||||
__url__ = 'https://gitlab.com/allianceauth/allianceauth'
|
||||
NAME = f'{__title__} v{__version__}'
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
{% csrf_token %}
|
||||
|
||||
<select class="form-select" onchange="this.form.submit()" class="form-control" id="lang-select" name="language">
|
||||
{% get_language_info_list for LANGUAGES as languages %}
|
||||
{% get_available_languages as LANGUAGES %}
|
||||
|
||||
{% for language in languages %}
|
||||
<option lang="{{ language.code }}" value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected="selected"{% endif %}>
|
||||
{{ language.name_local|capfirst }} ({{ language.code }})
|
||||
{% for lang_code, lang_name in LANGUAGES %}
|
||||
<option lang="{{ lang_code }}" value="{{ lang_code }}"{% if lang_code == LANGUAGE_CODE %} selected{% endif %}>
|
||||
{{ lang_code|language_name_local|capfirst }} ({{ lang_code }})
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
|
||||
@@ -10,7 +10,7 @@ from . import (
|
||||
)
|
||||
|
||||
|
||||
_BASE_URL = 'http://evemaps.dotlan.net'
|
||||
_BASE_URL = 'https://evemaps.dotlan.net'
|
||||
|
||||
|
||||
def _build_url(category: str, name: str) -> str:
|
||||
|
||||
@@ -31,29 +31,29 @@ class TestDotlan(TestCase):
|
||||
def test_alliance_url(self):
|
||||
self.assertEqual(
|
||||
dotlan.alliance_url('Wayne Enterprices'),
|
||||
'http://evemaps.dotlan.net/alliance/Wayne_Enterprices'
|
||||
'https://evemaps.dotlan.net/alliance/Wayne_Enterprices'
|
||||
)
|
||||
|
||||
def test_corporation_url(self):
|
||||
self.assertEqual(
|
||||
dotlan.corporation_url('Wayne Technology'),
|
||||
'http://evemaps.dotlan.net/corp/Wayne_Technology'
|
||||
'https://evemaps.dotlan.net/corp/Wayne_Technology'
|
||||
)
|
||||
self.assertEqual(
|
||||
dotlan.corporation_url('Crédit Agricole'),
|
||||
'http://evemaps.dotlan.net/corp/Cr%C3%A9dit_Agricole'
|
||||
'https://evemaps.dotlan.net/corp/Cr%C3%A9dit_Agricole'
|
||||
)
|
||||
|
||||
def test_region_url(self):
|
||||
self.assertEqual(
|
||||
dotlan.region_url('Black Rise'),
|
||||
'http://evemaps.dotlan.net/map/Black_Rise'
|
||||
'https://evemaps.dotlan.net/map/Black_Rise'
|
||||
)
|
||||
|
||||
def test_solar_system_url(self):
|
||||
self.assertEqual(
|
||||
dotlan.solar_system_url('Jita'),
|
||||
'http://evemaps.dotlan.net/system/Jita'
|
||||
'https://evemaps.dotlan.net/system/Jita'
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import logging
|
||||
from random import randint
|
||||
|
||||
from celery import shared_task
|
||||
|
||||
@@ -9,7 +10,8 @@ from . import providers
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
TASK_PRIORITY = 7
|
||||
CHUNK_SIZE = 500
|
||||
CHARACTER_AFFILIATION_CHUNK_SIZE = 500
|
||||
EVEONLINE_TASK_JITTER = 600
|
||||
|
||||
|
||||
def chunks(lst, n):
|
||||
@@ -19,13 +21,13 @@ def chunks(lst, n):
|
||||
|
||||
|
||||
@shared_task
|
||||
def update_corp(corp_id):
|
||||
def update_corp(corp_id: int) -> None:
|
||||
"""Update given corporation from ESI"""
|
||||
EveCorporationInfo.objects.update_corporation(corp_id)
|
||||
|
||||
|
||||
@shared_task
|
||||
def update_alliance(alliance_id):
|
||||
def update_alliance(alliance_id: int) -> None:
|
||||
"""Update given alliance from ESI"""
|
||||
EveAllianceInfo.objects.update_alliance(alliance_id).populate_alliance()
|
||||
|
||||
@@ -37,23 +39,30 @@ def update_character(character_id: int) -> None:
|
||||
|
||||
|
||||
@shared_task
|
||||
def run_model_update():
|
||||
def run_model_update() -> None:
|
||||
"""Update all alliances, corporations and characters from ESI"""
|
||||
|
||||
#update existing corp models
|
||||
# Queue update tasks for Known Corporation Models
|
||||
for corp in EveCorporationInfo.objects.all().values('corporation_id'):
|
||||
update_corp.apply_async(args=[corp['corporation_id']], priority=TASK_PRIORITY)
|
||||
update_corp.apply_async(
|
||||
args=[corp['corporation_id']],
|
||||
priority=TASK_PRIORITY,
|
||||
countdown=randint(1, EVEONLINE_TASK_JITTER))
|
||||
|
||||
# update existing alliance models
|
||||
# Queue update tasks for Known Alliance Models
|
||||
for alliance in EveAllianceInfo.objects.all().values('alliance_id'):
|
||||
update_alliance.apply_async(args=[alliance['alliance_id']], priority=TASK_PRIORITY)
|
||||
update_alliance.apply_async(
|
||||
args=[alliance['alliance_id']],
|
||||
priority=TASK_PRIORITY,
|
||||
countdown=randint(1, EVEONLINE_TASK_JITTER))
|
||||
|
||||
# update existing character models
|
||||
# Queue update tasks for Known Character Models
|
||||
character_ids = EveCharacter.objects.all().values_list('character_id', flat=True)
|
||||
for character_ids_chunk in chunks(character_ids, CHUNK_SIZE):
|
||||
for character_ids_chunk in chunks(character_ids, CHARACTER_AFFILIATION_CHUNK_SIZE):
|
||||
update_character_chunk.apply_async(
|
||||
args=[character_ids_chunk], priority=TASK_PRIORITY
|
||||
)
|
||||
args=[character_ids_chunk],
|
||||
priority=TASK_PRIORITY,
|
||||
countdown=randint(1, EVEONLINE_TASK_JITTER))
|
||||
|
||||
|
||||
@shared_task
|
||||
@@ -68,8 +77,9 @@ def update_character_chunk(character_ids_chunk: list):
|
||||
logger.info("Failed to bulk update characters. Attempting single updates")
|
||||
for character_id in character_ids_chunk:
|
||||
update_character.apply_async(
|
||||
args=[character_id], priority=TASK_PRIORITY
|
||||
)
|
||||
args=[character_id],
|
||||
priority=TASK_PRIORITY,
|
||||
countdown=randint(1, EVEONLINE_TASK_JITTER))
|
||||
return
|
||||
|
||||
affiliations = {
|
||||
@@ -107,5 +117,5 @@ def update_character_chunk(character_ids_chunk: list):
|
||||
|
||||
if corp_changed or alliance_changed or name_changed:
|
||||
update_character.apply_async(
|
||||
args=[character.get('character_id')], priority=TASK_PRIORITY
|
||||
)
|
||||
args=[character.get('character_id')],
|
||||
priority=TASK_PRIORITY)
|
||||
|
||||
@@ -84,7 +84,7 @@ class TestUpdateTasks(TestCase):
|
||||
@override_settings(CELERY_ALWAYS_EAGER=True)
|
||||
@patch('allianceauth.eveonline.providers.esi_client_factory')
|
||||
@patch('allianceauth.eveonline.tasks.providers')
|
||||
@patch('allianceauth.eveonline.tasks.CHUNK_SIZE', 2)
|
||||
@patch('allianceauth.eveonline.tasks.CHARACTER_AFFILIATION_CHUNK_SIZE', 2)
|
||||
class TestRunModelUpdate(TransactionTestCase):
|
||||
def test_should_run_updates(self, mock_providers, mock_esi_client_factory):
|
||||
# given
|
||||
@@ -139,7 +139,7 @@ class TestRunModelUpdate(TransactionTestCase):
|
||||
@patch('allianceauth.eveonline.tasks.update_character', wraps=update_character)
|
||||
@patch('allianceauth.eveonline.providers.esi_client_factory')
|
||||
@patch('allianceauth.eveonline.tasks.providers')
|
||||
@patch('allianceauth.eveonline.tasks.CHUNK_SIZE', 2)
|
||||
@patch('allianceauth.eveonline.tasks.CHARACTER_AFFILIATION_CHUNK_SIZE', 2)
|
||||
class TestUpdateCharacterChunk(TestCase):
|
||||
@staticmethod
|
||||
def _updated_character_ids(spy_update_character) -> set:
|
||||
|
||||
@@ -13,6 +13,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
/* Image overflow fix
|
||||
------------------------------------------------------------------------------------- */
|
||||
@media all {
|
||||
img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
/* Side Navigation
|
||||
------------------------------------------------------------------------------------- */
|
||||
@media all {
|
||||
|
||||
@@ -49,7 +49,7 @@ class GroupsMenuItem(MenuItemHook):
|
||||
MenuItemHook.__init__(
|
||||
self,
|
||||
text=_("Groups"),
|
||||
classes="fa-solid fa-user",
|
||||
classes="fa-solid fa-users",
|
||||
url_name="groupmanagement:groups",
|
||||
order=25,
|
||||
navactive=[
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if g.group.authgroup.group_leaders.all.count %}
|
||||
{% if g.group.authgroup.group_leader_groups.all.count %}
|
||||
{% for group in g.group.authgroup.group_leader_groups.all %}
|
||||
<span class="my-1 me-1 badge bg-secondary">{{group.name}}</span>
|
||||
{% endfor %}
|
||||
|
||||
Binary file not shown.
@@ -13,7 +13,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-09-13 19:57+1000\n"
|
||||
"POT-Creation-Date: 2024-10-21 12:59+1000\n"
|
||||
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
|
||||
"Last-Translator: Peter Pfeufer, 2024\n"
|
||||
"Language-Team: German (https://app.transifex.com/alliance-auth/teams/107430/de/)\n"
|
||||
@@ -68,7 +68,7 @@ msgstr "Englisch"
|
||||
|
||||
#: allianceauth/authentication/models.py:72
|
||||
msgid "Czech"
|
||||
msgstr ""
|
||||
msgstr "Tschechisch"
|
||||
|
||||
#: allianceauth/authentication/models.py:73
|
||||
#: allianceauth/project_template/project_name/settings/base.py:101
|
||||
@@ -108,7 +108,7 @@ msgstr "Russisch"
|
||||
#: allianceauth/authentication/models.py:80
|
||||
#: allianceauth/project_template/project_name/settings/base.py:107
|
||||
msgid "Dutch"
|
||||
msgstr ""
|
||||
msgstr "Niederländisch"
|
||||
|
||||
#: allianceauth/authentication/models.py:81
|
||||
#: allianceauth/project_template/project_name/settings/base.py:108
|
||||
@@ -123,7 +123,7 @@ msgstr "Ukrainisch"
|
||||
#: allianceauth/authentication/models.py:83
|
||||
#: allianceauth/project_template/project_name/settings/base.py:111
|
||||
msgid "Simplified Chinese"
|
||||
msgstr ""
|
||||
msgstr "Vereinfachtes Chinesisch"
|
||||
|
||||
#: allianceauth/authentication/models.py:99
|
||||
#: allianceauth/menu/templates/menu/menu-user.html:42
|
||||
@@ -547,6 +547,7 @@ msgstr "FAT löschen"
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30
|
||||
msgid "User"
|
||||
msgstr "Benutzername"
|
||||
|
||||
@@ -744,7 +745,6 @@ msgstr "Gruppenverwaltung"
|
||||
|
||||
#: allianceauth/groupmanagement/auth_hooks.py:51
|
||||
#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34
|
||||
#: allianceauth/templates/allianceauth/side-menu.html:15
|
||||
msgid "Groups"
|
||||
msgstr "Gruppen"
|
||||
|
||||
@@ -1664,7 +1664,7 @@ msgstr "Anstehende Flotten"
|
||||
#: allianceauth/optimer/templates/optimer/management.html:44
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:62
|
||||
msgid "No upcoming timers."
|
||||
msgstr "Keine bevorstehenden Timer."
|
||||
msgstr "Keine anstehenden Timer."
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/management.html:52
|
||||
msgid "Past Fleet Operations"
|
||||
@@ -1930,6 +1930,48 @@ msgstr "Setze IPSuite4 Passwort."
|
||||
msgid "Deactivated IPSuite4 account."
|
||||
msgstr "IP4Suite Konto deaktiviert."
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6
|
||||
msgid "Mumble"
|
||||
msgstr "Mumble"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10
|
||||
msgid "Mumble History"
|
||||
msgstr "Mumbleverbindungen"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22
|
||||
msgid "Server Connection History"
|
||||
msgstr "Verlauf der Serververbindungen"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31
|
||||
msgid "Displayed Name"
|
||||
msgstr "Angezeigter Name"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32
|
||||
msgid "Release"
|
||||
msgstr "Release"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67
|
||||
msgid "Version"
|
||||
msgstr "Version"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34
|
||||
msgid "Last Connect"
|
||||
msgstr "Zuletzt verbunden"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35
|
||||
msgid "Last Disconnect"
|
||||
msgstr "Zuletzt getrennt"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59
|
||||
msgid "Server Connection Breakdown"
|
||||
msgstr "Serververbindungen"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68
|
||||
msgid "Number"
|
||||
msgstr "Nummer"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28
|
||||
#: allianceauth/services/templates/services/service_password.html:26
|
||||
msgid "Set Password"
|
||||
@@ -1939,6 +1981,10 @@ msgstr "Setze Passwort"
|
||||
msgid "Connect"
|
||||
msgstr "Verbinden"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:52
|
||||
msgid "Mumble Connection History"
|
||||
msgstr "Verlauf der Mumbleverbindungen"
|
||||
|
||||
#: allianceauth/services/modules/openfire/auth_hooks.py:27
|
||||
msgid "Jabber"
|
||||
msgstr "Jabber"
|
||||
@@ -2804,12 +2850,12 @@ msgstr "Entankernd"
|
||||
|
||||
#: allianceauth/timerboard/models.py:58
|
||||
msgid "Abandoned"
|
||||
msgstr ""
|
||||
msgstr "Aufgegeben"
|
||||
|
||||
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:53
|
||||
msgid "Upcoming Timers"
|
||||
msgstr "Bevorstehende Timefr"
|
||||
msgstr "Anstehende Timer"
|
||||
|
||||
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:15
|
||||
msgid "Timer"
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-09-13 19:57+1000\n"
|
||||
"POT-Creation-Date: 2024-10-21 12:59+1000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -519,6 +519,7 @@ msgstr ""
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
@@ -714,7 +715,6 @@ msgstr ""
|
||||
|
||||
#: allianceauth/groupmanagement/auth_hooks.py:51
|
||||
#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34
|
||||
#: allianceauth/templates/allianceauth/side-menu.html:15
|
||||
msgid "Groups"
|
||||
msgstr ""
|
||||
|
||||
@@ -1856,6 +1856,48 @@ msgstr ""
|
||||
msgid "Deactivated IPSuite4 account."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6
|
||||
msgid "Mumble"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10
|
||||
msgid "Mumble History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22
|
||||
msgid "Server Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31
|
||||
msgid "Displayed Name"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32
|
||||
msgid "Release"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34
|
||||
msgid "Last Connect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35
|
||||
msgid "Last Disconnect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59
|
||||
msgid "Server Connection Breakdown"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68
|
||||
msgid "Number"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28
|
||||
#: allianceauth/services/templates/services/service_password.html:26
|
||||
msgid "Set Password"
|
||||
@@ -1865,6 +1907,10 @@ msgstr ""
|
||||
msgid "Connect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:52
|
||||
msgid "Mumble Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/openfire/auth_hooks.py:27
|
||||
msgid "Jabber"
|
||||
msgstr ""
|
||||
|
||||
@@ -15,7 +15,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-09-13 19:57+1000\n"
|
||||
"POT-Creation-Date: 2024-10-21 12:59+1000\n"
|
||||
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
|
||||
"Last-Translator: trenus, 2023\n"
|
||||
"Language-Team: Spanish (https://app.transifex.com/alliance-auth/teams/107430/es/)\n"
|
||||
@@ -539,6 +539,7 @@ msgstr "Borrar fatlink"
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30
|
||||
msgid "User"
|
||||
msgstr "Usuario"
|
||||
|
||||
@@ -738,7 +739,6 @@ msgstr "Manejo de Grupo"
|
||||
|
||||
#: allianceauth/groupmanagement/auth_hooks.py:51
|
||||
#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34
|
||||
#: allianceauth/templates/allianceauth/side-menu.html:15
|
||||
msgid "Groups"
|
||||
msgstr "Grupos"
|
||||
|
||||
@@ -1919,6 +1919,48 @@ msgstr "Establecer contraseña de IPSuite4."
|
||||
msgid "Deactivated IPSuite4 account."
|
||||
msgstr "Cuenta IPSuite4 desactivada."
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6
|
||||
msgid "Mumble"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10
|
||||
msgid "Mumble History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22
|
||||
msgid "Server Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31
|
||||
msgid "Displayed Name"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32
|
||||
msgid "Release"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34
|
||||
msgid "Last Connect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35
|
||||
msgid "Last Disconnect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59
|
||||
msgid "Server Connection Breakdown"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68
|
||||
msgid "Number"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28
|
||||
#: allianceauth/services/templates/services/service_password.html:26
|
||||
msgid "Set Password"
|
||||
@@ -1928,6 +1970,10 @@ msgstr "Cambiar Contraseña"
|
||||
msgid "Connect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:52
|
||||
msgid "Mumble Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/openfire/auth_hooks.py:27
|
||||
msgid "Jabber"
|
||||
msgstr "Jabber"
|
||||
|
||||
@@ -20,7 +20,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-09-13 19:57+1000\n"
|
||||
"POT-Creation-Date: 2024-10-21 12:59+1000\n"
|
||||
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
|
||||
"Last-Translator: T'rahk Rokym, 2024\n"
|
||||
"Language-Team: French (France) (https://app.transifex.com/alliance-auth/teams/107430/fr_FR/)\n"
|
||||
@@ -556,6 +556,7 @@ msgstr "supprimer lien FAT"
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30
|
||||
msgid "User"
|
||||
msgstr "Utilisateur"
|
||||
|
||||
@@ -755,7 +756,6 @@ msgstr "Gestion de groupe"
|
||||
|
||||
#: allianceauth/groupmanagement/auth_hooks.py:51
|
||||
#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34
|
||||
#: allianceauth/templates/allianceauth/side-menu.html:15
|
||||
msgid "Groups"
|
||||
msgstr "Groupes"
|
||||
|
||||
@@ -1940,6 +1940,48 @@ msgstr "Définir le mot de passe IPSuite4."
|
||||
msgid "Deactivated IPSuite4 account."
|
||||
msgstr "Compte IPSuite4 désactivé."
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6
|
||||
msgid "Mumble"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10
|
||||
msgid "Mumble History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22
|
||||
msgid "Server Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31
|
||||
msgid "Displayed Name"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32
|
||||
msgid "Release"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34
|
||||
msgid "Last Connect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35
|
||||
msgid "Last Disconnect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59
|
||||
msgid "Server Connection Breakdown"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68
|
||||
msgid "Number"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28
|
||||
#: allianceauth/services/templates/services/service_password.html:26
|
||||
msgid "Set Password"
|
||||
@@ -1949,6 +1991,10 @@ msgstr "Définir le mot de passe"
|
||||
msgid "Connect"
|
||||
msgstr "Connecter"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:52
|
||||
msgid "Mumble Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/openfire/auth_hooks.py:27
|
||||
msgid "Jabber"
|
||||
msgstr "Jabber"
|
||||
|
||||
@@ -13,7 +13,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-09-13 19:57+1000\n"
|
||||
"POT-Creation-Date: 2024-10-21 12:59+1000\n"
|
||||
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
|
||||
"Last-Translator: Tuz, 2024\n"
|
||||
"Language-Team: Italian (Italy) (https://app.transifex.com/alliance-auth/teams/107430/it_IT/)\n"
|
||||
@@ -549,6 +549,7 @@ msgstr "Elimina fat"
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30
|
||||
msgid "User"
|
||||
msgstr "Utente"
|
||||
|
||||
@@ -748,7 +749,6 @@ msgstr "Gestione gruppi"
|
||||
|
||||
#: allianceauth/groupmanagement/auth_hooks.py:51
|
||||
#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34
|
||||
#: allianceauth/templates/allianceauth/side-menu.html:15
|
||||
msgid "Groups"
|
||||
msgstr "Gruppi"
|
||||
|
||||
@@ -1936,6 +1936,48 @@ msgstr "Imposta password IPSuite4."
|
||||
msgid "Deactivated IPSuite4 account."
|
||||
msgstr "Disattiva account IPSuite4."
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6
|
||||
msgid "Mumble"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10
|
||||
msgid "Mumble History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22
|
||||
msgid "Server Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31
|
||||
msgid "Displayed Name"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32
|
||||
msgid "Release"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34
|
||||
msgid "Last Connect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35
|
||||
msgid "Last Disconnect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59
|
||||
msgid "Server Connection Breakdown"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68
|
||||
msgid "Number"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28
|
||||
#: allianceauth/services/templates/services/service_password.html:26
|
||||
msgid "Set Password"
|
||||
@@ -1945,6 +1987,10 @@ msgstr "Imposta password"
|
||||
msgid "Connect"
|
||||
msgstr "Connect"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:52
|
||||
msgid "Mumble Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/openfire/auth_hooks.py:27
|
||||
msgid "Jabber"
|
||||
msgstr "Jabber"
|
||||
|
||||
@@ -13,7 +13,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-09-13 19:57+1000\n"
|
||||
"POT-Creation-Date: 2024-10-21 12:59+1000\n"
|
||||
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
|
||||
"Last-Translator: kotaneko, 2024\n"
|
||||
"Language-Team: Japanese (https://app.transifex.com/alliance-auth/teams/107430/ja/)\n"
|
||||
@@ -531,6 +531,7 @@ msgstr "Fat-Linkを削除"
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30
|
||||
msgid "User"
|
||||
msgstr "ユーザ"
|
||||
|
||||
@@ -724,7 +725,6 @@ msgstr "グループ管理"
|
||||
|
||||
#: allianceauth/groupmanagement/auth_hooks.py:51
|
||||
#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34
|
||||
#: allianceauth/templates/allianceauth/side-menu.html:15
|
||||
msgid "Groups"
|
||||
msgstr "グループ"
|
||||
|
||||
@@ -1878,6 +1878,48 @@ msgstr "IPSuite4 のパスワードを設定します。"
|
||||
msgid "Deactivated IPSuite4 account."
|
||||
msgstr "IPSuite4 アカウントを非アクティブ化しました。"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6
|
||||
msgid "Mumble"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10
|
||||
msgid "Mumble History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22
|
||||
msgid "Server Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31
|
||||
msgid "Displayed Name"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32
|
||||
msgid "Release"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34
|
||||
msgid "Last Connect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35
|
||||
msgid "Last Disconnect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59
|
||||
msgid "Server Connection Breakdown"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68
|
||||
msgid "Number"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28
|
||||
#: allianceauth/services/templates/services/service_password.html:26
|
||||
msgid "Set Password"
|
||||
@@ -1887,6 +1929,10 @@ msgstr "パスワード設定"
|
||||
msgid "Connect"
|
||||
msgstr "接続"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:52
|
||||
msgid "Mumble Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/openfire/auth_hooks.py:27
|
||||
msgid "Jabber"
|
||||
msgstr "Jabber"
|
||||
|
||||
@@ -18,7 +18,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-09-13 19:57+1000\n"
|
||||
"POT-Creation-Date: 2024-10-21 12:59+1000\n"
|
||||
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
|
||||
"Last-Translator: Woojin Kang, 2024\n"
|
||||
"Language-Team: Korean (Korea) (https://app.transifex.com/alliance-auth/teams/107430/ko_KR/)\n"
|
||||
@@ -537,6 +537,7 @@ msgstr "함대 활동 추적(FAT) 링크 삭제"
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30
|
||||
msgid "User"
|
||||
msgstr "사용자"
|
||||
|
||||
@@ -732,7 +733,6 @@ msgstr "그룹 관리"
|
||||
|
||||
#: allianceauth/groupmanagement/auth_hooks.py:51
|
||||
#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34
|
||||
#: allianceauth/templates/allianceauth/side-menu.html:15
|
||||
msgid "Groups"
|
||||
msgstr "그룹"
|
||||
|
||||
@@ -1886,6 +1886,48 @@ msgstr "IPSuite4 비밀번호 설정"
|
||||
msgid "Deactivated IPSuite4 account."
|
||||
msgstr "IPSuite4 계정 비활성화 완료"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6
|
||||
msgid "Mumble"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10
|
||||
msgid "Mumble History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22
|
||||
msgid "Server Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31
|
||||
msgid "Displayed Name"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32
|
||||
msgid "Release"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34
|
||||
msgid "Last Connect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35
|
||||
msgid "Last Disconnect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59
|
||||
msgid "Server Connection Breakdown"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68
|
||||
msgid "Number"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28
|
||||
#: allianceauth/services/templates/services/service_password.html:26
|
||||
msgid "Set Password"
|
||||
@@ -1895,6 +1937,10 @@ msgstr "비밀번호 설정"
|
||||
msgid "Connect"
|
||||
msgstr "연결"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:52
|
||||
msgid "Mumble Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/openfire/auth_hooks.py:27
|
||||
msgid "Jabber"
|
||||
msgstr "재버"
|
||||
|
||||
@@ -11,7 +11,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-09-13 19:57+1000\n"
|
||||
"POT-Creation-Date: 2024-10-21 12:59+1000\n"
|
||||
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
|
||||
"Last-Translator: MisBimbrownik, 2024\n"
|
||||
"Language-Team: Polish (Poland) (https://app.transifex.com/alliance-auth/teams/107430/pl_PL/)\n"
|
||||
@@ -549,6 +549,7 @@ msgstr "Usuń FAT"
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30
|
||||
msgid "User"
|
||||
msgstr "Użytkownik"
|
||||
|
||||
@@ -750,7 +751,6 @@ msgstr "Zarządzanie Grupami"
|
||||
|
||||
#: allianceauth/groupmanagement/auth_hooks.py:51
|
||||
#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34
|
||||
#: allianceauth/templates/allianceauth/side-menu.html:15
|
||||
msgid "Groups"
|
||||
msgstr "Grupy"
|
||||
|
||||
@@ -1929,6 +1929,48 @@ msgstr "Ustaw hasło IPSuite4."
|
||||
msgid "Deactivated IPSuite4 account."
|
||||
msgstr "Wyłączono konto IPSuite4."
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6
|
||||
msgid "Mumble"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10
|
||||
msgid "Mumble History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22
|
||||
msgid "Server Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31
|
||||
msgid "Displayed Name"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32
|
||||
msgid "Release"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34
|
||||
msgid "Last Connect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35
|
||||
msgid "Last Disconnect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59
|
||||
msgid "Server Connection Breakdown"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68
|
||||
msgid "Number"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28
|
||||
#: allianceauth/services/templates/services/service_password.html:26
|
||||
msgid "Set Password"
|
||||
@@ -1938,6 +1980,10 @@ msgstr "Ustaw hasło"
|
||||
msgid "Connect"
|
||||
msgstr "Połącz"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:52
|
||||
msgid "Mumble Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/openfire/auth_hooks.py:27
|
||||
msgid "Jabber"
|
||||
msgstr "Jabber"
|
||||
|
||||
@@ -16,7 +16,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-09-13 19:57+1000\n"
|
||||
"POT-Creation-Date: 2024-10-21 12:59+1000\n"
|
||||
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
|
||||
"Last-Translator: Joel Falknau <ozirascal@gmail.com>, 2024\n"
|
||||
"Language-Team: Russian (https://app.transifex.com/alliance-auth/teams/107430/ru/)\n"
|
||||
@@ -533,6 +533,7 @@ msgstr "Удалить ФлАк"
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30
|
||||
msgid "User"
|
||||
msgstr "Пользователь"
|
||||
|
||||
@@ -734,7 +735,6 @@ msgstr "Управление Группой"
|
||||
|
||||
#: allianceauth/groupmanagement/auth_hooks.py:51
|
||||
#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34
|
||||
#: allianceauth/templates/allianceauth/side-menu.html:15
|
||||
msgid "Groups"
|
||||
msgstr "Группы"
|
||||
|
||||
@@ -1920,6 +1920,48 @@ msgstr "Установить пароль IPSuite4."
|
||||
msgid "Deactivated IPSuite4 account."
|
||||
msgstr "Деактивированный аккаунт IPSuite4."
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6
|
||||
msgid "Mumble"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10
|
||||
msgid "Mumble History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22
|
||||
msgid "Server Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31
|
||||
msgid "Displayed Name"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32
|
||||
msgid "Release"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34
|
||||
msgid "Last Connect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35
|
||||
msgid "Last Disconnect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59
|
||||
msgid "Server Connection Breakdown"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68
|
||||
msgid "Number"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28
|
||||
#: allianceauth/services/templates/services/service_password.html:26
|
||||
msgid "Set Password"
|
||||
@@ -1929,6 +1971,10 @@ msgstr "Установить Пароль"
|
||||
msgid "Connect"
|
||||
msgstr "Подключить"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:52
|
||||
msgid "Mumble Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/openfire/auth_hooks.py:27
|
||||
msgid "Jabber"
|
||||
msgstr "Jabber"
|
||||
|
||||
@@ -13,7 +13,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-09-13 19:57+1000\n"
|
||||
"POT-Creation-Date: 2024-10-21 12:59+1000\n"
|
||||
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
|
||||
"Last-Translator: Andrii Yukhymchak, 2024\n"
|
||||
"Language-Team: Ukrainian (https://app.transifex.com/alliance-auth/teams/107430/uk/)\n"
|
||||
@@ -549,6 +549,7 @@ msgstr "Видалити Fat"
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30
|
||||
msgid "User"
|
||||
msgstr "Користувач"
|
||||
|
||||
@@ -750,7 +751,6 @@ msgstr "Керування групами"
|
||||
|
||||
#: allianceauth/groupmanagement/auth_hooks.py:51
|
||||
#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34
|
||||
#: allianceauth/templates/allianceauth/side-menu.html:15
|
||||
msgid "Groups"
|
||||
msgstr "Групи"
|
||||
|
||||
@@ -1934,6 +1934,48 @@ msgstr "Встановити пароль IPSuite4."
|
||||
msgid "Deactivated IPSuite4 account."
|
||||
msgstr "Деактивовано обліковий запис IPSuite4."
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6
|
||||
msgid "Mumble"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10
|
||||
msgid "Mumble History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22
|
||||
msgid "Server Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31
|
||||
msgid "Displayed Name"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32
|
||||
msgid "Release"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34
|
||||
msgid "Last Connect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35
|
||||
msgid "Last Disconnect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59
|
||||
msgid "Server Connection Breakdown"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68
|
||||
msgid "Number"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28
|
||||
#: allianceauth/services/templates/services/service_password.html:26
|
||||
msgid "Set Password"
|
||||
@@ -1943,6 +1985,10 @@ msgstr "Встановити пароль"
|
||||
msgid "Connect"
|
||||
msgstr "Підєднатись"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:52
|
||||
msgid "Mumble Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/openfire/auth_hooks.py:27
|
||||
msgid "Jabber"
|
||||
msgstr "Jabber"
|
||||
|
||||
@@ -14,7 +14,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-09-13 19:57+1000\n"
|
||||
"POT-Creation-Date: 2024-10-21 12:59+1000\n"
|
||||
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
|
||||
"Last-Translator: Joel Falknau <ozirascal@gmail.com>, 2023\n"
|
||||
"Language-Team: Chinese Simplified (https://app.transifex.com/alliance-auth/teams/107430/zh-Hans/)\n"
|
||||
@@ -526,6 +526,7 @@ msgstr "删除舰队活动历史"
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:35
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:35
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:30
|
||||
msgid "User"
|
||||
msgstr "用户"
|
||||
|
||||
@@ -719,7 +720,6 @@ msgstr "用户组管理"
|
||||
|
||||
#: allianceauth/groupmanagement/auth_hooks.py:51
|
||||
#: allianceauth/permissions_tool/templates/permissions_tool/overview.html:34
|
||||
#: allianceauth/templates/allianceauth/side-menu.html:15
|
||||
msgid "Groups"
|
||||
msgstr "群组"
|
||||
|
||||
@@ -1863,6 +1863,48 @@ msgstr "修改IPSuite4密码"
|
||||
msgid "Deactivated IPSuite4 account."
|
||||
msgstr "停用IPSuite4账户"
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:6
|
||||
msgid "Mumble"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:10
|
||||
msgid "Mumble History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:22
|
||||
msgid "Server Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:31
|
||||
msgid "Displayed Name"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32
|
||||
msgid "Release"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:67
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34
|
||||
msgid "Last Connect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35
|
||||
msgid "Last Disconnect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:47
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:59
|
||||
msgid "Server Connection Breakdown"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68
|
||||
msgid "Number"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28
|
||||
#: allianceauth/services/templates/services/service_password.html:26
|
||||
msgid "Set Password"
|
||||
@@ -1872,6 +1914,10 @@ msgstr "设置密码"
|
||||
msgid "Connect"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:52
|
||||
msgid "Mumble Connection History"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/openfire/auth_hooks.py:27
|
||||
msgid "Jabber"
|
||||
msgstr "Jabber"
|
||||
|
||||
@@ -1 +1,21 @@
|
||||
"""
|
||||
Example
|
||||
=======
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from allianceauth.notifications.models import Notification
|
||||
|
||||
|
||||
def notify_user_view(request):
|
||||
'''Simple view sending a notification to the user'''
|
||||
|
||||
Notification.objects.notify_user(
|
||||
user=request.user,
|
||||
title="Some title",
|
||||
message="Some message",
|
||||
level=Notification.Level.INFO,
|
||||
)
|
||||
|
||||
"""
|
||||
from .core import notify # noqa: F401
|
||||
|
||||
@@ -15,7 +15,7 @@ class OpForm(forms.Form):
|
||||
operation_name = forms.CharField(max_length=254, required=True, label=_("Operation Name"))
|
||||
type = forms.CharField(required=False, label=_("Operation Type"))
|
||||
fc = forms.CharField(max_length=254, required=True, label=_("Fleet Commander"))
|
||||
duration = forms.CharField(max_length=254, required=True, label=_("Duration"))
|
||||
duration = forms.CharField(max_length=25, required=True, label=_("Duration"))
|
||||
description = forms.CharField(
|
||||
widget=forms.Textarea(attrs={"rows": 10, "cols": 20, "input_type": "textarea"}),
|
||||
required=False,
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
# Generated by Django 4.2.16 on 2024-10-07 13:39
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("mumble", "0012_mumble_client_info"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name="mumbleuser",
|
||||
options={
|
||||
"permissions": (
|
||||
("access_mumble", "Can access the Mumble service"),
|
||||
(
|
||||
"view_connection_history",
|
||||
"Can access the connection history of the Mumble service",
|
||||
),
|
||||
)
|
||||
},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="mumbleuser",
|
||||
name="release",
|
||||
field=models.TextField(
|
||||
blank=True,
|
||||
editable=False,
|
||||
help_text="Client release. For official releases, this equals the version. For snapshots and git compiles, this will be something else.",
|
||||
max_length=254,
|
||||
null=True,
|
||||
verbose_name="Mumble Release",
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -90,7 +90,7 @@ class MumbleUser(AbstractServiceModel):
|
||||
blank=True,
|
||||
null=True,
|
||||
editable=False,
|
||||
help_text="The Mumble Release the user last authenticated with"
|
||||
help_text="Client release. For official releases, this equals the version. For snapshots and git compiles, this will be something else."
|
||||
)
|
||||
version = models.IntegerField(
|
||||
verbose_name="Mumble Version",
|
||||
@@ -159,4 +159,5 @@ class MumbleUser(AbstractServiceModel):
|
||||
class Meta:
|
||||
permissions = (
|
||||
("access_mumble", "Can access the Mumble service"),
|
||||
("view_connection_history", "Can access the connection history of the Mumble service"),
|
||||
)
|
||||
|
||||
@@ -0,0 +1,209 @@
|
||||
{% extends "allianceauth/base-bs5.html" %}
|
||||
|
||||
{% load i18n %}
|
||||
|
||||
{% block page_title %}
|
||||
{% translate "Mumble" %}
|
||||
{% endblock page_title %}
|
||||
|
||||
{% block header_nav_brand %}
|
||||
<a class="navbar-brand">{% trans "Mumble History" %} - {{ mumble_url }}</a>
|
||||
{% endblock header_nav_brand %}
|
||||
|
||||
{% block header_nav_collapse_left %}
|
||||
{% endblock header_nav_collapse_left %}
|
||||
|
||||
{% block header_nav_collapse_right %}
|
||||
{% endblock header_nav_collapse_right %}
|
||||
|
||||
{% block content %}
|
||||
<div class="card col-lg-12 mb-3">
|
||||
<div class="card-header">
|
||||
<span class="card-title">{% translate "Server Connection History" %}</span>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table w-100" id="table-mumble-connection-history">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-start">{% translate "User" %}</th>
|
||||
<th class="text-start">{% translate "Displayed Name" %}</th>
|
||||
<th class="text-start">{% translate "Release" %}</th>
|
||||
<th class="text-start">{% translate "Version" %}</th>
|
||||
<th class="text-end">{% translate "Last Connect" %}</th>
|
||||
<th class="text-end">{% translate "Last Disconnect" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<span class="card-title">{% translate "Server Connection Breakdown" %}</span>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<canvas id="pieChart"></canvas> <!-- Canvas element for the pie chart -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<span class="card-title">{% translate "Server Connection Breakdown" %}</span>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table w-100" id="table-mumble-connection-stats">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-start">{% translate "Version" %}</th>
|
||||
<th class="text-end">{% translate "Number" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock content %}
|
||||
|
||||
{% block extra_javascript %}
|
||||
{% include "bundles/datatables-js-bs5.html" %}
|
||||
{% include "bundles/filterdropdown-js.html" %}
|
||||
{% include "bundles/chart-js.html" %}
|
||||
{% include "bundles/moment-js.html" with locale=True %}
|
||||
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
const MUMBLESTATS_DATETIME_FORMAT = 'YYYY-MM-DD, HH:mm';
|
||||
|
||||
'use strict';
|
||||
|
||||
$("#table-mumble-connection-history").DataTable({
|
||||
ajax: {
|
||||
url: '{% url "mumble:connection_history_data" %}',
|
||||
dataSrc: 'connection_history_data',
|
||||
},
|
||||
columns: [
|
||||
{ data: 'user' },
|
||||
{ data: 'display_name' },
|
||||
{ data: 'release' },
|
||||
{ data: 'version' },
|
||||
{
|
||||
data: 'last_connect',
|
||||
render: (data) => {
|
||||
return moment(data).utc().format(MUMBLESTATS_DATETIME_FORMAT);
|
||||
},
|
||||
className: 'text-end',
|
||||
},
|
||||
{
|
||||
data: 'last_disconnect',
|
||||
render: (data) => {
|
||||
return moment(data).utc().format(MUMBLESTATS_DATETIME_FORMAT);
|
||||
},
|
||||
className: 'text-end',
|
||||
},
|
||||
],
|
||||
order: [[4, 'desc']],
|
||||
processing: true,
|
||||
stateSave: true,
|
||||
stateDuration: 0,
|
||||
filterDropDown: {
|
||||
columns: [
|
||||
{
|
||||
idx: 2,
|
||||
},
|
||||
{
|
||||
idx: 3,
|
||||
},
|
||||
],
|
||||
bootstrap: true,
|
||||
bootstrap_version: 5,
|
||||
},
|
||||
});
|
||||
|
||||
$("#table-mumble-connection-stats").DataTable({
|
||||
ajax: {
|
||||
url: '{% url "mumble:release_counts_data" %}',
|
||||
dataSrc: 'release_counts_data',
|
||||
},
|
||||
columns: [
|
||||
{ data: 'release' },
|
||||
{ data: 'user_count', className: 'text-end' },
|
||||
],
|
||||
order: [[1, 'desc']],
|
||||
processing: true,
|
||||
stateSave: true,
|
||||
stateDuration: 0,
|
||||
});
|
||||
|
||||
// Initialize empty Pie chart
|
||||
const elementBody = document.querySelector('body');
|
||||
const elementBodyCss = getComputedStyle(elementBody);
|
||||
const ctx = document.getElementById('pieChart').getContext('2d');
|
||||
const pieChart = new Chart(ctx, {
|
||||
type: 'pie',
|
||||
data: {
|
||||
labels: [], // Initially empty
|
||||
datasets: [
|
||||
{
|
||||
label: 'Server Connection Breakdown',
|
||||
data: [], // Initially empty
|
||||
backgroundColor: [
|
||||
'rgba(255, 99, 132, 0.2)',
|
||||
'rgba(54, 162, 235, 0.2)',
|
||||
'rgba(255, 206, 86, 0.2)'
|
||||
],
|
||||
borderColor: [
|
||||
'rgba(255, 99, 132, 1)',
|
||||
'rgba(54, 162, 235, 1)',
|
||||
'rgba(255, 206, 86, 1)'
|
||||
],
|
||||
borderWidth: 1
|
||||
}
|
||||
]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
plugins: {
|
||||
legend: {
|
||||
position: 'top'
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Chart.defaults.color = elementBodyCss.color;
|
||||
|
||||
// AJAX call to dynamically update the chart
|
||||
$.ajax({
|
||||
url: '{% url "mumble:release_pie_chart_data" %}', // Your Django view URL that returns chart data
|
||||
method: "GET",
|
||||
success: (data) => {
|
||||
// Replace chart data with the data from the AJAX response
|
||||
pieChart.data.labels = data.labels; // Set the new labels
|
||||
pieChart.data.datasets[0].data = data.values; // Set the new values
|
||||
|
||||
// Update the chart to reflect the new data
|
||||
pieChart.update();
|
||||
},
|
||||
error: (xhr, status, error) => {
|
||||
console.error('Error fetching pie chart data:', status, error);
|
||||
},
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock extra_javascript %}
|
||||
|
||||
{% block extra_css %}
|
||||
{% include "bundles/datatables-css-bs5.html" %}
|
||||
{% endblock extra_css %}
|
||||
@@ -48,4 +48,9 @@
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if request.user.is_superuser %}
|
||||
<a class="btn btn-primary" type="button" id="btnMumbleConnectionHistory" href="{% url 'mumble:connection_history' %}" title="{% translate 'Mumble Connection History' %}">
|
||||
<i class="fa-solid fa-clock-rotate-left"></i> History
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
@@ -10,6 +10,10 @@ module_urls = [
|
||||
path('deactivate/', views.DeleteMumbleView.as_view(), name='deactivate'),
|
||||
path('reset_password/', views.ResetPasswordMumbleView.as_view(), name='reset_password'),
|
||||
path('set_password/', views.SetPasswordMumbleView.as_view(), name='set_password'),
|
||||
path('connection_history/', views.connection_history, name="connection_history"),
|
||||
path('ajax/connection_history_data', views.connection_history_data, name="connection_history_data"),
|
||||
path('ajax/release_counts_data', views.release_counts_data, name="release_counts_data"),
|
||||
path('ajax/release_pie_chart_data', views.release_pie_chart_data, name="release_pie_chart_data"),
|
||||
]
|
||||
|
||||
urlpatterns = [
|
||||
|
||||
@@ -3,6 +3,11 @@ import logging
|
||||
from allianceauth.services.forms import ServicePasswordModelForm
|
||||
from allianceauth.services.abstract import BaseCreatePasswordServiceAccountView, BaseDeactivateServiceAccountView, \
|
||||
BaseResetPasswordServiceAccountView, BaseSetPasswordServiceAccountView
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.decorators import login_required, permission_required
|
||||
from django.db.models import Count
|
||||
from django.http import HttpResponse, JsonResponse
|
||||
from django.shortcuts import render
|
||||
|
||||
from .models import MumbleUser
|
||||
|
||||
@@ -35,3 +40,51 @@ class ResetPasswordMumbleView(MumbleViewMixin, BaseResetPasswordServiceAccountVi
|
||||
|
||||
class SetPasswordMumbleView(MumbleViewMixin, BaseSetPasswordServiceAccountView):
|
||||
form_class = MumblePasswordForm
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('mumble.view_connection_history')
|
||||
def connection_history(request) -> HttpResponse:
|
||||
|
||||
context = {
|
||||
"mumble_url": settings.MUMBLE_URL,
|
||||
}
|
||||
|
||||
return render(request, 'services/mumble/mumble_connection_history.html', context)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required("mumble.view_connection_history")
|
||||
def connection_history_data(request) -> JsonResponse:
|
||||
connection_history_data = MumbleUser.objects.all(
|
||||
).values(
|
||||
'user',
|
||||
'display_name',
|
||||
'release',
|
||||
'version',
|
||||
'last_connect',
|
||||
'last_disconnect',
|
||||
)
|
||||
|
||||
return JsonResponse({"connection_history_data": list(connection_history_data)})
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required("mumble.view_connection_history")
|
||||
def release_counts_data(request) -> JsonResponse:
|
||||
release_counts_data = MumbleUser.objects.values('release').annotate(user_count=Count('user_id')).order_by('release')
|
||||
|
||||
return JsonResponse({
|
||||
"release_counts_data": list(release_counts_data),
|
||||
})
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required("mumble.view_connection_history")
|
||||
def release_pie_chart_data(request) -> JsonResponse:
|
||||
release_counts = MumbleUser.objects.values('release').annotate(user_count=Count('user_id')).order_by('release')
|
||||
|
||||
return JsonResponse({
|
||||
"labels": list(release_counts.values_list("release", flat=True)),
|
||||
"values": list(release_counts.values_list("user_count", flat=True)),
|
||||
})
|
||||
|
||||
@@ -10,11 +10,6 @@
|
||||
<i class="fa-solid fa-gauge-high fa-fw"></i> {% translate "Dashboard" %}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="{% navactive request 'groupmanagement:groups' %}" href="{% url 'groupmanagement:groups' %}">
|
||||
<i class="fa-solid fa-users fa-fw"></i> {% translate "Groups" %}
|
||||
</a>
|
||||
</li>
|
||||
|
||||
{% menu_items %}
|
||||
</ul>
|
||||
|
||||
3
allianceauth/templates/bundles/chart-js.html
Normal file
3
allianceauth/templates/bundles/chart-js.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<!-- Start Chart.js js from cdnjs -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.min.js" integrity="sha512-CQBWl4fJHWbryGE+Pc7UAxWMUMNMWzWxF4SQo9CgkJIN1kx6djDQZjh3Y8SZ1d+6I+1zze6Z7kHXO7q3UyZAWw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<!-- End Chart.js js from cdnjs -->
|
||||
@@ -45,7 +45,7 @@ class BootstrapDarkThemeHook(ThemeHook):
|
||||
self,
|
||||
"Bootstrap Dark",
|
||||
"Powerful, extensible, and feature-packed frontend toolkit.",
|
||||
html_tags={"data-theme": "bootstrap-dark"},
|
||||
html_tags={"data-theme": "bootstrap-dark", "data-bs-theme":"dark"},
|
||||
css=CSS_STATICS,
|
||||
js=JS_STATICS,
|
||||
header_padding="3.5em"
|
||||
|
||||
@@ -8,14 +8,16 @@ class ThemeHook:
|
||||
"""
|
||||
|
||||
def __init__(self,
|
||||
name: str,
|
||||
description: str,
|
||||
css: List[dict],
|
||||
js: List[dict],
|
||||
css_template: Optional[str] = None,
|
||||
js_template: Optional[str] = None,
|
||||
html_tags: Optional[Union[dict, str]] = None,
|
||||
header_padding: Optional[str] = "4em"):
|
||||
name: str,
|
||||
description: str,
|
||||
css: List[dict],
|
||||
js: List[dict],
|
||||
css_template: Optional[str] = None,
|
||||
js_template: Optional[str] = None,
|
||||
js_type: Optional[str] = None,
|
||||
html_tags: Optional[Union[dict, str]] = None,
|
||||
header_padding: Optional[str] = "4em"
|
||||
):
|
||||
"""
|
||||
:param name: Theme python name
|
||||
:type name: str
|
||||
@@ -29,11 +31,14 @@ class ThemeHook:
|
||||
:type css_template: Optional[str], optional
|
||||
:param js_template: _description_, defaults to None
|
||||
:type js_template: Optional[str], optional
|
||||
:param js_type: The type of the JS (e.g.: 'module'), defaults to None
|
||||
:type js_type: Optional[str], optional
|
||||
:param html_tags: Attributes added to the `<html>` tag, defaults to None
|
||||
:type html_tags: Optional[dict|str], optional
|
||||
:param header_padding: Top padding, defaults to "4em"
|
||||
:type header_padding: Optional[str], optional
|
||||
"""
|
||||
|
||||
self.name = name
|
||||
self.description = description
|
||||
|
||||
@@ -45,11 +50,15 @@ class ThemeHook:
|
||||
self.css_template = css_template
|
||||
self.js_template = js_template
|
||||
|
||||
# Define the JS type (e.g.: 'module')
|
||||
self.js_type = js_type
|
||||
|
||||
self.html_tags = (
|
||||
" ".join([f"{key}={value}" for key, value in html_tags.items()])
|
||||
if isinstance(html_tags, dict)
|
||||
else html_tags
|
||||
)
|
||||
self.header_padding = header_padding
|
||||
|
||||
def get_name(self):
|
||||
return f"{self.__class__.__module__}.{self.__class__.__name__}"
|
||||
|
||||
@@ -4,7 +4,13 @@
|
||||
{% include theme.js_template %}
|
||||
{% else %}
|
||||
{% for x in theme.js %}
|
||||
<script src="{{ x.url }}" integrity="{{ x.integrity }}" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<script
|
||||
{% if x.js_type %}type="{{ x.js_type }}"{% endif %}
|
||||
src="{{ x.url }}"
|
||||
integrity="{{ x.integrity }}"
|
||||
crossorigin="anonymous"
|
||||
referrerpolicy="no-referrer"
|
||||
></script>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
<!-- allianceauth.theme.{{ theme.name }} JS Ends-->
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
PROTOCOL=https://
|
||||
AUTH_SUBDOMAIN=%AUTH_SUBDOMAIN%
|
||||
DOMAIN=%DOMAIN%
|
||||
AA_DOCKER_TAG=registry.gitlab.com/allianceauth/allianceauth/auth:v4.3.1
|
||||
AA_DOCKER_TAG=registry.gitlab.com/allianceauth/allianceauth/auth:v4.5.0
|
||||
|
||||
# Nginx Proxy Manager
|
||||
PROXY_HTTP_PORT=80
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
FROM python:3.11-slim
|
||||
ARG AUTH_VERSION=v4.3.1
|
||||
ARG AUTH_VERSION=v4.5.0
|
||||
ARG AUTH_PACKAGE=allianceauth==${AUTH_VERSION}
|
||||
ENV AUTH_USER=allianceauth
|
||||
ENV AUTH_GROUP=allianceauth
|
||||
|
||||
6
docker/conf/aa_mariadb.cnf
Normal file
6
docker/conf/aa_mariadb.cnf
Normal file
@@ -0,0 +1,6 @@
|
||||
[mariadb]
|
||||
# Provided as an Example
|
||||
# AA Doesnt use Aria or MyISAM, So these are worth Considering
|
||||
|
||||
# aria_pagecache_buffer_size = 16M
|
||||
# key_buffer_size = 16M
|
||||
0
docker/conf/redis_healthcheck.sh
Normal file → Executable file
0
docker/conf/redis_healthcheck.sh
Normal file → Executable file
@@ -49,6 +49,7 @@ services:
|
||||
volumes:
|
||||
- ./mysql-data:/var/lib/mysql
|
||||
- ./setup.sql:/docker-entrypoint-initdb.d/setup.sql
|
||||
- ./conf/aa_mariadb.cnf:/etc/mysql/conf.d/aa_mariadb.cnf
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=${AA_DB_ROOT_PASSWORD?err}
|
||||
- MARIADB_MYSQL_LOCALHOST_USER=1
|
||||
@@ -83,7 +84,7 @@ services:
|
||||
- "redis-data:/data"
|
||||
- ./conf/redis_healthcheck.sh:/usr/local/bin/redis_healthcheck.sh
|
||||
healthcheck:
|
||||
test: ["CMD", "bash", "/usr/local/bin/redis_healthcheck.sh"]
|
||||
test: ["CMD", "/usr/local/bin/redis_healthcheck.sh"]
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/bin/bash
|
||||
git clone https://gitlab.com/allianceauth/allianceauth.git aa-git
|
||||
cp -R aa-git/docker ./aa-docker
|
||||
chmod +x aa-docker/conf/memory_check.sh
|
||||
chmod +x aa-docker/conf/redis_healthcheck.sh
|
||||
rm -rf aa-git
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
CREATE USER 'aauth'@'%' IDENTIFIED BY 'authpass';
|
||||
CREATE USER 'grafana'@'%' IDENTIFIED BY 'grafanapass';
|
||||
CREATE DATABASE alliance_auth CHARACTER SET utf8mb4;
|
||||
CREATE DATABASE alliance_auth CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
|
||||
GRANT ALL PRIVILEGES ON alliance_auth.* TO 'aauth'@'%';
|
||||
GRANT
|
||||
SELECT,
|
||||
|
||||
@@ -40,10 +40,10 @@ Please use the following approach to ensure your tasks are working properly with
|
||||
Here is an example implementation of a task:
|
||||
|
||||
```python
|
||||
import logging
|
||||
from allianceauth.services.hooks import get_extension_logger
|
||||
from celery import shared_task
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
logger = get_extension_logger(__name__)
|
||||
|
||||
|
||||
@shared_task
|
||||
@@ -80,10 +80,10 @@ However, many long-running tasks consist of several smaller processes that need
|
||||
Example implementation for a celery chain:
|
||||
|
||||
```python
|
||||
import logging
|
||||
from allianceauth.services.hooks import get_extension_logger
|
||||
from celery import shared_task, chain
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
logger = get_extension_logger(__name__)
|
||||
|
||||
|
||||
@shared_task
|
||||
@@ -96,7 +96,7 @@ def long_runner():
|
||||
my_tasks = list()
|
||||
for _ in range(10):
|
||||
task_signature = example.si()
|
||||
my_task.append(task_signature)
|
||||
my_tasks.append(task_signature)
|
||||
|
||||
chain(my_tasks).delay()
|
||||
```
|
||||
@@ -168,6 +168,49 @@ example.apply_async(priority=3)
|
||||
For defining a priority to tasks, you cannot use the convenient shortcut ``delay()``, but instead need to start a task with ``apply_async()``, which also requires you to pass parameters to your task function differently. Please check out the `official docs <https://docs.celeryproject.org/en/stable/reference/celery.app.task.html#celery.app.task.Task.apply_async>`_ for details.
|
||||
:::
|
||||
|
||||
## Rate-Limiting and Smoothing of Task Execution
|
||||
|
||||
Large numbers of installs running the same crontab (ie. `0 * * * *`) can all slam an external service at the same time.
|
||||
|
||||
Consider Artificially smoothing out your tasks with a few methods
|
||||
|
||||
### Offset Crontabs
|
||||
|
||||
Avoid running your tasks on the hour or other nice neat human numbers, consider 23 minutes on the hour instead of at zero (`28 * * * *`)
|
||||
|
||||
### Subset Tasks
|
||||
|
||||
Slice your tasks needed up into more manageable chunks and run them more often. 1/10th of your tasks run 10x more often will return the same end result with less peak loads on external services and your task queue.
|
||||
|
||||
### Celery ETA/Countdown
|
||||
|
||||
Scatter your tasks across a larger window using <https://docs.celeryq.dev/en/latest/userguide/calling.html#eta-and-countdown>
|
||||
|
||||
This example will queue up tasks across the next 10 minutes, trickling them into your workers (and the external service)
|
||||
|
||||
```python
|
||||
for corp in EveCorporationInfo.objects.all().values('corporation_id'):
|
||||
update_corp.apply_async(args=[corp['corporation_id']], priority=TASK_PRIORITY)
|
||||
update_corp.apply_async(
|
||||
args=[corp['corporation_id']],
|
||||
priority=TASK_PRIORITY,
|
||||
countdown=randint(1, 600))
|
||||
```
|
||||
|
||||
### Celery Rate Limits
|
||||
|
||||
Celery Rate Limits come with a small catch, its _per worker_, you may have to be either very conservative or have these configurable by the end user if they varied their worker count.
|
||||
|
||||
<https://docs.celeryq.dev/en/latest/userguide/tasks.html#Task.rate_limit>
|
||||
|
||||
This example of 10 Tasks per Minute will result in ~100 tasks per minute at 10 Workers
|
||||
|
||||
```python
|
||||
@shared_task(rate_limit="10/m")
|
||||
def update_charactercorporationhistory(character_id: int) -> None:
|
||||
"""Update CharacterCorporationHistory models from ESI"""
|
||||
```
|
||||
|
||||
## What special features should I be aware of?
|
||||
|
||||
Every Alliance Auth installation will come with a couple of special celery related features "out-of-the-box" that you can make use of in your apps.
|
||||
@@ -192,6 +235,6 @@ You can use it like so:
|
||||
|
||||
Please see the [official documentation](https://pypi.org/project/celery_once/) of celery-once for details.
|
||||
|
||||
### task priorities
|
||||
### Task Priorities
|
||||
|
||||
Alliance Auth is using task priorities to enable priority-based scheduling of task execution. Please see [How can I use priorities for tasks?](#how-can-i-use-priorities-for-tasks) for details.
|
||||
|
||||
@@ -65,7 +65,7 @@ Using a custom docker image is the preferred approach, as it gives you the stabi
|
||||
* e.g.
|
||||
|
||||
```docker
|
||||
x-allianceauth-base: &allianceauth-base
|
||||
x-allianceauth-base: &allianceauth-base
|
||||
# image: ${AA_DOCKER_TAG?err}
|
||||
build:
|
||||
context: .
|
||||
|
||||
@@ -246,7 +246,7 @@ and create them as follows, replacing `PASSWORD` with an actual secure password:
|
||||
|
||||
```sql
|
||||
CREATE USER 'allianceserver'@'localhost' IDENTIFIED BY 'PASSWORD';
|
||||
CREATE DATABASE alliance_auth CHARACTER SET utf8mb4;
|
||||
CREATE DATABASE alliance_auth CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
|
||||
GRANT ALL PRIVILEGES ON alliance_auth . * TO 'allianceserver'@'localhost';
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user