Compare commits

...

7 Commits

Author SHA1 Message Date
Joel Falknau
bd17b95cac Version Bump 4.3.0 2024-09-09 14:05:58 +10:00
Joel Falknau
4ed1c5b7c4 bring test celery in line with project 2024-09-09 13:59:43 +10:00
Ariel Rin
271fd8e8c4 Merge branch 'docs-user-creation-fix' into 'master'
[Docs] Add shell option to adduser command for Ubuntu install docs

See merge request allianceauth/allianceauth!1622
2024-09-09 03:58:47 +00:00
colcrunch
9b4321281a [Docs] Add shell option to adduser command for Ubuntu install docs 2024-09-09 03:58:47 +00:00
Ariel Rin
052c35c8e5 Merge branch 'metenox' into 'master'
Timerboard Improvements

Closes #1384

See merge request allianceauth/allianceauth!1645
2024-09-09 03:57:21 +00:00
Ariel Rin
0fcb517b0b Timerboard Improvements 2024-09-09 03:57:21 +00:00
Ariel Rin
dcfddf0add Merge branch 'docs2' into 'master'
Documentation

See merge request allianceauth/allianceauth!1646
2024-09-09 03:43:30 +00:00
15 changed files with 382 additions and 380 deletions

View File

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

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-05-12 19:15+1000\n"
"POT-Creation-Date: 2024-09-09 13:05+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"
@@ -88,27 +88,31 @@ msgstr ""
msgid "Ukrainian"
msgstr ""
#: allianceauth/authentication/models.py:96
#: allianceauth/authentication/models.py:81
msgid "Polish"
msgstr ""
#: allianceauth/authentication/models.py:97
#: allianceauth/menu/templates/menu/menu-user.html:42
msgid "Language"
msgstr ""
#: allianceauth/authentication/models.py:101
#: allianceauth/authentication/models.py:102
#: allianceauth/templates/allianceauth/night-toggle.html:6
msgid "Night Mode"
msgstr ""
#: allianceauth/authentication/models.py:105
#: allianceauth/authentication/models.py:106
#: allianceauth/menu/templates/menu/menu-user.html:46
msgid "Theme"
msgstr ""
#: allianceauth/authentication/models.py:122
#: allianceauth/authentication/models.py:123
#, python-format
msgid "State changed to: %s"
msgstr ""
#: allianceauth/authentication/models.py:123
#: allianceauth/authentication/models.py:124
#, python-format
msgid "Your user's state is now: %(state)s"
msgstr ""
@@ -120,27 +124,27 @@ msgstr ""
msgid "Dashboard"
msgstr ""
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:7
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:5
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:33
#: allianceauth/hrapplications/templates/hrapplications/view.html:54
msgid "Characters"
msgstr ""
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:13
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:14
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:11
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:12
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:4
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:6
msgid "Add Character"
msgstr ""
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:16
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:17
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:14
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:15
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:10
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:12
msgid "Change Main"
msgstr ""
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:24
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:22
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:89
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:23
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:31
@@ -149,12 +153,12 @@ msgstr ""
msgid "Name"
msgstr ""
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:25
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:23
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:33
msgid "Corp"
msgstr ""
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:26
#: allianceauth/authentication/templates/authentication/dashboard_characters.html:24
#: allianceauth/corputils/templates/corputils/corpstats.html:125
#: allianceauth/hrapplications/templates/hrapplications/view.html:63
msgid "Alliance"
@@ -164,7 +168,7 @@ msgstr ""
msgid "Membership"
msgstr ""
#: allianceauth/authentication/templates/authentication/dashboard_groups.html:8
#: allianceauth/authentication/templates/authentication/dashboard_groups.html:10
msgid "State:"
msgstr ""
@@ -395,6 +399,19 @@ msgstr ""
msgid "Failed to gather corporation statistics with selected token."
msgstr ""
#: allianceauth/custom_css/apps.py:13 allianceauth/custom_css/models.py:36
#: allianceauth/custom_css/models.py:37 allianceauth/custom_css/models.py:47
msgid "Custom CSS"
msgstr ""
#: allianceauth/custom_css/models.py:25
msgid "Your custom CSS"
msgstr ""
#: allianceauth/custom_css/models.py:26
msgid "This CSS will be added to the site after the default CSS."
msgstr ""
#: allianceauth/fleetactivitytracking/auth_hooks.py:10
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:10
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkcreate.html:11
@@ -487,8 +504,8 @@ msgstr ""
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:37
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:42
#: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:59
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:16
#: allianceauth/optimer/form.py:13 allianceauth/timerboard/form.py:37
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:17
#: allianceauth/timerboard/templates/timerboard/timertable.html:9
msgid "System"
msgstr ""
@@ -807,7 +824,7 @@ msgstr ""
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:31
#: allianceauth/optimer/templates/optimer/dashboard.ops.html:15
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:15
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:16
msgid "Type"
msgstr ""
@@ -899,7 +916,7 @@ msgid "Hidden"
msgstr ""
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45
#: allianceauth/templates/allianceauth/admin-status/overview.html:19
#: allianceauth/templates/allianceauth/admin-status/overview.html:16
msgid "Open"
msgstr ""
@@ -1375,16 +1392,16 @@ msgstr ""
msgid "Super User"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:68
#: allianceauth/menu/templates/menu/menu-user.html:70
#: allianceauth/templates/allianceauth/top-menu-admin.html:9
msgid "Admin"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:80
#: allianceauth/menu/templates/menu/menu-user.html:82
msgid "Sign Out"
msgstr ""
#: allianceauth/menu/templates/menu/menu-user.html:84
#: allianceauth/menu/templates/menu/menu-user.html:86
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:17
#: allianceauth/templates/allianceauth/top-menu-rh-default.html:18
msgid "Sign In"
@@ -1534,7 +1551,7 @@ msgid "Form Up System"
msgstr ""
#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:17
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18
msgid "EVE Time"
msgstr ""
@@ -1729,17 +1746,17 @@ msgid ""
msgstr ""
#: allianceauth/services/modules/discord/templates/services/discord/discord_service_ctrl.html:26
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:20
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:22
msgid "Activate"
msgstr ""
#: allianceauth/services/modules/discord/templates/services/discord/discord_service_ctrl.html:32
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:32
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:34
msgid "Reset Password"
msgstr ""
#: allianceauth/services/modules/discord/templates/services/discord/discord_service_ctrl.html:38
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:38
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:40
msgid "Deactivate"
msgstr ""
@@ -1819,12 +1836,12 @@ msgstr ""
msgid "Deactivated IPSuite4 account."
msgstr ""
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:26
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28
#: allianceauth/services/templates/services/service_password.html:26
msgid "Set Password"
msgstr ""
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:44
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:46
msgid "Connect"
msgstr ""
@@ -2386,56 +2403,56 @@ msgstr ""
msgid "Your Server received an ESI error response code of "
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:11
#: allianceauth/templates/allianceauth/admin-status/overview.html:8
msgid "Alliance Auth Notifications"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:21
#: allianceauth/templates/allianceauth/admin-status/overview.html:18
msgid "Closed"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:27
#: allianceauth/templates/allianceauth/admin-status/overview.html:24
msgid "No notifications at this time"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:36
#: allianceauth/templates/allianceauth/admin-status/overview.html:33
msgid "Powered by GitLab"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:42
#: allianceauth/templates/allianceauth/admin-status/overview.html:39
msgid "Support Discord"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:59
#: allianceauth/templates/allianceauth/admin-status/overview.html:63
#: allianceauth/templates/allianceauth/admin-status/overview.html:53
#: allianceauth/templates/allianceauth/admin-status/overview.html:57
msgid "Software Version"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:66
#: allianceauth/templates/allianceauth/admin-status/overview.html:60
msgid "Current"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:73
#: allianceauth/templates/allianceauth/admin-status/overview.html:67
msgid "Latest Stable"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:78
#: allianceauth/templates/allianceauth/admin-status/overview.html:72
msgid "Update available"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:86
#: allianceauth/templates/allianceauth/admin-status/overview.html:80
msgid "Latest Pre-Release"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:91
#: allianceauth/templates/allianceauth/admin-status/overview.html:85
msgid "Pre-Release available"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:102
#: allianceauth/templates/allianceauth/admin-status/overview.html:95
msgid "Task Queue"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:107
#: allianceauth/templates/allianceauth/admin-status/overview.html:100
#, python-format
msgid ""
"\n"
@@ -2444,11 +2461,11 @@ msgid ""
" "
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:123
#: allianceauth/templates/allianceauth/admin-status/overview.html:116
msgid "running"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:124
#: allianceauth/templates/allianceauth/admin-status/overview.html:117
msgid "queued"
msgstr ""
@@ -2477,105 +2494,203 @@ msgstr ""
msgid "Select Theme"
msgstr ""
#: allianceauth/timerboard/form.py:53
#: allianceauth/timerboard/templates/timerboard/timertable.html:172
msgid "Other"
msgstr ""
#: allianceauth/timerboard/form.py:54
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:38
#: allianceauth/timerboard/templates/timerboard/timertable.html:44
msgid "Friendly"
msgstr ""
#: allianceauth/timerboard/form.py:55
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:33
#: allianceauth/timerboard/templates/timerboard/timertable.html:38
msgid "Hostile"
msgstr ""
#: allianceauth/timerboard/form.py:56
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:43
#: allianceauth/timerboard/templates/timerboard/timertable.html:50
msgid "Neutral"
msgstr ""
#: allianceauth/timerboard/form.py:58
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:13
#: allianceauth/timerboard/form.py:36
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14
#: allianceauth/timerboard/templates/timerboard/timertable.html:7
msgid "Details"
msgstr ""
#: allianceauth/timerboard/form.py:60
#: allianceauth/timerboard/form.py:38
msgid "Planet/Moon"
msgstr ""
#: allianceauth/timerboard/form.py:61
#: allianceauth/timerboard/form.py:39
msgid "Structure Type"
msgstr ""
#: allianceauth/timerboard/form.py:62
#: allianceauth/timerboard/form.py:40
msgid "Timer Type"
msgstr ""
#: allianceauth/timerboard/form.py:63
#: allianceauth/timerboard/form.py:41
#: allianceauth/timerboard/templates/timerboard/timertable.html:8
msgid "Objective"
msgstr ""
#: allianceauth/timerboard/form.py:64
#: allianceauth/timerboard/form.py:42
msgid "Absolute Timer"
msgstr ""
#: allianceauth/timerboard/form.py:65
#: allianceauth/timerboard/form.py:43
msgid "Date and Time"
msgstr ""
#: allianceauth/timerboard/form.py:66
#: allianceauth/timerboard/form.py:44
msgid "Days Remaining"
msgstr ""
#: allianceauth/timerboard/form.py:67
#: allianceauth/timerboard/form.py:45
msgid "Hours Remaining"
msgstr ""
#: allianceauth/timerboard/form.py:69
#: allianceauth/timerboard/form.py:47
msgid "Minutes Remaining"
msgstr ""
#: allianceauth/timerboard/form.py:71
#: allianceauth/timerboard/form.py:48
msgid "Important"
msgstr ""
#: allianceauth/timerboard/form.py:72
#: allianceauth/timerboard/form.py:49
msgid "Corp-Restricted"
msgstr ""
#: allianceauth/timerboard/models.py:13
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:39
#: allianceauth/timerboard/templates/timerboard/timertable.html:36
msgid "Friendly"
msgstr ""
#: allianceauth/timerboard/models.py:14
msgid "Not Specified"
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:34
#: allianceauth/timerboard/templates/timerboard/timertable.html:34
msgid "Hostile"
msgstr ""
#: allianceauth/timerboard/models.py:15
msgid "Shield"
msgstr ""
#: allianceauth/timerboard/models.py:16
msgid "Armor"
msgstr ""
#: allianceauth/timerboard/models.py:17
msgid "Hull"
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:44
#: allianceauth/timerboard/templates/timerboard/timertable.html:38
msgid "Neutral"
msgstr ""
#: allianceauth/timerboard/models.py:18
msgid "Final"
#: allianceauth/timerboard/templates/timerboard/timertable.html:48
msgid "POCO"
msgstr ""
#: allianceauth/timerboard/models.py:19
msgid "Anchoring"
#: allianceauth/timerboard/templates/timerboard/timertable.html:50
msgid "Orbital Skyhook"
msgstr ""
#: allianceauth/timerboard/models.py:20
#: allianceauth/timerboard/templates/timerboard/timertable.html:52
msgid "I-HUB"
msgstr ""
#: allianceauth/timerboard/models.py:21
#: allianceauth/timerboard/templates/timerboard/timertable.html:54
msgid "TCU"
msgstr ""
#: allianceauth/timerboard/models.py:22
#: allianceauth/timerboard/templates/timerboard/timertable.html:56
msgid "POS [S]"
msgstr ""
#: allianceauth/timerboard/models.py:23
#: allianceauth/timerboard/templates/timerboard/timertable.html:58
msgid "POS [M]"
msgstr ""
#: allianceauth/timerboard/models.py:24
#: allianceauth/timerboard/templates/timerboard/timertable.html:60
msgid "POS [L]"
msgstr ""
#: allianceauth/timerboard/models.py:25
#: allianceauth/timerboard/templates/timerboard/timertable.html:62
msgid "Astrahus"
msgstr ""
#: allianceauth/timerboard/models.py:26
#: allianceauth/timerboard/templates/timerboard/timertable.html:64
msgid "Fortizar"
msgstr ""
#: allianceauth/timerboard/models.py:27
#: allianceauth/timerboard/templates/timerboard/timertable.html:66
msgid "Keepstar"
msgstr ""
#: allianceauth/timerboard/models.py:28
#: allianceauth/timerboard/templates/timerboard/timertable.html:68
msgid "Raitaru"
msgstr ""
#: allianceauth/timerboard/models.py:29
#: allianceauth/timerboard/templates/timerboard/timertable.html:70
msgid "Azbel"
msgstr ""
#: allianceauth/timerboard/models.py:30
#: allianceauth/timerboard/templates/timerboard/timertable.html:72
msgid "Sotiyo"
msgstr ""
#: allianceauth/timerboard/models.py:31
#: allianceauth/timerboard/templates/timerboard/timertable.html:74
msgid "Athanor"
msgstr ""
#: allianceauth/timerboard/models.py:32
#: allianceauth/timerboard/templates/timerboard/timertable.html:76
msgid "Tatara"
msgstr ""
#: allianceauth/timerboard/models.py:33
msgid "Pharolux Cyno Beacon"
msgstr ""
#: allianceauth/timerboard/models.py:34
msgid "Tenebrex Cyno Jammer"
msgstr ""
#: allianceauth/timerboard/models.py:35
#: allianceauth/timerboard/templates/timerboard/timertable.html:82
msgid "Ansiblex Jump Gate"
msgstr ""
#: allianceauth/timerboard/models.py:36
#: allianceauth/timerboard/templates/timerboard/timertable.html:84
msgid "Moon Mining Cycle"
msgstr ""
#: allianceauth/timerboard/models.py:37
#: allianceauth/timerboard/templates/timerboard/timertable.html:86
msgid "Metenox Moon Drill"
msgstr ""
#: allianceauth/timerboard/models.py:38
#: allianceauth/timerboard/templates/timerboard/timertable.html:88
msgid "Other"
msgstr ""
#: allianceauth/timerboard/models.py:45
msgid "Not Specified"
msgstr ""
#: allianceauth/timerboard/models.py:46
msgid "Shield"
msgstr ""
#: allianceauth/timerboard/models.py:47
msgid "Armor"
msgstr ""
#: allianceauth/timerboard/models.py:48
msgid "Hull"
msgstr ""
#: allianceauth/timerboard/models.py:49
msgid "Final"
msgstr ""
#: allianceauth/timerboard/models.py:50
msgid "Anchoring"
msgstr ""
#: allianceauth/timerboard/models.py:51
msgid "Unanchoring"
msgstr ""
@@ -2584,7 +2699,7 @@ msgstr ""
msgid "Upcoming Timers"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:15
msgid "Timer"
msgstr ""
@@ -2628,78 +2743,14 @@ msgstr ""
msgid "Structure"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:64
msgid "POCO"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:70
msgid "I-HUB"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:76
msgid "TCU"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:82
msgid "POS [S]"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:88
msgid "POS [M]"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:94
msgid "POS [L]"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:100
msgid "Astrahus"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:106
msgid "Fortizar"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:112
msgid "Keepstar"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:118
msgid "Raitaru"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:124
msgid "Azbel"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:130
msgid "Sotiyo"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:136
msgid "Athanor"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:142
msgid "Tatara"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:148
#: allianceauth/timerboard/templates/timerboard/timertable.html:78
msgid "Cyno Beacon"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:154
#: allianceauth/timerboard/templates/timerboard/timertable.html:80
msgid "Cyno Jammer"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:160
msgid "Ansiblex Jump Gate"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/timertable.html:166
msgid "Moon Mining Cycle"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/view.html:9
msgid "Structure Timer Management"
msgstr ""

