mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-04 14:16:21 +01:00
Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2bd2c09c23 | ||
|
|
c1cf859ec9 | ||
|
|
1ebf864998 | ||
|
|
0948e34e48 | ||
|
|
f9a1ea9c83 | ||
|
|
d02a8ebc1b | ||
|
|
5c2625b648 | ||
|
|
13174d006e | ||
|
|
2c59cc4cc3 | ||
|
|
41c81d3226 | ||
|
|
2ec7d3b4d9 | ||
|
|
b607b73598 | ||
|
|
f52791cd1f | ||
|
|
d829facbd4 | ||
|
|
44ac3a9ff2 |
@@ -1,7 +1,7 @@
|
||||
# This will make sure the app is always imported when
|
||||
# Django starts so that shared_task will use this app.
|
||||
|
||||
__version__ = '2.9.1'
|
||||
__version__ = '2.9.2'
|
||||
__title__ = 'Alliance Auth'
|
||||
__url__ = 'https://gitlab.com/allianceauth/allianceauth'
|
||||
NAME = f'{__title__} v{__version__}'
|
||||
|
||||
@@ -49,7 +49,6 @@ def run_model_update():
|
||||
for alliance in EveAllianceInfo.objects.all().values('alliance_id'):
|
||||
update_alliance.apply_async(args=[alliance['alliance_id']], priority=TASK_PRIORITY)
|
||||
|
||||
#update existing character models if required
|
||||
# update existing character models
|
||||
character_ids = EveCharacter.objects.all().values_list('character_id', flat=True)
|
||||
for character_ids_chunk in chunks(character_ids, CHUNK_SIZE):
|
||||
@@ -67,7 +66,7 @@ def update_character_chunk(character_ids_chunk: list):
|
||||
character_names = providers.provider.client.Universe\
|
||||
.post_universe_names(ids=character_ids_chunk).result()
|
||||
except:
|
||||
logger.error("Failed to bulk update characters. Attempting single updates")
|
||||
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
|
||||
|
||||
Binary file not shown.
@@ -2,12 +2,12 @@
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Erik Kalkoken <erik.kalkoken@gmail.com>, 2020
|
||||
# Peter Pfeufer <rounon.dax@terra-nanotech.de>, 2021
|
||||
# Joel Falknau <ozirascal@gmail.com>, 2021
|
||||
#
|
||||
# Peter Pfeufer <rounon.dax@terra-nanotech.de>, 2021
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -15,7 +15,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-10-26 18:36+1000\n"
|
||||
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
||||
"Last-Translator: Joel Falknau <ozirascal@gmail.com>, 2021\n"
|
||||
"Last-Translator: Peter Pfeufer <rounon.dax@terra-nanotech.de>, 2021\n"
|
||||
"Language-Team: German (https://www.transifex.com/alliance-auth/teams/107430/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -2132,7 +2132,7 @@ msgstr "Strukturen Typ"
|
||||
|
||||
#: allianceauth/timerboard/form.py:62
|
||||
msgid "Timer Type"
|
||||
msgstr ""
|
||||
msgstr "Timer Typ"
|
||||
|
||||
#: allianceauth/timerboard/form.py:63
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:33
|
||||
@@ -2163,15 +2163,15 @@ msgstr "Auf Corp beschränkt"
|
||||
|
||||
#: allianceauth/timerboard/models.py:14
|
||||
msgid "Not Specified"
|
||||
msgstr ""
|
||||
msgstr "Keine Angabe"
|
||||
|
||||
#: allianceauth/timerboard/models.py:15
|
||||
msgid "Shield"
|
||||
msgstr ""
|
||||
msgstr "Schild"
|
||||
|
||||
#: allianceauth/timerboard/models.py:16
|
||||
msgid "Armor"
|
||||
msgstr ""
|
||||
msgstr "Panzerung"
|
||||
|
||||
#: allianceauth/timerboard/models.py:17
|
||||
msgid "Hull"
|
||||
@@ -2179,15 +2179,15 @@ msgstr "Hülle"
|
||||
|
||||
#: allianceauth/timerboard/models.py:18
|
||||
msgid "Final"
|
||||
msgstr ""
|
||||
msgstr "Final"
|
||||
|
||||
#: allianceauth/timerboard/models.py:19
|
||||
msgid "Anchoring"
|
||||
msgstr ""
|
||||
msgstr "Ankernd"
|
||||
|
||||
#: allianceauth/timerboard/models.py:20
|
||||
msgid "Unanchoring"
|
||||
msgstr ""
|
||||
msgstr "Entankernd"
|
||||
|
||||
#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:11
|
||||
msgid "Delete Timer"
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-10-26 18:36+1000\n"
|
||||
"POT-Creation-Date: 2021-10-30 14:36+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"
|
||||
@@ -34,12 +34,12 @@ msgstr ""
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:74
|
||||
#: allianceauth/authentication/models.py:79
|
||||
#, python-format
|
||||
msgid "State changed to: %s"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:75
|
||||
#: allianceauth/authentication/models.py:80
|
||||
#, python-format
|
||||
msgid "Your user's state is now: %(state)s"
|
||||
msgstr ""
|
||||
@@ -58,29 +58,29 @@ msgid ""
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:81
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:102
|
||||
msgid "No main character set."
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:88
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:109
|
||||
msgid "Add Character"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:92
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:113
|
||||
msgid "Change Main"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:101
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:122
|
||||
msgid "Group Memberships"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:121
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:142
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:23
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||
msgid "Characters"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:129
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:150
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:73
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:15
|
||||
@@ -89,13 +89,13 @@ msgstr ""
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:130
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:151
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:23
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:46
|
||||
msgid "Corp"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:131
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:152
|
||||
#: allianceauth/corputils/templates/corputils/corpstats.html:76
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:47
|
||||
msgid "Alliance"
|
||||
|
||||
Binary file not shown.
@@ -2,12 +2,14 @@
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# François LACROIX-DURANT <umbre@fallenstarscreations.com>, 2020
|
||||
# Philippe Querin-Laporte <philippe.querin@hotmail.com>, 2020
|
||||
# Keven D. <theenarki@gmail.com>, 2020
|
||||
#
|
||||
# Idea ., 2021
|
||||
# Mickael PATTE, 2021
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -15,7 +17,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-10-26 18:36+1000\n"
|
||||
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
||||
"Last-Translator: Keven D. <theenarki@gmail.com>, 2020\n"
|
||||
"Last-Translator: Mickael PATTE, 2021\n"
|
||||
"Language-Team: French (France) (https://www.transifex.com/alliance-auth/teams/107430/fr_FR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -69,7 +71,7 @@ msgstr ""
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:81
|
||||
msgid "No main character set."
|
||||
msgstr "Aucun personnage principal choisi."
|
||||
msgstr "Aucun personnage principal sélectionné."
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:88
|
||||
msgid "Add Character"
|
||||
@@ -77,7 +79,7 @@ msgstr "Ajouter un Personnage"
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:92
|
||||
msgid "Change Main"
|
||||
msgstr "Changer Personnage Principal"
|
||||
msgstr "Changer de Personnage Principal"
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:101
|
||||
msgid "Group Memberships"
|
||||
@@ -580,7 +582,7 @@ msgstr "Gestion de groupe"
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:5
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:14
|
||||
msgid "Audit Log"
|
||||
msgstr ""
|
||||
msgstr "Journal d'audit"
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:20
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:21
|
||||
@@ -618,11 +620,11 @@ msgstr "Acteur"
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:47
|
||||
msgid "Removed"
|
||||
msgstr ""
|
||||
msgstr "Supprimé"
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:59
|
||||
msgid "All times displayed are EVE/UTC."
|
||||
msgstr ""
|
||||
msgstr "Toutes les heures affichées sont EVE/UTC."
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/audit.html:66
|
||||
msgid "No entries found for this group."
|
||||
@@ -642,13 +644,13 @@ msgstr "Organisation"
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:50
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:76
|
||||
msgid "Group leader"
|
||||
msgstr ""
|
||||
msgstr "Chef de groupe"
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:61
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:80
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/index.html:136
|
||||
msgid "(unknown)"
|
||||
msgstr ""
|
||||
msgstr "(inconnu)"
|
||||
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembers.html:66
|
||||
msgid "Remove from group"
|
||||
@@ -1061,19 +1063,19 @@ msgstr "Ajouter un Commentaire"
|
||||
|
||||
#: allianceauth/notifications/models.py:21
|
||||
msgid "danger"
|
||||
msgstr ""
|
||||
msgstr "danger"
|
||||
|
||||
#: allianceauth/notifications/models.py:22
|
||||
msgid "warning"
|
||||
msgstr ""
|
||||
msgstr "attention"
|
||||
|
||||
#: allianceauth/notifications/models.py:23
|
||||
msgid "info"
|
||||
msgstr ""
|
||||
msgstr "information"
|
||||
|
||||
#: allianceauth/notifications/models.py:24
|
||||
msgid "success"
|
||||
msgstr ""
|
||||
msgstr "succès"
|
||||
|
||||
#: allianceauth/notifications/templates/notifications/list.html:5
|
||||
#: allianceauth/notifications/templates/notifications/list.html:9
|
||||
@@ -1134,7 +1136,7 @@ msgstr "Impossible de trouver l'alerte."
|
||||
|
||||
#: allianceauth/notifications/views.py:83
|
||||
msgid "Marked all notifications as read."
|
||||
msgstr ""
|
||||
msgstr "Toutes les notifications ont été marquées comme lues."
|
||||
|
||||
#: allianceauth/notifications/views.py:91
|
||||
msgid "Deleted all read notifications."
|
||||
@@ -1182,7 +1184,7 @@ msgstr "Heure Locale"
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/fleetoptable.html:15
|
||||
msgid "FC"
|
||||
msgstr ""
|
||||
msgstr "Commandant de flotte"
|
||||
|
||||
#: allianceauth/optimer/templates/optimer/management.html:6
|
||||
msgid "Fleet Operation Management"
|
||||
@@ -1294,39 +1296,39 @@ msgstr "États"
|
||||
|
||||
#: allianceauth/project_template/project_name/settings/base.py:88
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
msgstr "Anglais"
|
||||
|
||||
#: allianceauth/project_template/project_name/settings/base.py:89
|
||||
msgid "German"
|
||||
msgstr ""
|
||||
msgstr "Allemand"
|
||||
|
||||
#: allianceauth/project_template/project_name/settings/base.py:90
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
msgstr "Espagnol"
|
||||
|
||||
#: allianceauth/project_template/project_name/settings/base.py:91
|
||||
msgid "Chinese Simplified"
|
||||
msgstr ""
|
||||
msgstr "Chinois simplifié"
|
||||
|
||||
#: allianceauth/project_template/project_name/settings/base.py:92
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
msgstr "Russe"
|
||||
|
||||
#: allianceauth/project_template/project_name/settings/base.py:93
|
||||
msgid "Korean"
|
||||
msgstr ""
|
||||
msgstr "Coréen"
|
||||
|
||||
#: allianceauth/project_template/project_name/settings/base.py:94
|
||||
msgid "French"
|
||||
msgstr ""
|
||||
msgstr "Français"
|
||||
|
||||
#: allianceauth/project_template/project_name/settings/base.py:95
|
||||
msgid "Japanese"
|
||||
msgstr ""
|
||||
msgstr "Japonais"
|
||||
|
||||
#: allianceauth/project_template/project_name/settings/base.py:96
|
||||
msgid "Italian"
|
||||
msgstr ""
|
||||
msgstr "Italien"
|
||||
|
||||
#: allianceauth/services/abstract.py:72
|
||||
msgid "That service account already exists"
|
||||
@@ -1335,7 +1337,7 @@ msgstr "Ce compte de service existe déjà."
|
||||
#: allianceauth/services/abstract.py:103
|
||||
#, python-brace-format
|
||||
msgid "Successfully set your {self.service_name} password"
|
||||
msgstr ""
|
||||
msgstr "Mot de passe {} créé avec succès."
|
||||
|
||||
#: allianceauth/services/auth_hooks.py:12
|
||||
msgid "Services"
|
||||
@@ -1415,7 +1417,7 @@ msgstr ""
|
||||
|
||||
#: allianceauth/services/modules/discord/templates/services/discord/discord_service_ctrl.html:5
|
||||
msgid "Discord"
|
||||
msgstr ""
|
||||
msgstr "Discord"
|
||||
|
||||
#: allianceauth/services/modules/discord/templates/services/discord/discord_service_ctrl.html:18
|
||||
msgid "Join the Discord server"
|
||||
@@ -1603,15 +1605,15 @@ msgstr "%s non trouvé sur le serveur."
|
||||
|
||||
#: allianceauth/services/modules/teamspeak3/templates/admin/teamspeak3/authts/change_list.html:9
|
||||
msgid "Update TS3 groups"
|
||||
msgstr ""
|
||||
msgstr "Mise à jour des groupes TS3"
|
||||
|
||||
#: allianceauth/services/modules/teamspeak3/templates/services/teamspeak3/teamspeakjoin.html:6
|
||||
msgid "Verify Teamspeak"
|
||||
msgstr ""
|
||||
msgstr "Vérifier Teamspeak"
|
||||
|
||||
#: allianceauth/services/modules/teamspeak3/templates/services/teamspeak3/teamspeakjoin.html:11
|
||||
msgid "Verify Teamspeak Identity"
|
||||
msgstr ""
|
||||
msgstr "Vérifier l'identité Teamspeak"
|
||||
|
||||
#: allianceauth/services/modules/teamspeak3/templates/services/teamspeak3/teamspeakjoin.html:14
|
||||
msgid "Join Server"
|
||||
@@ -1639,18 +1641,18 @@ msgstr "Compte TeamSpeak3 désactivé"
|
||||
|
||||
#: allianceauth/services/modules/teamspeak3/views.py:97
|
||||
msgid "Reset TeamSpeak3 permission key."
|
||||
msgstr ""
|
||||
msgstr "Réinitialisez la clé d'autorisation TeamSpeak3."
|
||||
|
||||
#: allianceauth/services/modules/xenforo/views.py:30
|
||||
msgid "Activated XenForo account."
|
||||
msgstr ""
|
||||
msgstr "Compte XenForo activé"
|
||||
|
||||
#: allianceauth/services/modules/xenforo/views.py:40
|
||||
#: allianceauth/services/modules/xenforo/views.py:52
|
||||
#: allianceauth/services/modules/xenforo/views.py:73
|
||||
#: allianceauth/services/modules/xenforo/views.py:94
|
||||
msgid "An error occurred while processing your XenForo account."
|
||||
msgstr ""
|
||||
msgstr "Une erreur est survenue durant la gestion de votre compte XenForo."
|
||||
|
||||
#: allianceauth/services/modules/xenforo/views.py:50
|
||||
msgid "Deactivated XenForo account."
|
||||
@@ -1716,7 +1718,7 @@ msgstr ""
|
||||
|
||||
#: allianceauth/services/templates/services/services.html:10
|
||||
msgid "Available Services"
|
||||
msgstr ""
|
||||
msgstr "Services disponibles"
|
||||
|
||||
#: allianceauth/services/templates/services/services.html:15
|
||||
msgid "Service"
|
||||
@@ -1746,15 +1748,15 @@ msgstr "Information additionnelle"
|
||||
|
||||
#: allianceauth/srp/form.py:16
|
||||
msgid "Killboard Link (zkillboard.com or kb.evetools.org)"
|
||||
msgstr ""
|
||||
msgstr "Lien ZkillBoard ()"
|
||||
|
||||
#: allianceauth/srp/form.py:34
|
||||
msgid "Invalid Link. Please use zkillboard.com or kb.evetools.org"
|
||||
msgstr ""
|
||||
msgstr "Lien non valide. Veuillez utiliser zkillboard.com ou kb.evetools.org"
|
||||
|
||||
#: allianceauth/srp/form.py:46
|
||||
msgid "Invalid Link. Please post a direct link to a killmail."
|
||||
msgstr ""
|
||||
msgstr "Lien non valide. Veuillez poster un lien direct vers un Killmail."
|
||||
|
||||
#: allianceauth/srp/form.py:53
|
||||
msgid "After Action Report Link"
|
||||
@@ -1762,12 +1764,12 @@ msgstr ""
|
||||
|
||||
#: allianceauth/srp/templates/srp/add.html:6
|
||||
msgid "SRP Fleet Create"
|
||||
msgstr ""
|
||||
msgstr "SRP de flotte crée"
|
||||
|
||||
#: allianceauth/srp/templates/srp/add.html:14
|
||||
#: allianceauth/srp/templates/srp/add.html:24
|
||||
msgid "Create SRP Fleet"
|
||||
msgstr ""
|
||||
msgstr "Créer SRP de flotte"
|
||||
|
||||
#: allianceauth/srp/templates/srp/add.html:27
|
||||
msgid "Give this link to the line members"
|
||||
@@ -1775,15 +1777,15 @@ msgstr "Donner ce lien aux membres de la flotte"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:52
|
||||
msgid "SRP Fleet Data"
|
||||
msgstr ""
|
||||
msgstr "Données de flotte SRP"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:57
|
||||
msgid "Mark Incomplete"
|
||||
msgstr ""
|
||||
msgstr "Marquer incomplet"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:61
|
||||
msgid "Mark Completed"
|
||||
msgstr ""
|
||||
msgstr "Marquer Complet"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:73
|
||||
#: allianceauth/srp/templates/srp/data.html:160
|
||||
@@ -1799,7 +1801,7 @@ msgstr "Coût en ISK total:"
|
||||
#: allianceauth/srp/templates/srp/data.html:82
|
||||
#: allianceauth/srp/templates/srp/data.html:169
|
||||
msgid "Are you sure you want to delete SRP requests?"
|
||||
msgstr ""
|
||||
msgstr "Êtes-vous sûr de vouloir supprimer la requête de SRP ?"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:91
|
||||
msgid "Pilot Name"
|
||||
@@ -1819,11 +1821,13 @@ msgstr "Valeur des pertes zKillboard"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:96
|
||||
msgid "SRP ISK Cost"
|
||||
msgstr ""
|
||||
msgstr "Coût en ISK SRP"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:97
|
||||
msgid "Click value to edit Enter to save & next ESC to cancel"
|
||||
msgstr ""
|
||||
"Cliquez sur la valeur pour modifier, Entrée pour enregistrer & Échap pour "
|
||||
"annuler"
|
||||
|
||||
#: allianceauth/srp/templates/srp/data.html:100
|
||||
msgid "Post Time"
|
||||
@@ -2045,11 +2049,13 @@ msgstr ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:76
|
||||
msgid "Task Queue"
|
||||
msgstr ""
|
||||
msgstr "File d'attente des tâches"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:93
|
||||
msgid "Error retrieving task queue length"
|
||||
msgstr ""
|
||||
"Erreur lors de la récupération de la longueur de la file d'attente des "
|
||||
"tâches"
|
||||
|
||||
#: allianceauth/templates/allianceauth/admin-status/overview.html:95
|
||||
#, python-format
|
||||
@@ -2060,7 +2066,7 @@ msgstr[1] ""
|
||||
|
||||
#: allianceauth/templates/allianceauth/night-toggle.html:6
|
||||
msgid "Night Mode"
|
||||
msgstr ""
|
||||
msgstr "Mode Nuit"
|
||||
|
||||
#: allianceauth/templates/allianceauth/top-menu-admin.html:9
|
||||
msgid "Admin"
|
||||
@@ -2077,7 +2083,7 @@ msgstr ""
|
||||
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:10
|
||||
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:14
|
||||
msgid "User Menu"
|
||||
msgstr ""
|
||||
msgstr "Menu Utilisateur"
|
||||
|
||||
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:56
|
||||
msgid "Logout"
|
||||
@@ -2125,7 +2131,7 @@ msgstr "Type de structure"
|
||||
|
||||
#: allianceauth/timerboard/form.py:62
|
||||
msgid "Timer Type"
|
||||
msgstr ""
|
||||
msgstr "Type de timer"
|
||||
|
||||
#: allianceauth/timerboard/form.py:63
|
||||
#: allianceauth/timerboard/templates/timerboard/view.html:33
|
||||
@@ -2156,31 +2162,31 @@ msgstr "Limité à la Corporation"
|
||||
|
||||
#: allianceauth/timerboard/models.py:14
|
||||
msgid "Not Specified"
|
||||
msgstr ""
|
||||
msgstr "Non Spécifié"
|
||||
|
||||
#: allianceauth/timerboard/models.py:15
|
||||
msgid "Shield"
|
||||
msgstr ""
|
||||
msgstr "Bouclier"
|
||||
|
||||
#: allianceauth/timerboard/models.py:16
|
||||
msgid "Armor"
|
||||
msgstr ""
|
||||
msgstr "Armure"
|
||||
|
||||
#: allianceauth/timerboard/models.py:17
|
||||
msgid "Hull"
|
||||
msgstr ""
|
||||
msgstr "Coque"
|
||||
|
||||
#: allianceauth/timerboard/models.py:18
|
||||
msgid "Final"
|
||||
msgstr ""
|
||||
msgstr "Final"
|
||||
|
||||
#: allianceauth/timerboard/models.py:19
|
||||
msgid "Anchoring"
|
||||
msgstr ""
|
||||
msgstr "Ancrage"
|
||||
|
||||
#: allianceauth/timerboard/models.py:20
|
||||
msgid "Unanchoring"
|
||||
msgstr ""
|
||||
msgstr "Désancrage"
|
||||
|
||||
#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:11
|
||||
msgid "Delete Timer"
|
||||
|
||||
@@ -13,7 +13,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-10-26 18:36+1000\n"
|
||||
"POT-Creation-Date: 2021-10-30 14:36+1000\n"
|
||||
"PO-Revision-Date: 2020-02-18 03:14+0000\n"
|
||||
"Last-Translator: Aaron BuBu <351793078@qq.com>, 2020\n"
|
||||
"Language-Team: Chinese Simplified (https://www.transifex.com/alliance-auth/teams/107430/zh-Hans/)\n"
|
||||
@@ -39,12 +39,12 @@ msgstr "只有主要角色才能执行这个操作。在下面添加一个"
|
||||
msgid "Email"
|
||||
msgstr "电子邮箱"
|
||||
|
||||
#: allianceauth/authentication/models.py:74
|
||||
#: allianceauth/authentication/models.py:79
|
||||
#, python-format
|
||||
msgid "State changed to: %s"
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/models.py:75
|
||||
#: allianceauth/authentication/models.py:80
|
||||
#, python-format
|
||||
msgid "Your user's state is now: %(state)s"
|
||||
msgstr ""
|
||||
@@ -63,29 +63,29 @@ msgid ""
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:81
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:102
|
||||
msgid "No main character set."
|
||||
msgstr "没有主要角色组"
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:88
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:109
|
||||
msgid "Add Character"
|
||||
msgstr "添加角色"
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:92
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:113
|
||||
msgid "Change Main"
|
||||
msgstr "修改主要角色"
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:101
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:122
|
||||
msgid "Group Memberships"
|
||||
msgstr "用户组成员"
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:121
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:142
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticscorpview.html:23
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:41
|
||||
msgid "Characters"
|
||||
msgstr "角色"
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:129
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:150
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:73
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24
|
||||
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:15
|
||||
@@ -94,13 +94,13 @@ msgstr "角色"
|
||||
msgid "Name"
|
||||
msgstr "角色名"
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:130
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:151
|
||||
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:23
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:46
|
||||
msgid "Corp"
|
||||
msgstr "所在公司"
|
||||
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:131
|
||||
#: allianceauth/authentication/templates/authentication/dashboard.html:152
|
||||
#: allianceauth/corputils/templates/corputils/corpstats.html:76
|
||||
#: allianceauth/hrapplications/templates/hrapplications/view.html:47
|
||||
msgid "Alliance"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from allianceauth.optimer.models import OpTimer
|
||||
from allianceauth.optimer.models import OpTimer, OpTimerType
|
||||
|
||||
admin.site.register(OpTimerType)
|
||||
admin.site.register(OpTimer)
|
||||
|
||||
@@ -1,11 +1,34 @@
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from allianceauth.optimer.form_widgets import DataListWidget
|
||||
|
||||
|
||||
class OpForm(forms.Form):
|
||||
"""
|
||||
Create/Edit Fleet Operation Form
|
||||
"""
|
||||
|
||||
doctrine = forms.CharField(max_length=254, required=True, label=_('Doctrine'))
|
||||
system = forms.CharField(max_length=254, required=True, label=_("System"))
|
||||
start = forms.DateTimeField(required=True, label=_("Start Time"))
|
||||
duration = forms.CharField(max_length=254, required=True, label=_("Duration"))
|
||||
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"))
|
||||
description = forms.CharField(
|
||||
widget=forms.Textarea(attrs={"rows": 10, "cols": 20, "input_type": "textarea"}),
|
||||
required=False,
|
||||
label=_("Additional Info"),
|
||||
help_text=_("(Optional) Describe the operation with a couple of short words."),
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
_data_list = kwargs.pop('data_list', None)
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
# Add the DataListWidget to our type field
|
||||
self.fields['type'].widget = DataListWidget(
|
||||
data_list=_data_list, name='data-list'
|
||||
)
|
||||
|
||||
45
allianceauth/optimer/form_widgets.py
Normal file
45
allianceauth/optimer/form_widgets.py
Normal file
@@ -0,0 +1,45 @@
|
||||
"""
|
||||
Form Widgets
|
||||
"""
|
||||
|
||||
from django import forms
|
||||
|
||||
|
||||
class DataListWidget(forms.TextInput):
|
||||
"""
|
||||
DataListWidget
|
||||
|
||||
Draws an HTML5 datalist form field
|
||||
"""
|
||||
|
||||
def __init__(self, data_list, name, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
self._name = name
|
||||
self._list = data_list
|
||||
self.attrs.update({"list": "list__%s" % self._name})
|
||||
|
||||
def render(self, name, value, attrs=None, renderer=None):
|
||||
"""
|
||||
Render the DataList
|
||||
:param name:
|
||||
:type name:
|
||||
:param value:
|
||||
:type value:
|
||||
:param attrs:
|
||||
:type attrs:
|
||||
:param renderer:
|
||||
:type renderer:
|
||||
:return:
|
||||
:rtype:
|
||||
"""
|
||||
|
||||
text_html = super().render(name, value, attrs=attrs)
|
||||
data_list = '<datalist id="list__%s">' % self._name
|
||||
|
||||
for item in self._list:
|
||||
data_list += '<option value="%s">' % item
|
||||
|
||||
data_list += "</datalist>"
|
||||
|
||||
return text_html + data_list
|
||||
@@ -0,0 +1,50 @@
|
||||
# Generated by Django 3.2.8 on 2021-10-26 16:20
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("optimer", "0004_on_delete"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="OpTimerType",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("type", models.CharField(default="", max_length=254)),
|
||||
],
|
||||
options={
|
||||
"ordering": ["type"],
|
||||
"default_permissions": (),
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name="optimer",
|
||||
options={"default_permissions": (), "ordering": ["start"]},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="optimer",
|
||||
name="description",
|
||||
field=models.TextField(blank=True, default=""),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="optimer",
|
||||
name="type",
|
||||
field=models.ForeignKey(
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
to="optimer.optimertype",
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -6,9 +6,25 @@ from django.utils import timezone
|
||||
from allianceauth.eveonline.models import EveCharacter
|
||||
|
||||
|
||||
class OpTimerType(models.Model):
|
||||
"""
|
||||
Optimer Type
|
||||
"""
|
||||
|
||||
type = models.CharField(max_length=254, default="")
|
||||
|
||||
def __str__(self):
|
||||
return self.type
|
||||
|
||||
class Meta:
|
||||
ordering = ['type']
|
||||
default_permissions = ()
|
||||
|
||||
|
||||
class OpTimer(models.Model):
|
||||
class Meta:
|
||||
ordering = ['start']
|
||||
default_permissions = ()
|
||||
|
||||
doctrine = models.CharField(max_length=254, default="")
|
||||
system = models.CharField(max_length=254, default="")
|
||||
@@ -17,7 +33,10 @@ class OpTimer(models.Model):
|
||||
operation_name = models.CharField(max_length=254, default="")
|
||||
fc = models.CharField(max_length=254, default="")
|
||||
post_time = models.DateTimeField(default=timezone.now)
|
||||
eve_character = models.ForeignKey(EveCharacter, null=True, on_delete=models.SET_NULL)
|
||||
eve_character = models.ForeignKey(EveCharacter, null=True,
|
||||
on_delete=models.SET_NULL)
|
||||
description = models.TextField(blank=True, default="")
|
||||
type = models.ForeignKey(OpTimerType, null=True, on_delete=models.SET_NULL)
|
||||
|
||||
def __str__(self):
|
||||
return self.operation_name
|
||||
|
||||
@@ -6,37 +6,48 @@
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-center col-lg-3">{% translate "Operation Name" %}</th>
|
||||
<th class="text-center col lg-2">{% translate "Doctrine" %}</th>
|
||||
<th class="text-center col-lg-1">{% translate "Form Up System" %}</th>
|
||||
<th class="text-center col-lg-1">{% translate "Start Time" %}</th>
|
||||
<th class="text-center col-lg-1">{% translate "Local Time" %}</th>
|
||||
<th class="text-center col-lg-1">{% translate "Duration" %}</th>
|
||||
<th class="text-center col-lg-1">{% translate "FC" %}</th>
|
||||
<th>{% translate "Operation Name" %}</th>
|
||||
<th>{% translate "Description" %}</th>
|
||||
<th>{% translate "Doctrine" %}</th>
|
||||
<th>{% translate "Form Up System" %}</th>
|
||||
<th>{% translate "Start Time" %}</th>
|
||||
<th>{% translate "Local Time" %}</th>
|
||||
<th>{% translate "Duration" %}</th>
|
||||
<th>{% translate "FC" %}</th>
|
||||
{% if perms.auth.optimer_management %}
|
||||
<th class="text-center col-lg-1">{% translate "Creator" %}</th>
|
||||
<th class="text-center col-lg-2">{% translate "Action" %}</th>
|
||||
{# <th>{% translate "Creator" %}</th>#}
|
||||
<th class="text-right" style="width: 150px;">{% translate "Action" %}</th>
|
||||
{% endif %}
|
||||
</tr>
|
||||
</thead>
|
||||
{% for ops in timers %}
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="text-center">{{ ops.operation_name }}</td>
|
||||
<td class="text-center">{{ ops.doctrine }}</td>
|
||||
<td class="text-center">
|
||||
<td>
|
||||
{{ ops.operation_name }}
|
||||
{% if ops.type %}
|
||||
<br>({{ ops.type }})
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ ops.description }}</td>
|
||||
<td>{{ ops.doctrine }}</td>
|
||||
<td>
|
||||
<a href="{{ ops.system|dotlan_solar_system_url }}">{{ ops.system }}</a>
|
||||
</td>
|
||||
<td class="text-center" nowrap>{{ ops.start | date:"Y-m-d H:i" }}</td>
|
||||
<td class="text-center" nowrap><div id="localtime{{ ops.id }}"></div><div id="countdown{{ ops.id }}"></div></td>
|
||||
<td class="text-center">{{ ops.duration }}</td>
|
||||
<td class="text-center">{{ ops.fc }}</td>
|
||||
<td nowrap>{{ ops.start | date:"Y-m-d H:i" }}</td>
|
||||
<td nowrap><div id="localtime{{ ops.id }}"></div><div id="countdown{{ ops.id }}"></div></td>
|
||||
<td>{{ ops.duration }}</td>
|
||||
<td>{{ ops.fc }}</td>
|
||||
{% if perms.auth.optimer_management %}
|
||||
<td class="text-center">{{ ops.eve_character }}</td>
|
||||
<td class="text-center">
|
||||
{# <td>{{ ops.eve_character }}</td>#}
|
||||
<td class="text-right">
|
||||
<a href="{% url 'optimer:remove' ops.id %}" class="btn btn-danger">
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
</a><a href="{% url 'optimer:edit' ops.id %}" class="btn btn-info"><span class="glyphicon glyphicon-pencil"></span></a>
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'optimer:edit' ops.id %}" class="btn btn-info">
|
||||
<span class="glyphicon glyphicon-pencil"></span>
|
||||
</a>
|
||||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
|
||||
@@ -24,14 +24,14 @@
|
||||
<br />
|
||||
</div>
|
||||
|
||||
<h4><b>{% translate "Next Timers" %}</b></h4>
|
||||
<h4><b>{% translate "Next Fleet Operations" %}</b></h4>
|
||||
{% if future_timers %}
|
||||
{% include "optimer/fleetoptable.html" with timers=future_timers %}
|
||||
{% else %}
|
||||
<div class="alert alert-warning text-center">{% translate "No upcoming timers." %}</div>
|
||||
{% endif %}
|
||||
|
||||
<h4><b>{% translate "Past Timers" %}</b></h4>
|
||||
<h4><b>{% translate "Past Fleet Operations" %}</b></h4>
|
||||
{% if past_timers %}
|
||||
{% include "optimer/fleetoptable.html" with timers=past_timers %}
|
||||
{% else %}
|
||||
|
||||
@@ -9,7 +9,7 @@ from django.utils import timezone
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from .form import OpForm
|
||||
|
||||
from .models import OpTimer
|
||||
from .models import OpTimer, OpTimerType
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -18,7 +18,7 @@ logger = logging.getLogger(__name__)
|
||||
@permission_required('auth.optimer_view')
|
||||
def optimer_view(request):
|
||||
logger.debug("optimer_view called by user %s" % request.user)
|
||||
base_query = OpTimer.objects.select_related('eve_character')
|
||||
base_query = OpTimer.objects.select_related('eve_character', 'type')
|
||||
render_items = {'optimer': base_query.all(),
|
||||
'future_timers': base_query.filter(
|
||||
start__gte=timezone.now()),
|
||||
@@ -33,9 +33,21 @@ def optimer_view(request):
|
||||
def add_optimer_view(request):
|
||||
logger.debug("add_optimer_view called by user %s" % request.user)
|
||||
if request.method == 'POST':
|
||||
form = OpForm(request.POST)
|
||||
form = OpForm(request.POST, data_list=OpTimerType.objects.all())
|
||||
logger.debug("Request type POST contains form valid: %s" % form.is_valid())
|
||||
if form.is_valid():
|
||||
optimer_type = None
|
||||
|
||||
if form.cleaned_data['type'] != '':
|
||||
try:
|
||||
optimer_type = OpTimerType.objects.get(
|
||||
type__iexact=form.cleaned_data['type']
|
||||
)
|
||||
except OpTimerType.DoesNotExist:
|
||||
optimer_type = OpTimerType.objects.create(
|
||||
type=form.cleaned_data['type']
|
||||
)
|
||||
|
||||
# Get Current Time
|
||||
post_time = timezone.now()
|
||||
# Get character
|
||||
@@ -50,13 +62,15 @@ def add_optimer_view(request):
|
||||
op.fc = form.cleaned_data['fc']
|
||||
op.create_time = post_time
|
||||
op.eve_character = character
|
||||
op.type = optimer_type
|
||||
op.description = form.cleaned_data['description']
|
||||
op.save()
|
||||
logger.info(f"User {request.user} created op timer with name {op.operation_name}")
|
||||
messages.success(request, _('Created operation timer for %(opname)s.') % {"opname": op.operation_name})
|
||||
return redirect("optimer:view")
|
||||
else:
|
||||
logger.debug("Returning new opForm")
|
||||
form = OpForm()
|
||||
form = OpForm(data_list=OpTimerType.objects.all())
|
||||
|
||||
render_items = {'form': form}
|
||||
|
||||
@@ -80,10 +94,23 @@ def edit_optimer(request, optimer_id):
|
||||
logger.debug(f"edit_optimer called by user {request.user} for optimer id {optimer_id}")
|
||||
op = get_object_or_404(OpTimer, id=optimer_id)
|
||||
if request.method == 'POST':
|
||||
form = OpForm(request.POST)
|
||||
form = OpForm(request.POST, data_list=OpTimerType.objects.all())
|
||||
logger.debug("Received POST request containing update optimer form, is valid: %s" % form.is_valid())
|
||||
if form.is_valid():
|
||||
character = request.user.profile.main_character
|
||||
|
||||
optimer_type = None
|
||||
|
||||
if form.cleaned_data['type'] != '':
|
||||
try:
|
||||
optimer_type = OpTimerType.objects.get(
|
||||
type__iexact=form.cleaned_data['type']
|
||||
)
|
||||
except OpTimerType.DoesNotExist:
|
||||
optimer_type = OpTimerType.objects.create(
|
||||
type=form.cleaned_data['type']
|
||||
)
|
||||
|
||||
op.doctrine = form.cleaned_data['doctrine']
|
||||
op.system = form.cleaned_data['system']
|
||||
op.start = form.cleaned_data['start']
|
||||
@@ -91,6 +118,8 @@ def edit_optimer(request, optimer_id):
|
||||
op.operation_name = form.cleaned_data['operation_name']
|
||||
op.fc = form.cleaned_data['fc']
|
||||
op.eve_character = character
|
||||
op.type = optimer_type
|
||||
op.description = form.cleaned_data['description']
|
||||
logger.info(f"User {request.user} updating optimer id {optimer_id} ")
|
||||
op.save()
|
||||
messages.success(request, _('Saved changes to operation timer for %(opname)s.') % {"opname": op.operation_name})
|
||||
@@ -103,6 +132,8 @@ def edit_optimer(request, optimer_id):
|
||||
'duration': op.duration,
|
||||
'operation_name': op.operation_name,
|
||||
'fc': op.fc,
|
||||
'description': op.description,
|
||||
'type': op.type
|
||||
}
|
||||
form = OpForm(initial=data)
|
||||
form = OpForm(initial=data, data_list=OpTimerType.objects.all())
|
||||
return render(request, 'optimer/update.html', context={'form': form})
|
||||
|
||||
@@ -5,7 +5,7 @@ import requests
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from allianceauth import NAME
|
||||
from allianceauth.eveonline.providers import provider
|
||||
from allianceauth.srp.providers import esi
|
||||
|
||||
from .models import SrpUserRequest
|
||||
|
||||
@@ -32,8 +32,7 @@ class SRPManager:
|
||||
if result:
|
||||
killmail_id = result['killmail_id']
|
||||
killmail_hash = result['zkb']['hash']
|
||||
c = provider.client
|
||||
km = c.Killmails.get_killmails_killmail_id_killmail_hash(
|
||||
km = esi.client.Killmails.get_killmails_killmail_id_killmail_hash(
|
||||
killmail_id=killmail_id,
|
||||
killmail_hash=killmail_hash
|
||||
).result()
|
||||
|
||||
18
allianceauth/srp/providers.py
Normal file
18
allianceauth/srp/providers.py
Normal file
@@ -0,0 +1,18 @@
|
||||
import os
|
||||
from esi.clients import EsiClientProvider
|
||||
|
||||
from allianceauth import __version__
|
||||
|
||||
SWAGGER_SPEC = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'swagger.json')
|
||||
|
||||
"""
|
||||
Swagger spec operations:
|
||||
get_killmails_killmail_id_killmail_hash
|
||||
get_universe_types_type_id
|
||||
"""
|
||||
|
||||
|
||||
esi = EsiClientProvider(
|
||||
spec_file=SWAGGER_SPEC,
|
||||
app_info_text=("allianceauth v" + __version__)
|
||||
)
|
||||
1
allianceauth/srp/swagger.json
Normal file
1
allianceauth/srp/swagger.json
Normal file
File diff suppressed because one or more lines are too long
@@ -36,7 +36,7 @@ class TestSrpManager(TestCase):
|
||||
expected = 81973979
|
||||
self.assertEqual(int(SRPManager.get_kill_id(link)), expected)
|
||||
|
||||
@patch(MODULE_PATH + '.provider')
|
||||
@patch(MODULE_PATH + '.esi')
|
||||
@patch(MODULE_PATH + '.requests.get')
|
||||
def test_can_get_kill_data(self, mock_get, mock_provider):
|
||||
mock_get.return_value.json.return_value = load_data(
|
||||
@@ -60,7 +60,7 @@ class TestSrpManager(TestCase):
|
||||
with self.assertRaises(ValueError):
|
||||
SRPManager.get_kill_data(81973979)
|
||||
|
||||
@patch(MODULE_PATH + '.provider')
|
||||
@patch(MODULE_PATH + '.esi')
|
||||
@patch(MODULE_PATH + '.requests.get')
|
||||
def test_invalid_id_for_esi_raises_exception(
|
||||
self, mock_get, mock_provider
|
||||
|
||||
@@ -11,7 +11,7 @@ from django.utils import timezone
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.db.models import Sum
|
||||
from allianceauth.authentication.decorators import permissions_required
|
||||
from allianceauth.eveonline.providers import provider
|
||||
from allianceauth.srp.providers import esi
|
||||
from allianceauth.notifications import notify
|
||||
from .form import SrpFleetMainForm
|
||||
from .form import SrpFleetMainUpdateForm
|
||||
@@ -201,7 +201,8 @@ def srp_request_view(request, fleet_srp):
|
||||
return redirect("srp:management")
|
||||
|
||||
if request.user.character_ownerships.filter(character__character_id=str(victim_id)).exists():
|
||||
srp_request.srp_ship_name = provider.get_itemtype(ship_type_id).name
|
||||
item_type = esi.client.Universe.get_universe_types_type_id(type_id=ship_type_id).result()
|
||||
srp_request.srp_ship_name = item_type['name']
|
||||
srp_request.kb_total_loss = ship_value
|
||||
srp_request.post_time = post_time
|
||||
srp_request.save()
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
// Alliance Auth customisations of the bootswatch Darkly theme
|
||||
// To build a new CSS file you need to `npm install -g less less-plugin-clean-css`
|
||||
// Then `lessc --clean-css darkly.less darkly.min.css`
|
||||
// Then `lessc --clean-css="--advanced" darkly.less darkly.min.css`
|
||||
|
||||
@import "https://raw.githubusercontent.com/thomaspark/bootswatch/v3/bower_components/bootstrap/less/bootstrap.less";
|
||||
@import "https://raw.githubusercontent.com/thomaspark/bootswatch/v3/darkly/variables.less";
|
||||
@import "https://raw.githubusercontent.com/thomaspark/bootswatch/v3/darkly/bootswatch.less";
|
||||
@import "https://raw.githubusercontent.com/thomaspark/bootswatch/fa207fbbc80bd74339e179b054a322b092be98f6/darkly/bootswatch.less";
|
||||
@import "../bootstrap-locals.less";
|
||||
@import "../flatly-shared.less";
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,10 +1,10 @@
|
||||
// Alliance Auth customisations of the bootswatch Flatly theme
|
||||
// To build a new CSS file you need to `npm install -g less less-plugin-clean-css`
|
||||
// Then `lessc --clean-css flatly.less flatly.min.css`
|
||||
// Then `lessc --clean-css="--advanced" flatly.less flatly.min.css`
|
||||
|
||||
@import "https://raw.githubusercontent.com/thomaspark/bootswatch/v3/bower_components/bootstrap/less/bootstrap.less";
|
||||
@import "https://raw.githubusercontent.com/thomaspark/bootswatch/v3/flatly/variables.less";
|
||||
@import "https://raw.githubusercontent.com/thomaspark/bootswatch/v3/flatly/bootswatch.less";
|
||||
@import "https://raw.githubusercontent.com/thomaspark/bootswatch/fa207fbbc80bd74339e179b054a322b092be98f6/flatly/bootswatch.less";
|
||||
@import "../bootstrap-locals.less";
|
||||
@import "../flatly-shared.less";
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -4,15 +4,14 @@
|
||||
{% if debug %}
|
||||
<!-- In template debug, loading less file instead of CSS -->
|
||||
<link rel="stylesheet/less" type="text/css" href="{% static 'css/themes/darkly/darkly.less' %}" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/less.js/2.7.3/less.min.js"></script>
|
||||
{% else %}
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/less.js/4.1.2/less.min.js" integrity="sha512-eXBn7AaMbUOWb3PSDhwcjByoM89FeO1SF9Jww6kqPYQkBrGZvqAKFbtqLHh5O95rYA/AOtWZ0QRO2S6rP+KsUw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> {% else %}
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'css/themes/darkly/darkly.min.css' %}" />
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if debug %}
|
||||
<!-- In template debug, loading less file instead of CSS -->
|
||||
<link rel="stylesheet/less" type="text/css" href="{% static 'css/themes/flatly/flatly.less' %}" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/less.js/2.7.3/less.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/less.js/4.1.2/less.min.js" integrity="sha512-eXBn7AaMbUOWb3PSDhwcjByoM89FeO1SF9Jww6kqPYQkBrGZvqAKFbtqLHh5O95rYA/AOtWZ0QRO2S6rP+KsUw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
{% else %}
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'css/themes/flatly/flatly.min.css' %}" />
|
||||
{% endif %}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!-- Start Bootstrap + jQuery js from cdnjs -->
|
||||
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
|
||||
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha512-oBTprMeNEKCnqfuqKd6sbvFzmFQtlXS3e0C/RGFV0hD6QzhHV+ODfaQbAlmY6/q0ubbwlAM/nCJjkrgA3waLzg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<!-- End Bootstrap + jQuery js from cdnjs -->
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<!-- Start Datatables-css from cdnjs -->
|
||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/css/dataTables.bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/css/dataTables.bootstrap.min.css" integrity="sha512-BMbq2It2D3J17/C7aRklzOODG1IQ3+MHw3ifzBHMBwGO/0yUqYmsStgBjI0z5EYlaDEFnvYV7gNYdD3vFLRKsA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||
<!-- End Datatables-css from cdnjs -->
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!-- Start Datatables-js from cdnjs -->
|
||||
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/js/jquery.dataTables.min.js"></script>
|
||||
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/js/dataTables.bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/js/jquery.dataTables.min.js" integrity="sha512-BkpSL20WETFylMrcirBahHfSnY++H2O1W+UnEEO4yNIl+jI2+zowyoGJpbtk6bx97fBXf++WJHSSK2MV4ghPcg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/js/dataTables.bootstrap.min.js" integrity="sha512-F0E+jKGaUC90odiinxkfeS3zm9uUT1/lpusNtgXboaMdA3QFMUez0pBmAeXGXtGxoGZg3bLmrkSkbK1quua4/Q==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<!-- End Datatables-js from cdnjs -->
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<!-- Start FontAwesome CSS from cdnjs -->
|
||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" integrity="sha512-1ycn6IcaQQ40/MKBW2W4Rhis/DbILU74C1vSrLJxCq57o941Ym01SwNsOMqvEBFlcgUa6xLiPY/NS5R+E6ztJQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||
<!-- End FontAwesome CSS from cdnjs -->
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<!-- Start jQuery-DateTimePicker CSS from cdnjs -->
|
||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.min.css" integrity="sha512-f0tzWhCwVFS3WeYaofoLWkTP62ObhewQ1EZn65oSYDZUg1+CyywGKkWzm8BxaJj5HGKI72PnMH9jYyIFz+GH7g==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||
<!-- End jQuery-DateTimePicker CSS from cdnjs -->
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<!-- Start jQuery-DateTimePicker JS from cdnjs -->
|
||||
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.full.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.full.min.js" integrity="sha512-AIOTidJAcHBH2G/oZv9viEGXRqDNmfdPVPYOYKGy3fti0xIplnlgMHUGfuNRzC6FkzIo0iIxgFnr9RikFxK+sw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<!-- End jQuery-DateTimePicker JS from cdnjs -->
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{% load static %}
|
||||
<!-- Start jQuery visibility js -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-visibility/1.0.11/jquery-visibility.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-visibility/1.0.11/jquery-visibility.min.js" integrity="sha512-kL8M4N4KLFJ4ydyfbBiXU1InCR6zs8jm8NR1BXykgFmMhVO3RS9bvoMHnVwoPe+i6NRvfydNlweatKee85Df3A==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<!-- End jQuery visibility js -->
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!-- Start Moment.js from cdnjs -->
|
||||
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js" integrity="sha512-qTXRIMyZIFb8iQcfjXWCO8+M5Tbc38Qi5WzdPOYZHIlZpzBHG3L3by84BBBOiRGiEb7KKtAOAs5qYdUiZiQNNQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
{% if locale and LANGUAGE_CODE != 'en' %}
|
||||
<!-- Moment.JS Not EN-en -->
|
||||
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/locale/{{ LANGUAGE_CODE }}.js"></script>
|
||||
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/locale/{{ LANGUAGE_CODE }}.js"></script>
|
||||
{% endif %}
|
||||
<!-- End Moment JS from cdnjs -->
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<!-- Start X-editable JS from cdnjs -->
|
||||
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/x-editable/1.5.1/bootstrap3-editable/js/bootstrap-editable.min.js"></script>
|
||||
<<script src="https://cdnjs.cloudflare.com/ajax/libs/x-editable/1.5.1/bootstrap3-editable/js/bootstrap-editable.min.js" integrity="sha512-Mvqhe3YIUElH6VT0CFmUeRgYMrLvCGd2mvYCnJOf2nL9FvRBK74qRgTn7u0zSqA5cHiGxy83bwuhl1ASbS9M/w==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<!-- End X-editable JS from cdnjs -->
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<!-- Start X-editable CSS from cdnjs -->
|
||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/x-editable/1.5.1/bootstrap3-editable/css/bootstrap-editable.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/x-editable/1.5.1/bootstrap3-editable/css/bootstrap-editable.css" integrity="sha512-e0rbO6UJET0zDdXOHjwc6D44UpeKumn7cU7XR/fa4S0/Jso0bZqcCqlIF6mtvcimMbf846mkv8aSWFnTwABr/g==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||
<!-- End X-editable CSS from cdnjs -->
|
||||
|
||||
4
setup.py
4
setup.py
@@ -15,14 +15,14 @@ install_requires = [
|
||||
'python-slugify>=1.2',
|
||||
'requests-oauthlib',
|
||||
'semantic_version',
|
||||
'packaging>=20.1,<21',
|
||||
'packaging>=21.0,<22',
|
||||
'beautifulsoup4',
|
||||
|
||||
'redis>=3.3.1,<4.0.0',
|
||||
'celery>=4.3.0,<6.0.0,!=4.4.4', # 4.4.4 is missing a dependency
|
||||
'celery_once>=2.0.1',
|
||||
|
||||
'django>=3.2.7,<4.0.0',
|
||||
'django>=3.2.8,<4.0.0',
|
||||
'django-bootstrap-form',
|
||||
'django-registration>=3.1',
|
||||
'django-sortedm2m',
|
||||
|
||||
Reference in New Issue
Block a user