View File

@@ -1,11 +1,12 @@
import logging
import datetime
import logging
from django import forms
from django.utils import timezone
from django.core.validators import MaxValueValidator, MinValueValidator
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from .models import Timer, TimerType
from .models import Timer
logger = logging.getLogger(__name__)
@@ -32,54 +33,28 @@ class TimerForm(forms.ModelForm):
kwargs.update({'initial': initial})
super().__init__(*args, **kwargs)
structure_choices = [('POCO', 'POCO'),
('I-HUB', 'I-HUB'),
('TCU', 'TCU'),
('POS[S]', 'POS[S]'),
('POS[M]', 'POS[M]'),
('POS[L]', 'POS[L]'),
('Astrahus', 'Astrahus'),
('Fortizar', 'Fortizar'),
('Keepstar', 'Keepstar'),
('Raitaru', 'Raitaru'),
('Azbel', 'Azbel'),
('Sotiyo', 'Sotiyo'),
('Athanor', 'Athanor'),
('Tatara', 'Tatara'),
('Pharolux Cyno Beacon', 'Pharolux Cyno Beacon'),
('Tenebrex Cyno Jammer', 'Tenebrex Cyno Jammer'),
('Ansiblex Jump Gate', 'Ansiblex Jump Gate'),
('Moon Mining Cycle', 'Moon Mining Cycle'),
(_('Other'), _('Other'))]
objective_choices = [('Friendly', _('Friendly')),
('Hostile', _('Hostile')),
('Neutral', _('Neutral'))]
details = forms.CharField(max_length=254, required=True, label=_('Details'))
system = forms.CharField(max_length=254, required=True, label=_("System"))
planet_moon = forms.CharField(max_length=254, label=_("Planet/Moon"), required=False, initial="")
structure = forms.ChoiceField(choices=structure_choices, required=True, label=_("Structure Type"))
timer_type = forms.ChoiceField(choices=TimerType.choices, label=_("Timer Type"))
objective = forms.ChoiceField(choices=objective_choices, required=True, label=_("Objective"))
structure = forms.ChoiceField(choices=Timer.Structure.choices, required=True, label=_("Structure Type"))
timer_type = forms.ChoiceField(choices=Timer.TimerType.choices, label=_("Timer Type"))
objective = forms.ChoiceField(choices=Timer.Objective.choices, required=True, label=_("Objective"))
absolute_checkbox = forms.BooleanField(label=_("Absolute Timer"), required=False, initial=False)
absolute_time = forms.CharField(required=False,label=_("Date and Time"))
days_left = forms.IntegerField(required=False, label=_("Days Remaining"), validators=[MinValueValidator(0)])
hours_left = forms.IntegerField(required=False, label=_("Hours Remaining"),
validators=[MinValueValidator(0), MaxValueValidator(23)])
minutes_left = forms.IntegerField(required=False, label=_("Minutes Remaining"),
validators=[MinValueValidator(0), MaxValueValidator(59)])
minutes_left = forms.IntegerField(required=False, label=_("Minutes Remaining"), validators=[MinValueValidator(0), MaxValueValidator(59)])
important = forms.BooleanField(label=_("Important"), required=False)
corp_timer = forms.BooleanField(label=_("Corp-Restricted"), required=False)
def save(self, commit=True):
timer = super().save(commit=False)
# Get character
character = self.user.profile.main_character
corporation = character.corporation
logger.debug("Determined timer save request on behalf "
"of character {} corporation {}".format(character, corporation))
logger.debug(f"Determined timer save request on behalf of character {character} corporation {corporation}")
days_left = self.cleaned_data['days_left']
hours_left = self.cleaned_data['hours_left']

View File

@@ -0,0 +1,28 @@
# Generated by Django 4.2 on 2024-09-09 03:45
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('timerboard', '0005_alter_timer_planet_moon'),
]
operations = [
migrations.AlterField(
model_name='timer',
name='objective',
field=models.CharField(choices=[('Friendly', 'Friendly'), ('Hostile', 'Hostile'), ('Neutral', 'Neutral')], default='Neutral', max_length=254),
),
migrations.AlterField(
model_name='timer',
name='structure',
field=models.CharField(choices=[('POCO', 'POCO'), ('Orbital Skyhook', 'Orbital Skyhook'), ('I-HUB', 'I-HUB'), ('TCU', 'TCU'), ('POS[S]', 'POS [S]'), ('POS[M]', 'POS [M]'), ('POS[L]', 'POS [L]'), ('Astrahus', 'Astrahus'), ('Fortizar', 'Fortizar'), ('Keepstar', 'Keepstar'), ('Raitaru', 'Raitaru'), ('Azbel', 'Azbel'), ('Sotiyo', 'Sotiyo'), ('Athanor', 'Athanor'), ('Tatara', 'Tatara'), ('Pharolux Cyno Beacon', 'Pharolux Cyno Beacon'), ('Tenebrex Cyno Jammer', 'Tenebrex Cyno Jammer'), ('Ansiblex Jump Gate', 'Ansiblex Jump Gate'), ('Moon Mining Cycle', 'Moon Mining Cycle'), ('Metenox Moon Drill', 'Metenox Moon Drill'), ('Other', 'Other')], default='Other', max_length=254),
),
migrations.AlterField(
model_name='timer',
name='timer_type',
field=models.CharField(choices=[('UNSPECIFIED', 'Not Specified'), ('SHIELD', 'Shield'), ('ARMOR', 'Armor'), ('HULL', 'Hull'), ('FINAL', 'Final'), ('ANCHORING', 'Anchoring'), ('UNANCHORING', 'Unanchoring'), ('ABANDONED', 'Abandoned')], default='UNSPECIFIED', max_length=254),
),
]

View File

@@ -6,34 +6,63 @@ from allianceauth.eveonline.models import EveCharacter
from allianceauth.eveonline.models import EveCorporationInfo
class TimerType(models.TextChoices):
"""
Choices for Timer Type
"""
UNSPECIFIED = "UNSPECIFIED", _("Not Specified")
SHIELD = "SHIELD", _("Shield")
ARMOR = "ARMOR", _("Armor")
HULL = "HULL", _("Hull")
FINAL = "FINAL", _("Final")
ANCHORING = "ANCHORING", _("Anchoring")
UNANCHORING = "UNANCHORING", _("Unanchoring")
class Timer(models.Model):
class Meta:
ordering = ['eve_time']
class Objective(models.TextChoices):
"""
Choices for Objective Type
"""
FRIENDLY = "Friendly", _("Friendly")
HOSTILE = "Hostile", _("Hostile")
NEUTRAL = "Neutral", _("Neutral")
class Structure(models.TextChoices):
"""
Choices for Structure Type
"""
POCO = "POCO", _("POCO")
ORBITALSKYHOOK = "Orbital Skyhook", _("Orbital Skyhook")
IHUB = "I-HUB", _("I-HUB")
TCU = "TCU", _("TCU") # Pending Remval
POSS = "POS[S]", _("POS [S]")
POSM = "POS[M]", _("POS [M]")
POSL = "POS[L]", _("POS [L]")
ASTRAHUS = "Astrahus", _("Astrahus")
FORTIZAR = "Fortizar", _("Fortizar")
KEEPSTAR = "Keepstar", _("Keepstar")
RAITARU = "Raitaru", _("Raitaru")
AZBEL = "Azbel", _("Azbel")
SOTIYO = "Sotiyo", _("Sotiyo")
ATHANOR = "Athanor", _("Athanor")
TATARA = "Tatara", _("Tatara")
PHAROLUX = "Pharolux Cyno Beacon", _("Pharolux Cyno Beacon")
TENEBREX = "Tenebrex Cyno Jammer", _("Tenebrex Cyno Jammer")
ANSIBLEX = "Ansiblex Jump Gate", _("Ansiblex Jump Gate")
MOONPOP = "Moon Mining Cycle", _("Moon Mining Cycle")
METENOX = "Metenox Moon Drill", _("Metenox Moon Drill")
OTHER = "Other", _("Other")
class TimerType(models.TextChoices):
"""
Choices for Timer Type
"""
UNSPECIFIED = "UNSPECIFIED", _("Not Specified")
SHIELD = "SHIELD", _("Shield")
ARMOR = "ARMOR", _("Armor")
HULL = "HULL", _("Hull")
FINAL = "FINAL", _("Final")
ANCHORING = "ANCHORING", _("Anchoring")
UNANCHORING = "UNANCHORING", _("Unanchoring")
ABANDONED = "ABANDONED", _("Abandoned")
details = models.CharField(max_length=254, default="")
system = models.CharField(max_length=254, default="")
planet_moon = models.CharField(max_length=254, blank=True, default="")
structure = models.CharField(max_length=254, default="")
timer_type = models.CharField(
max_length=254,
choices=TimerType.choices,
default=TimerType.UNSPECIFIED,
)
objective = models.CharField(max_length=254, default="")
structure = models.CharField(max_length=254,choices=Structure.choices,default=Structure.OTHER)
timer_type = models.CharField(max_length=254,choices=TimerType.choices,default=TimerType.UNSPECIFIED)
objective = models.CharField(max_length=254, choices=Objective.choices, default=Objective.NEUTRAL)
eve_time = models.DateTimeField()
important = models.BooleanField(default=False)
eve_character = models.ForeignKey(EveCharacter, null=True, on_delete=models.SET_NULL)
@@ -41,5 +70,8 @@ class Timer(models.Model):
corp_timer = models.BooleanField(default=False)
user = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
def __str__(self):
def __str__(self) -> str:
return str(self.system) + ' ' + str(self.details)
class Meta:
ordering = ['eve_time']

View File

@@ -40,7 +40,7 @@
</div>
{% endif %}
{% if timer.objective == "Neutral" %}
<div class="badge bg-default">
<div class="badge bg-secondary">
{% translate "Neutral" %}
</div>
{% endif %}

View File

@@ -18,174 +18,85 @@
</tr>
{% for timer in timers %}
{% if timer.important == True %}
<tr class="bg-danger bg-opacity-25">
{% else %}
<tr class="bg-info bg-opacity-25">
{% endif %}
<tr class="{% if timer.important == True %}bg-danger bg-opacity-25{% else %}bg-info bg-opacity-25{% endif %}">
<td style="width: 150px;" class="text-center">
{{ timer.details }}
{% if timer.timer_type != 'UNSPECIFIED' %}
<br>({{ timer.get_timer_type_display }})
<br />
({{ timer.get_timer_type_display }})
{% endif %}
</td>
<td class="text-center">
{% if timer.objective == "Hostile" %}
<div class="badge bg-danger">
{% translate "Hostile" %}
</div>
{% endif %}
{% if timer.objective == "Friendly" %}
<div class="badge bg-primary">
{% translate "Friendly" %}
</div>
{% endif %}
{% if timer.objective == "Neutral" %}
<div class="badge bg-default">
{% translate "Neutral" %}
</div>
<div class="badge bg-danger">{% translate "Hostile" %}</div>
{% elif timer.objective == "Friendly" %}
<div class="badge bg-primary">{% translate "Friendly" %}</div>
{% elif timer.objective == "Neutral" %}
<div class="badge bg-secondary">{% translate "Neutral" %}</div>
{% endif %}
</td>
<td class="text-center">
<a href="{{ timer.system|dotlan_solar_system_url }}">
{{ timer.system }} {{ timer.planet_moon }}
</a>
<a href="{{ timer.system|dotlan_solar_system_url }}">{{ timer.system }} {{ timer.planet_moon }}</a>
</td>
<td class="text-center">
{% if timer.structure == "POCO" %}
<div class="badge bg-info">
{% translate "POCO" %}
</div>
{% endif %}
{% if timer.structure == "I-HUB" %}
<div class="badge bg-warning">
{% translate "I-HUB" %}
</div>
{% endif %}
{% if timer.structure == "TCU" %}
<div class="badge bg-danger">
{% translate "TCU" %}
</div>
{% endif %}
{% if timer.structure == "POS[S]" %}
<div class="badge bg-info">
{% translate "POS [S]" %}
</div>
{% endif %}
{% if timer.structure == "POS[M]" %}
<div class="badge bg-info">
{% translate "POS [M]" %}
</div>
{% endif %}
{% if timer.structure == "POS[L]" %}
<div class="badge bg-info">
{% translate "POS [L]" %}
</div>
{% endif %}
{% if timer.structure == "Citadel[M]" or timer.structure == "Astrahus" %}
<div class="badge bg-danger">
{% translate "Astrahus" %}
</div>
{% endif %}
{% if timer.structure == "Citadel[L]" or timer.structure == "Fortizar" %}
<div class="badge bg-danger">
{% translate "Fortizar" %}
</div>
{% endif %}
{% if timer.structure == "Citadel[XL]" or timer.structure == "Keepstar" %}
<div class="badge bg-danger">
{% translate "Keepstar" %}
</div>
{% endif %}
{% if timer.structure == "Engineering Complex[M]" or timer.structure == "Raitaru" %}
<div class="badge bg-warning">
{% translate "Raitaru" %}
</div>
{% endif %}
{% if timer.structure == "Engineering Complex[L]" or timer.structure == "Azbel" %}
<div class="badge bg-warning">
{% translate "Azbel" %}
</div>
{% endif %}
{% if timer.structure == "Engineering Complex[XL]" or timer.structure == "Sotiyo" %}
<div class="badge bg-warning">
{% translate "Sotiyo" %}
</div>
{% endif %}
{% if timer.structure == "Refinery[M]" or timer.structure == "Athanor" %}
<div class="badge bg-warning">
{% translate "Athanor" %}
</div>
{% endif %}
{% if timer.structure == "Refinery[L]" or timer.structure == "Tatara"%}
<div class="badge bg-warning">
{% translate "Tatara" %}
</div>
{% endif %}
{% if timer.structure == "Cyno Beacon" or timer.structure == "Pharolux Cyno Beacon" %}
<div class="badge bg-warning">
{% translate "Cyno Beacon" %}
</div>
{% endif %}
{% if timer.structure == "Cyno Jammer" or timer.structure == "Tenebrex Cyno Jammer" %}
<div class="badge bg-warning">
{% translate "Cyno Jammer" %}
</div>
{% endif %}
{% if timer.structure == "Jump Gate" or timer.structure == "Ansiblex Jump Gate" %}
<div class="badge bg-warning">
{% translate "Ansiblex Jump Gate" %}
</div>
{% endif %}
{% if timer.structure == "Moon Mining Cycle" %}
<div class="badge bg-success">
{% translate "Moon Mining Cycle" %}
</div>
{% endif %}
{% if timer.structure == "Other" %}
<div class="badge bg-default">
{% translate "Other" %}
</div>
<div class="badge bg-info">{% translate "POCO" %}</div>
{% elif timer.structure == "Orbital Skyhook" %}
<div class="badge bg-warning">{% translate "Orbital Skyhook" %}</div>
{% elif timer.structure == "I-HUB" %}
<div class="badge bg-warning">{% translate "I-HUB" %}</div>
{% elif timer.structure == "TCU" %} {% comment %} Pending Removal {% endcomment %}
<div class="badge bg-secondary">{% translate "TCU" %}</div>
{% elif timer.structure == "POS[S]" %}
<div class="badge bg-info">{% translate "POS [S]" %}</div>
{% elif timer.structure == "POS[M]" %}
<div class="badge bg-info">{% translate "POS [M]" %}</div>
{% elif timer.structure == "POS[L]" %}
<div class="badge bg-info">{% translate "POS [L]" %}</div>
{% elif timer.structure == "Citadel[M]" or timer.structure == "Astrahus" %}
<div class="badge bg-danger">{% translate "Astrahus" %}</div>
{% elif timer.structure == "Citadel[L]" or timer.structure == "Fortizar" %}
<div class="badge bg-danger">{% translate "Fortizar" %}</div>
{% elif timer.structure == "Citadel[XL]" or timer.structure == "Keepstar" %}
<div class="badge bg-danger">{% translate "Keepstar" %}</div>
{% elif timer.structure == "Engineering Complex[M]" or timer.structure == "Raitaru" %}
<div class="badge bg-warning">{% translate "Raitaru" %}</div>
{% elif timer.structure == "Engineering Complex[L]" or timer.structure == "Azbel" %}
<div class="badge bg-warning">{% translate "Azbel" %}</div>
{% elif timer.structure == "Engineering Complex[XL]" or timer.structure == "Sotiyo" %}
<div class="badge bg-danger">{% translate "Sotiyo" %}</div>
{% elif timer.structure == "Refinery[M]" or timer.structure == "Athanor" %}
<div class="badge bg-warning">{% translate "Athanor" %}</div>
{% elif timer.structure == "Refinery[L]" or timer.structure == "Tatara" %}
<div class="badge bg-warning">{% translate "Tatara" %}</div>
{% elif timer.structure == "Cyno Beacon" or timer.structure == "Pharolux Cyno Beacon" %}
<div class="badge bg-warning">{% translate "Cyno Beacon" %}</div>
{% elif timer.structure == "Cyno Jammer" or timer.structure == "Tenebrex Cyno Jammer" %}
<div class="badge bg-warning">{% translate "Cyno Jammer" %}</div>
{% elif timer.structure == "Jump Gate" or timer.structure == "Ansiblex Jump Gate" %}
<div class="badge bg-warning">{% translate "Ansiblex Jump Gate" %}</div>
{% elif timer.structure == "Moon Mining Cycle" %}
<div class="badge bg-success">{% translate "Moon Mining Cycle" %}</div>
{% elif timer.structure == "Metenox Moon Drill" %}
<div class="badge bg-warning">{% translate "Metenox Moon Drill" %}</div>
{% elif timer.structure == "Other" %}
<div class="badge bg-secondary">{% translate "Other" %}</div>
{% endif %}
</td>
<td class="text-center" nowrap>
{{ timer.eve_time | date:"Y-m-d H:i" }}
</td>
<td class="text-center" nowrap>{{ timer.eve_time | date:"Y-m-d H:i" }}</td>
<td class="text-center" nowrap>
<div id="localtime{{ timer.id }}"></div>
<div id="countdown{{ timer.id }}"></div>
</td>
<td class="text-center">
{{ timer.eve_character.character_name }}
</td>
<td class="text-center">{{ timer.eve_character.character_name }}</td>
{% if perms.auth.timer_management %}
<td class="text-center">

View File

@@ -167,8 +167,8 @@ class TimerboardViewsTestCase(WebTest):
form['details'] = 'details'
form['system'] = 'jita'
form['planet_moon'] = '4-4'
form['structure'] = TimerForm.structure_choices[0][0]
form['objective'] = TimerForm.objective_choices[0][0]
form['structure'] = Timer.Structure.choices[0][0]
form['objective'] = Timer.Objective.choices[0][0]
form['days_left'] = 1
form['hours_left'] = 2
form['minutes_left'] = 3
@@ -206,8 +206,8 @@ class TimerboardViewsTestCase(WebTest):
form['details'] = 'detailsUNIQUE'
form['system'] = 'jita'
form['planet_moon'] = '4-4'
form['structure'] = TimerForm.structure_choices[0][0]
form['objective'] = TimerForm.objective_choices[0][0]
form['structure'] = Timer.Structure.choices[0][0]
form['objective'] = Timer.Objective.choices[0][0]
form['days_left'] = 1
form['hours_left'] = 2
form['minutes_left'] = 3

View File

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

View File

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

View File

@@ -27,7 +27,7 @@ To install on your favorite flavour of Linux, identify and install equivalent pa
It is recommended to ensure your OS is fully up-to-date before proceeding. We may also add Package Repositories here, used later in the documentation.
::::{tabs}
:::{group-tab} Ubuntu 2004, 2204
:::{group-tab} Ubuntu 2004, 2204, 2404
```shell
sudo apt-get update
@@ -70,7 +70,7 @@ Install Python 3.11 and related tools on your system.
::::{tabs}
:::{group-tab} Ubuntu 2004, 2204
:::{group-tab} Ubuntu 2004, 2204, 2404
```shell
sudo add-apt-repository ppa:deadsnakes/ppa
@@ -128,7 +128,7 @@ sudo make altinstall
It's recommended to use a database service instead of SQLite. Many options are available, but this guide will use MariaDB 10.11
::::{tabs}
:::{group-tab} Ubuntu 2004, 2204
:::{group-tab} Ubuntu 2004, 2204, 2404
Follow the instructions at <https://mariadb.org/download/?t=repo-config&d=20.04+%22focal%22&v=10.11&r_m=osuosl> to add the MariaDB repository to your host.
```shell
@@ -164,7 +164,7 @@ sudo dnf install mariadb mariadb-server mariadb-devel
:::::{important}
::::{tabs}
:::{group-tab} Ubuntu 2004, 2204
:::{group-tab} Ubuntu 2004, 2204, 2404
If you don't plan on running the database on the same server as auth you still need to install the `libmysqlclient-dev` package
:::
:::{group-tab} CentOS 7
@@ -185,7 +185,7 @@ A few extra utilities are also required for the installation of packages.
::::{tabs}
:::{group-tab} Ubuntu 2004, 2204
:::{group-tab} Ubuntu 2004, 2204, 2404
```shell
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
@@ -282,10 +282,10 @@ mysql_secure_installation
For security and permissions, it's highly recommended you create a separate user to install auth under. Do not log in as this account.
::::{tabs}
:::{group-tab} Ubuntu 2004, 2204
:::{group-tab} Ubuntu 2004, 2204, 2404
```shell
sudo adduser --disabled-login allianceserver
sudo adduser --disabled-login allianceserver --shell /bin/bash
```
:::
@@ -497,7 +497,7 @@ exit
::::{tabs}
:::{group-tab} Ubuntu 2004, 2204
:::{group-tab} Ubuntu 2004, 2204, 2404
```shell
sudo apt-get install supervisor
@@ -554,7 +554,7 @@ sudo systemctl start supervisord.service
Once installed, it needs a configuration file to know which processes to watch. Your Alliance Auth project comes with a ready-to-use template which will ensure the Celery workers, Celery task scheduler and Gunicorn are all running.
::::{tabs}
:::{group-tab} Ubuntu 2004, 2204
:::{group-tab} Ubuntu 2004, 2204, 2404
```shell
ln -s /home/allianceserver/myauth/supervisor.conf /etc/supervisor/conf.d/myauth.conf

View File

@@ -10,7 +10,7 @@ If you're using a small VPS to host services with very limited memory, consider
::::{tabs}
:::{group-tab} Ubuntu 2004, 2204
:::{group-tab} Ubuntu 2004, 2204, 2404
```shell
apt-get install apache2
@@ -50,7 +50,7 @@ CentOS 7, Stream 8, Stream 9
Apache needs to be able to read the folder containing your auth project's static files.
::::{tabs}
:::{group-tab} Ubuntu 2004, 2204
:::{group-tab} Ubuntu 2004, 2204, 2404
```shell
chown -R www-data:www-data /var/www/myauth/static
@@ -87,7 +87,7 @@ Apache serves sites through defined virtual hosts. These are located in `/etc/ap
A virtual host for auth needs only proxy requests to your WSGI server (Gunicorn if you followed the installation guide) and serve static files. Examples can be found below. Create your config in its own file e.g. `myauth.conf`
::::{tabs}
:::{group-tab} Ubuntu 2004, 2204
:::{group-tab} Ubuntu 2004, 2204, 2404
To proxy and modify headers a few mods need to be enabled.
```shell

View File

@@ -42,7 +42,7 @@ You will need to have [Gunicorn](gunicorn.md) or some other WSGI server setup fo
## Install
::::{tabs}
:::{group-tab} Ubuntu 2004, 2204
:::{group-tab} Ubuntu 2004, 2204, 2404
```shell
sudo apt-get install nginx

View File

@@ -25,7 +25,7 @@ sudo dnf install python39 python39-devel
:::
::::{tabs}
:::{group-tab} Ubuntu 2004, 2204
:::{group-tab} Ubuntu 2004, 2204, 2404
```shell
sudo add-apt-repository ppa:deadsnakes/ppa

View File

@@ -1,4 +1,5 @@
import os
from celery import Celery
# set the default Django settings module for the 'celery' program.
@@ -12,6 +13,10 @@ app = Celery('devauth')
# the configuration object to child processes.
app.config_from_object('django.conf:settings')
# Automatically try to establish the connection to the AMQP broker on
# Celery startup if it is unavailable.
app.conf.broker_connection_retry_on_startup = True
# setup priorities ( 0 Highest, 9 Lowest )
app.conf.broker_transport_options = {
'priority_steps': list(range(10)), # setup que to have 10 steps