Compare commits

..

26 Commits

Author SHA1 Message Date
John Turner
7c0a0c6aeb Merge branch 'master' into 'master'
Added a link/button on the TS page that will show/hide instructions if the...

See merge request allianceauth/allianceauth!1618
2025-05-12 03:46:10 +00:00
Ariel Rin
54910746e3 Merge branch 'bootstrap-class-fixes' into 'master'
[FIX] BG color classes

See merge request allianceauth/allianceauth!1716
2025-05-06 02:03:56 +00:00
Ariel Rin
07ae68333d Merge branch 'improve-add-character-icon' into 'master'
[CHANGE] Better "Add Character" Icon

See merge request allianceauth/allianceauth!1720
2025-05-06 02:03:50 +00:00
Ariel Rin
69e70a4c9b Merge branch '1426-fix-srp-datatable-warning' into 'master'
[FIX] SRP Datatable Warning about incorrect column count

Closes #1426

See merge request allianceauth/allianceauth!1721
2025-05-06 02:03:44 +00:00
Peter Pfeufer
b55f11ee74
[FIX] SRP Datatable Warning about incorrect column count
This was triggered by an incorrect column count due to missing permissions, or not taking missing permissions into account when loading the page and setting up the non-orderable columns.

Fixes #1426
2025-05-05 01:49:40 +02:00
Peter Pfeufer
94ee3c0203
[CHANGE] Better "Add Character" Icon 2025-05-02 01:06:26 +02:00
Peter Pfeufer
25cf329a50
[FIX] BG color classes
Use `text-bg-*` instead of just `bg-*` to make use of Bootstraps native text color selection for those backgrounds.
2025-04-29 07:39:11 +02:00
Ariel Rin
b02827cb3f Merge branch 'translations_7f31a07ccd4e4a66b1dd7b6bc2dbddb5' into 'master'
Updates for project Alliance Auth

See merge request allianceauth/allianceauth!1699
2025-04-29 02:57:50 +00:00
Ariel Rin
2bcc0570ad Updates for project Alliance Auth 2025-04-29 02:57:50 +00:00
Ariel Rin
a3ea0c65a1 Merge branch 'timerboard-skyhooks' into 'master'
Add a new `theft` timer type for skyhooks

See merge request allianceauth/allianceauth!1708
2025-04-29 02:52:38 +00:00
Ariel Rin
5e526da11c Merge branch 'add-apply_offset-to-esi_cleanup_token-task' into 'master'
[ADD] `apply_offset` to `esi_cleanup_token` task

See merge request allianceauth/allianceauth!1709
2025-04-29 02:49:56 +00:00
Ariel Rin
5c79265f90 Merge branch 'services-grid' into 'master'
[FIX] Top margin for service controls

See merge request allianceauth/allianceauth!1711
2025-04-29 02:48:11 +00:00
Ariel Rin
eb0134e716 Merge branch 'menu-separator' into 'master'
[ADD] Menu separator

See merge request allianceauth/allianceauth!1712
2025-04-29 02:48:00 +00:00
Ariel Rin
afde1f4729 Merge branch 'typehint-object-managers' into 'master'
Typehint object managers

See merge request allianceauth/allianceauth!1713
2025-04-29 02:47:12 +00:00
Ariel Rin
5c6dda0eac Typehint object managers 2025-04-29 02:47:11 +00:00
Ariel Rin
af453bc772 Merge branch 'aa_i18n-addition' into 'master'
[ADD] Temaplatetag for path relative to `static`

See merge request allianceauth/allianceauth!1714
2025-04-29 02:46:56 +00:00
Ariel Rin
e13674e886 Merge branch 'translatable-app-names' into 'master'
[CHANGE] Made app names translatable in Django admin

See merge request allianceauth/allianceauth!1715
2025-04-29 02:45:48 +00:00
Ariel Rin
e3e856b826 Merge branch 'admin-overview' into 'master'
Remove unused {% if %} tag

See merge request allianceauth/allianceauth!1718
2025-04-29 02:42:35 +00:00
T'rahk Rokym
9d1cd23a8f Remove unused {% if %} tag 2025-04-21 16:50:04 +02:00
Peter Pfeufer
148f7c116f
[CHANGE] Made app names translatable in Django admin 2025-04-10 07:08:16 +02:00
Peter Pfeufer
33e7134d6f
[ADD] Temaplatetag for path relative to static
AA-GDPR needs this
2025-04-09 20:54:51 +02:00
Peter Pfeufer
fb799551aa
[CHANGE] Move what ever is possible to our framework CSS 2025-04-06 22:22:54 +02:00
Peter Pfeufer
7b95051fe1
[ADD] Menu separator
Between `#nav-right` and `#nav-right-character-control`. Only visible when `#nav-right` has menu items.
2025-04-06 22:01:54 +02:00
Peter Pfeufer
efb6a6db4f
[FIX] Top margin for service controls 2025-04-05 23:49:58 +02:00
Peter Pfeufer
478aa1aa12
[ADD] apply_offset to esi_cleanup_token task 2025-04-03 00:59:04 +02:00
T'rahk Rokym
751e55ed6c Add a new theft timer type for skyhooks 2025-03-26 22:09:43 +01:00
72 changed files with 371 additions and 213 deletions

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class AnalyticsConfig(AppConfig):
name = 'allianceauth.analytics'
label = 'analytics'
verbose_name = _('Analytics')

View File

@ -1,10 +1,12 @@
from django.apps import AppConfig
from django.core.checks import register, Tags
from django.utils.translation import gettext_lazy as _
class AuthenticationConfig(AppConfig):
name = "allianceauth.authentication"
label = "authentication"
verbose_name = _("Authentication")
def ready(self):
from allianceauth.authentication import checks, signals # noqa: F401

View File

@ -1,4 +1,5 @@
import logging
from typing import ClassVar
from django.contrib.auth.models import User, Permission
from django.db import models, transaction
@ -27,7 +28,7 @@ class State(models.Model):
help_text="Factions to whose members this state is available.")
public = models.BooleanField(default=False, help_text="Make this state available to any character.")
objects = StateManager()
objects: ClassVar[StateManager] = StateManager()
class Meta:
ordering = ['-priority']
@ -137,8 +138,10 @@ class UserProfile(models.Model):
sender=self.__class__, user=self.user, state=self.state
)
def __str__(self):
def __str__(self) -> str:
return str(self.user)
class CharacterOwnership(models.Model):
class Meta:
default_permissions = ('change', 'delete')
@ -148,7 +151,7 @@ class CharacterOwnership(models.Model):
owner_hash = models.CharField(max_length=28, unique=True)
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='character_ownerships')
objects = CharacterOwnershipManager()
objects: ClassVar[CharacterOwnershipManager] = CharacterOwnershipManager()
def __str__(self):
return f"{self.user}: {self.character}"

View File

@ -31,7 +31,7 @@
<tr>
<td style="white-space:initial;">
{% for s in t.scopes.all %}
<span class="badge bg-secondary">{{ s.name }}</span>
<span class="badge text-bg-secondary">{{ s.name }}</span>
{% endfor %}
</td>

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class CorpUtilsConfig(AppConfig):
name = 'allianceauth.corputils'
label = 'corputils'
verbose_name = _('Corporation Stats')

View File

@ -1,5 +1,6 @@
import logging
import os
from typing import ClassVar
from allianceauth.authentication.models import CharacterOwnership, UserProfile
from bravado.exception import HTTPForbidden
@ -40,9 +41,9 @@ class CorpStats(models.Model):
verbose_name = "corp stats"
verbose_name_plural = "corp stats"
objects = CorpStatsManager()
objects: ClassVar[CorpStatsManager] = CorpStatsManager()
def __str__(self):
def __str__(self) -> str:
return f"{self.__class__.__name__} for {self.corp}"
def update(self):

View File

@ -138,7 +138,7 @@
<td style="width: 30%;">{{ alt.corporation_name }}</td>
<td style="width: 30%;">{{ alt.alliance_name|default_if_none:"" }}</td>
<td style="width: 5%;">
<a href="https://zkillboard.com/character/{{ alt.character_id }}/" class="badge bg-danger" target="_blank">
<a href="https://zkillboard.com/character/{{ alt.character_id }}/" class="badge text-bg-danger" target="_blank">
{% translate "Killboard" %}
</a>
</td>
@ -175,7 +175,7 @@
<td><img src="{{ member.portrait_url }}" class="img-circle" alt="{{ member }}"></td>
<td>{{ member }}</td>
<td>
<a href="https://zkillboard.com/character/{{ member.character_id }}/" class="badge bg-danger" target="_blank">{% translate "Killboard" %}</a>
<a href="https://zkillboard.com/character/{{ member.character_id }}/" class="badge text-bg-danger" target="_blank">{% translate "Killboard" %}</a>
</td>
<td>{{ member.character_ownership.user.profile.main_character.character_name }}</td>
<td>{{ member.character_ownership.user.profile.main_character.corporation_name }}</td>
@ -188,7 +188,7 @@
<td><img src="{{ member.portrait_url }}" class="img-circle" alt="{{ member.character_name }}"></td>
<td>{{ member.character_name }}</td>
<td>
<a href="https://zkillboard.com/character/{{ member.character_id }}/" class="badge bg-danger" target="_blank">{% translate "Killboard" %}</a>
<a href="https://zkillboard.com/character/{{ member.character_id }}/" class="badge text-bg-danger" target="_blank">{% translate "Killboard" %}</a>
</td>
<td></td>
<td></td>
@ -219,7 +219,7 @@
<td><img src="{{ member.portrait_url }}" class="img-circle" alt="{{ member.character_name }}"></td>
<td>{{ member.character_name }}</td>
<td>
<a href="https://zkillboard.com/character/{{ member.character_id }}/" class="badge bg-danger" target="_blank">
<a href="https://zkillboard.com/character/{{ member.character_id }}/" class="badge text-bg-danger" target="_blank">
{% translate "Killboard" %}
</a>
</td>

View File

@ -28,7 +28,7 @@
<td><img src="{{ result.1.portrait_url }}" class="img-circle" alt="{{ result.1.character_name }}"></td>
<td>{{ result.1.character_name }}</td>
<td >{{ result.0.corp.corporation_name }}</td>
<td><a href="https://zkillboard.com/character/{{ result.1.character_id }}/" class="badge bg-danger" target="_blank">{% translate "Killboard" %}</a></td>
<td><a href="https://zkillboard.com/character/{{ result.1.character_id }}/" class="badge text-bg-danger" target="_blank">{% translate "Killboard" %}</a></td>
<td>{{ result.1.main_character.character_name }}</td>
<td>{{ result.1.main_character.corporation_name }}</td>
<td>{{ result.1.main_character.alliance_name }}</td>

View File

@ -3,6 +3,7 @@ Crontab App Config
"""
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class CrontabConfig(AppConfig):
@ -12,3 +13,4 @@ class CrontabConfig(AppConfig):
name = "allianceauth.crontab"
label = "crontab"
verbose_name = _("Crontab")

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class EveonlineConfig(AppConfig):
name = 'allianceauth.eveonline'
label = 'eveonline'
verbose_name = _('EVE Online')

View File

@ -1,9 +1,11 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class EveAutogroupsConfig(AppConfig):
name = 'allianceauth.eveonline.autogroups'
label = 'eve_autogroups'
verbose_name = _('EVE Online Autogroups')
def ready(self):
import allianceauth.eveonline.autogroups.signals

View File

@ -1,4 +1,5 @@
import logging
from typing import ClassVar
from django.db import models, transaction
from django.contrib.auth.models import Group, User
from django.core.exceptions import ObjectDoesNotExist
@ -78,7 +79,7 @@ class AutogroupsConfig(models.Model):
max_length=10, default='', blank=True,
help_text='Any spaces in the group name will be replaced with this.')
objects = AutogroupsConfigManager()
objects: ClassVar[AutogroupsConfigManager] = AutogroupsConfigManager()
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

View File

@ -14,10 +14,10 @@ class EveCharacterProviderManager:
class EveCharacterManager(models.Manager):
provider = EveCharacterProviderManager()
def create_character(self, character_id):
def create_character(self, character_id) -> models.Model:
return self.create_character_obj(self.provider.get_character(character_id))
def create_character_obj(self, character: providers.Character):
def create_character_obj(self, character: providers.Character) -> models.Model:
return self.create(
character_id=character.id,
character_name=character.name,

View File

@ -1,5 +1,5 @@
import logging
from typing import Union
from typing import ClassVar, Union
from django.core.exceptions import ObjectDoesNotExist
from django.db import models
@ -75,8 +75,8 @@ class EveAllianceInfo(models.Model):
alliance_ticker = models.CharField(max_length=254)
executor_corp_id = models.PositiveIntegerField()
objects = EveAllianceManager()
provider = EveAllianceProviderManager()
objects: ClassVar[EveAllianceManager] = EveAllianceManager()
provider: ClassVar[EveAllianceProviderManager] = EveAllianceProviderManager()
class Meta:
indexes = [models.Index(fields=['executor_corp_id',])]
@ -147,7 +147,7 @@ class EveCorporationInfo(models.Model):
EveAllianceInfo, blank=True, null=True, on_delete=models.SET_NULL
)
objects = EveCorporationManager()
objects: ClassVar[EveCorporationManager] = EveCorporationManager()
provider = EveCorporationProviderManager()
class Meta:
@ -214,7 +214,7 @@ class EveCharacter(models.Model):
faction_id = models.PositiveIntegerField(blank=True, null=True, default=None)
faction_name = models.CharField(max_length=254, blank=True, null=True, default='')
objects = EveCharacterManager()
objects: ClassVar[EveCharacterManager] = EveCharacterManager()
provider = EveCharacterProviderManager()
class Meta:

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class FatConfig(AppConfig):
name = 'allianceauth.fleetactivitytracking'
label = 'fleetactivitytracking'
verbose_name = _('Fleet Activity Tracking')

View File

@ -80,7 +80,7 @@
{% for link in created_fats %}
<tr>
<td class="text-center">
<a href="{% url 'fatlink:click' link.hash %}" class="badge bg-primary">
<a href="{% url 'fatlink:click' link.hash %}" class="badge text-bg-primary">
{{ link.fleet }}
</a>
</td>

View File

@ -97,7 +97,7 @@
{% for link in fatlinks %}
<tr>
<td class="text-center">
<a href="{% url 'fatlink:click' link.hash %}" class="badge bg-primary">{{ link.fleet }}</a>
<a href="{% url 'fatlink:click' link.hash %}" class="badge text-bg-primary">{{ link.fleet }}</a>
</td>
<td class="text-center">{{ link.creator.username }}</td>
<td class="text-center">{{ link.fleet }}</td>

View File

@ -3,6 +3,7 @@ Framework App Config
"""
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class FrameworkConfig(AppConfig):
@ -12,3 +13,4 @@ class FrameworkConfig(AppConfig):
name = "allianceauth.framework"
label = "framework"
verbose_name = _("Framework")

View File

@ -5,6 +5,24 @@
* to be used throughout Alliance Auth and its Community Apps
*/
/* General
------------------------------------------------------------------------------------- */
@media all {
.navbar-toggler.collapsed {
transform: rotate(180deg);
}
ul#nav-right:has(li) + ul#nav-right-character-control > li:first-child {
display: list-item !important;
}
}
@media all and (max-width: 991px) {
ul#nav-left:has(li) + ul#nav-right + ul#nav-right-character-control > li:first-child {
display: list-item !important;
}
}
/* Bootstrap fixes
------------------------------------------------------------------------------------- */
@media all {

View File

@ -1,10 +1,11 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class GroupManagementConfig(AppConfig):
name = 'allianceauth.groupmanagement'
label = 'groupmanagement'
verbose_name = 'Group Management'
verbose_name = _('Group Management')
def ready(self):
from . import signals # noqa: F401

View File

@ -39,12 +39,12 @@
<td>
{% if group.authgroup.hidden %}
<span class="badge bg-info">{% translate "Hidden" %}</span>
<span class="badge text-bg-info">{% translate "Hidden" %}</span>
{% endif %}
{% if group.authgroup.open %}
<span class="badge bg-success">{% translate "Open" %}</span>
<span class="badge text-bg-success">{% translate "Open" %}</span>
{% else %}
<span class="badge bg-secondary">{% translate "Requestable" %}</span>
<span class="badge text-bg-secondary">{% translate "Requestable" %}</span>
{% endif %}
</td>

View File

@ -17,7 +17,7 @@
<li class="nav-item">
<a class="nav-link" href="{% url 'groupmanagement:management' %}">{% translate "Group Management" %}
{% if req_count %}
<span class="badge bg-secondary">{{ req_count }}</span>
<span class="badge text-bg-secondary">{{ req_count }}</span>
{% endif %}
</a>
</li>
@ -33,8 +33,8 @@
<th>{% translate "Description" %}</th>
<th>
{% translate "Leaders" %}<br>
<span class="my-1 me-1 fw-lighter badge bg-primary">{% translate "User" %}</span>
<span class="my-1 me-1 fw-lighter badge bg-secondary">{% translate "Group" %}</span>
<span class="my-1 me-1 fw-lighter badge text-bg-primary">{% translate "User" %}</span>
<span class="my-1 me-1 fw-lighter badge text-bg-secondary">{% translate "Group" %}</span>
</th>
<th></th>
</tr>
@ -53,13 +53,13 @@
{% if g.group.authgroup.group_leaders.all.count %}
{% for leader in g.group.authgroup.group_leaders.all %}
{% if leader.profile.main_character %}
<span class="my-1 me-1 badge bg-primary">{{leader.profile.main_character}}</span>
<span class="my-1 me-1 badge text-bg-primary">{{leader.profile.main_character}}</span>
{% endif %}
{% endfor %}
{% endif %}
{% if g.group.authgroup.group_leader_groups.all.count %}
{% for group in g.group.authgroup.group_leader_groups.all %}
<span class="my-1 me-1 badge bg-secondary">{{group.name}}</span>
<span class="my-1 me-1 badge text-bg-secondary">{{group.name}}</span>
{% endfor %}
{% endif %}
</td>

View File

@ -19,7 +19,7 @@
{% translate "Join Requests" %}
{% if acceptrequests %}
<span class="badge bg-secondary">{{ acceptrequests|length }}</span>
<span class="badge text-bg-secondary">{{ acceptrequests|length }}</span>
{% endif %}
</a>
</li>
@ -30,7 +30,7 @@
{% translate "Leave Requests" %}
{% if leaverequests %}
<span class="badge bg-secondary">{{ leaverequests|length }}</span>
<span class="badge text-bg-secondary">{{ leaverequests|length }}</span>
{% endif %}
</a>
</li>

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class HRApplicationsConfig(AppConfig):
name = 'allianceauth.hrapplications'
label = 'hrapplications'
verbose_name = _('HR Applications')

View File

@ -1,3 +1,4 @@
from typing import ClassVar
from django.contrib.auth.models import User
from django.db import models
from sortedm2m.fields import SortedManyToManyField
@ -40,7 +41,7 @@ class Application(models.Model):
reviewer_character = models.ForeignKey(EveCharacter, on_delete=models.SET_NULL, blank=True, null=True)
created = models.DateTimeField(auto_now_add=True)
objects = ApplicationManager()
objects: ClassVar[ApplicationManager] = ApplicationManager()
def __str__(self):
return str(self.user) + " Application To " + str(self.form)

View File

@ -43,11 +43,11 @@
<td class="text-center">{{ personal_app.form.corp.corporation_name }}</td>
<td class="text-center">
{% if personal_app.approved == None %}
<div class="badge bg-warning">{% translate "Pending" %}</div>
<div class="badge text-bg-warning">{% translate "Pending" %}</div>
{% elif personal_app.approved == True %}
<div class="badge bg-success">{% translate "Approved" %}</div>
<div class="badge text-bg-success">{% translate "Approved" %}</div>
{% else %}
<div class="badge bg-danger">{% translate "Rejected" %}</div>
<div class="badge text-bg-danger">{% translate "Rejected" %}</div>
{% endif %}
</td>
<td class="text-center">
@ -133,14 +133,14 @@
<td class="text-center">
{% if app.approved == None %}
{% if app.reviewer_str %}
<div class="badge bg-info">{% translate "Reviewer:" %} {{ app.reviewer_str }}</div>
<div class="badge text-bg-info">{% translate "Reviewer:" %} {{ app.reviewer_str }}</div>
{% else %}
<div class="badge bg-warning">{% translate "Pending" %}</div>
<div class="badge text-bg-warning">{% translate "Pending" %}</div>
{% endif %}
{% elif app.approved == True %}
<div class="badge bg-success">{% translate "Approved" %}</div>
<div class="badge text-bg-success">{% translate "Approved" %}</div>
{% else %}
<div class="badge bg-danger">{% translate "Rejected" %}</div>
<div class="badge text-bg-danger">{% translate "Rejected" %}</div>
{% endif %}
</td>
<td class="text-center">
@ -177,14 +177,14 @@
<td class="text-center">
{% if app.approved == None %}
{% if app.reviewer_str %}
<div class="badge bg-info">{% translate "Reviewer:" %} {{ app.reviewer_str }}</div>
<div class="badge text-bg-info">{% translate "Reviewer:" %} {{ app.reviewer_str }}</div>
{% else %}
<div class="badge bg-warning">{% translate "Pending" %}</div>
<div class="badge text-bg-warning">{% translate "Pending" %}</div>
{% endif %}
{% elif app.approved == True %}
<div class="badge bg-success">{% translate "Approved" %}</div>
<div class="badge text-bg-success">{% translate "Approved" %}</div>
{% else %}
<div class="badge bg-danger">{% translate "Rejected" %}</div>
<div class="badge text-bg-danger">{% translate "Rejected" %}</div>
{% endif %}
</td>
<td class="text-center">

View File

@ -43,11 +43,11 @@
<td>{{ app.form.corp }}</td>
<td class="text-center">
{% if app.approved == None %}
<div class="badge bg-warning">{% translate "Pending" %}</div>
<div class="badge text-bg-warning">{% translate "Pending" %}</div>
{% elif app.approved == True %}
<div class="badge bg-success">{% translate "Approved" %}</div>
<div class="badge text-bg-success">{% translate "Approved" %}</div>
{% else %}
<div class="badge bg-danger">{% translate "Rejected" %}</div>
<div class="badge text-bg-danger">{% translate "Rejected" %}</div>
{% endif %}
</td>
<td class="text-end">

View File

@ -31,7 +31,7 @@
</div>
<div class="card mb-3">
<div class="card-header bg-info">
<div class="card-header text-bg-info">
<div class="card-title mb-0">{% translate "Applicant" %}</div>
</div>
@ -50,7 +50,7 @@
</div>
<div class="card mb-3">
<div class="card-header bg-info">
<div class="card-header text-bg-info">
<div class="card-title mb-0">{% translate "Characters" %}</div>
</div>

View File

@ -8,7 +8,7 @@
# Fegpawn Kaundur, 2023
# frank1210 <francolopez_16@hotmail.com>, 2023
# Joel Falknau <ozirascal@gmail.com>, 2023
# trenus, 2023
# trenus, 2025
#
#, fuzzy
msgid ""
@ -17,7 +17,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-02-25 19:17+1000\n"
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
"Last-Translator: trenus, 2023\n"
"Last-Translator: trenus, 2025\n"
"Language-Team: Spanish (https://app.transifex.com/alliance-auth/teams/107430/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -64,7 +64,7 @@ msgstr "Inglés"
#: allianceauth/authentication/models.py:71
msgid "Czech"
msgstr ""
msgstr "Checo"
#: allianceauth/authentication/models.py:72
#: allianceauth/project_template/project_name/settings/base.py:107
@ -104,22 +104,22 @@ msgstr "Ruso"
#: allianceauth/authentication/models.py:79
#: allianceauth/project_template/project_name/settings/base.py:113
msgid "Dutch"
msgstr ""
msgstr "Holandés"
#: allianceauth/authentication/models.py:80
#: allianceauth/project_template/project_name/settings/base.py:114
msgid "Polish"
msgstr ""
msgstr "Polaco"
#: allianceauth/authentication/models.py:81
#: allianceauth/project_template/project_name/settings/base.py:116
msgid "Ukrainian"
msgstr ""
msgstr "Ucraniano"
#: allianceauth/authentication/models.py:82
#: allianceauth/project_template/project_name/settings/base.py:117
msgid "Simplified Chinese"
msgstr ""
msgstr "Chino Simplificado"
#: allianceauth/authentication/models.py:98
#: allianceauth/menu/templates/menu/menu-user.html:42
@ -134,7 +134,7 @@ msgstr "Modo Nocturno"
#: allianceauth/authentication/models.py:107
#: allianceauth/menu/templates/menu/menu-user.html:46
msgid "Theme"
msgstr ""
msgstr "Tema"
#: allianceauth/authentication/models.py:124
#, python-format
@ -195,17 +195,17 @@ msgstr "Allianza"
#: allianceauth/authentication/templates/authentication/dashboard_groups.html:5
msgid "Membership"
msgstr ""
msgstr "Membresía"
#: allianceauth/authentication/templates/authentication/dashboard_groups.html:10
msgid "State:"
msgstr ""
msgstr "Estado:"
#: allianceauth/authentication/templates/authentication/tokens.html:7
#: allianceauth/authentication/templates/authentication/tokens.html:11
#: allianceauth/templates/allianceauth/top-menu-user-dropdown.html:62
msgid "Token Management"
msgstr ""
msgstr "Gestión de Tokens"
#: allianceauth/authentication/templates/authentication/tokens.html:17
msgid ""
@ -346,7 +346,7 @@ msgstr "Corporaciones"
#: allianceauth/corputils/templates/corputils/base.html:35
msgid "Add corporation"
msgstr ""
msgstr "Añadir corporación"
#: allianceauth/corputils/templates/corputils/base.html:51
msgid "Search all corporations..."
@ -371,11 +371,11 @@ msgstr "Ultima Actualizacion:"
#: allianceauth/corputils/templates/corputils/corpstats.html:86
msgid "Update Now"
msgstr ""
msgstr "Actualizar Ahora"
#: allianceauth/corputils/templates/corputils/corpstats.html:101
msgid "Main character"
msgstr ""
msgstr "Personaje principal"
#: allianceauth/corputils/templates/corputils/corpstats.html:102
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:29
@ -549,7 +549,7 @@ msgstr "Editar Fatlink"
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:21
msgid "Are you sure?"
msgstr ""
msgstr "¿Estás seguro?"
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:22
msgid "Delete fat"
@ -692,7 +692,7 @@ msgstr "Promedio de participacion"
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:6
msgid "Fatlink Statistics"
msgstr ""
msgstr "Estadísticas Fatlink"
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html:32
msgid "Ticker"
@ -1940,19 +1940,19 @@ msgstr "Cuenta IPSuite4 desactivada."
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7
msgid "Mumble"
msgstr ""
msgstr "Mumble"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:11
msgid "Mumble History"
msgstr ""
msgstr "Historial de Mumble"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:23
msgid "Server Connection History"
msgstr ""
msgstr "Historial de Conexiones al Servidor"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32
msgid "Displayed Name"
msgstr ""
msgstr "Nombre Visualizado"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33
msgid "Release"
@ -1961,24 +1961,24 @@ msgstr ""
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68
msgid "Version"
msgstr ""
msgstr "Versión"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35
msgid "Last Connect"
msgstr ""
msgstr "Última Conexión"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:36
msgid "Last Disconnect"
msgstr ""
msgstr "Última Desconexión"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:48
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:60
msgid "Server Connection Breakdown"
msgstr ""
msgstr "Desglose de la Conexión al Servidor"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:69
msgid "Number"
msgstr ""
msgstr "Número"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28
#: allianceauth/services/templates/services/service_password.html:26
@ -1987,11 +1987,11 @@ msgstr "Cambiar Contraseña"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:46
msgid "Connect"
msgstr ""
msgstr "Conectar"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:52
msgid "Mumble Connection History"
msgstr ""
msgstr "Historia de Conexión Mumble"
#: allianceauth/services/modules/openfire/auth_hooks.py:27
msgid "Jabber"
@ -2214,7 +2214,7 @@ msgstr "Cambiar contraseña en %(service_name)s"
#: allianceauth/services/templates/services/service_status.html:5
msgid "Enabled"
msgstr ""
msgstr "Habilitado"
#: allianceauth/services/templates/services/service_status.html:7
#: allianceauth/srp/templates/srp/management.html:78
@ -2299,11 +2299,11 @@ msgstr "Crear SRP"
#: allianceauth/srp/templates/srp/add.html:26
msgid "SRP fleet details"
msgstr ""
msgstr "Detalles de la flota SRP"
#: allianceauth/srp/templates/srp/add.html:40
msgid "Create SRP fleet"
msgstr ""
msgstr "Crear flota SRP"
#: allianceauth/srp/templates/srp/add.html:46
msgid "Give this link to the line members."
@ -2316,7 +2316,7 @@ msgstr "Informacion de SRP de la flota"
#: allianceauth/srp/templates/srp/data.html:17
msgid "View Fleets"
msgstr ""
msgstr "Ver Flotas"
#: allianceauth/srp/templates/srp/data.html:26
msgid "Mark Incomplete"
@ -2435,11 +2435,11 @@ msgstr "Crear solicitud de SRP"
#: allianceauth/srp/templates/srp/request.html:22
msgid "Your SRP request"
msgstr ""
msgstr "Tu solicitud SRP"
#: allianceauth/srp/templates/srp/request.html:35
msgid "Create SRP request"
msgstr ""
msgstr "Crear solicitud SRP"
#: allianceauth/srp/templates/srp/update.html:7
#: allianceauth/srp/templates/srp/update.html:16
@ -2456,7 +2456,7 @@ msgstr "No existe el SRP para esa flota"
#: allianceauth/srp/templates/srp/update.html:40
msgid "Update AAR link"
msgstr ""
msgstr "Actualizar enlace AAR"
#: allianceauth/srp/views.py:85
#, python-format
@ -2568,7 +2568,7 @@ msgstr "Cerrado"
#: allianceauth/templates/allianceauth/admin-status/overview.html:24
msgid "No notifications at this time"
msgstr ""
msgstr "No hay notificaciones en este momento"
#: allianceauth/templates/allianceauth/admin-status/overview.html:33
msgid "Powered by GitLab"
@ -2617,11 +2617,11 @@ msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:116
msgid "running"
msgstr ""
msgstr "ejecutando"
#: allianceauth/templates/allianceauth/admin-status/overview.html:117
msgid "queued"
msgstr ""
msgstr "en cola"
#: allianceauth/templates/allianceauth/top-menu-admin.html:19
msgid "AA Documentation"
@ -2646,7 +2646,7 @@ msgstr "Navegacion"
#: allianceauth/theme/templates/theme/theme_select.html:7
msgid "Select Theme"
msgstr ""
msgstr "Seleccionar tema"
#: allianceauth/timerboard/form.py:36
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14
@ -2677,7 +2677,7 @@ msgstr ""
#: allianceauth/timerboard/form.py:43
msgid "Date and Time"
msgstr ""
msgstr "Fecha y hora"
#: allianceauth/timerboard/form.py:44
msgid "Days Remaining"
@ -2744,35 +2744,35 @@ msgstr ""
#: allianceauth/timerboard/models.py:31
msgid "Astrahus"
msgstr ""
msgstr "Astrahus"
#: allianceauth/timerboard/models.py:32
msgid "Fortizar"
msgstr ""
msgstr "Fortizar"
#: allianceauth/timerboard/models.py:33
msgid "Keepstar"
msgstr ""
msgstr "Keepstar"
#: allianceauth/timerboard/models.py:34
msgid "Raitaru"
msgstr ""
msgstr "Raitaru"
#: allianceauth/timerboard/models.py:35
msgid "Azbel"
msgstr ""
msgstr "Azbel"
#: allianceauth/timerboard/models.py:36
msgid "Sotiyo"
msgstr ""
msgstr "Sotiyo"
#: allianceauth/timerboard/models.py:37
msgid "Athanor"
msgstr ""
msgstr "Athanor"
#: allianceauth/timerboard/models.py:38
msgid "Tatara"
msgstr ""
msgstr "Tatara"
#: allianceauth/timerboard/models.py:39
msgid "Cyno Beacon"
@ -2832,7 +2832,7 @@ msgstr "Desanclando"
#: allianceauth/timerboard/models.py:59
msgid "Abandoned"
msgstr ""
msgstr "Abandonado"
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7
#: allianceauth/timerboard/templates/timerboard/view.html:54
@ -2906,17 +2906,19 @@ msgstr "Se guardaron los cambios en el timer."
#: allianceauth/views.py:55
msgid "Bad Request"
msgstr ""
msgstr "Mala solicitud"
#: allianceauth/views.py:57 allianceauth/views.py:87
msgid ""
"Auth encountered an error processing your request, please try again. If the "
"error persists, please contact the administrators."
msgstr ""
"Auth ha encontrado un error al procesar su solicitud, por favor inténtelo de"
" nuevo. Si el error persiste, póngase en contacto con los administradores."
#: allianceauth/views.py:65
msgid "Permission Denied"
msgstr ""
msgstr "Permiso Denegado"
#: allianceauth/views.py:67
msgid ""
@ -2926,14 +2928,16 @@ msgstr ""
#: allianceauth/views.py:75
msgid "Page Not Found"
msgstr ""
msgstr "Página No Encontrada"
#: allianceauth/views.py:77
msgid ""
"Page does not exist. If you believe this is in error please contact the "
"administrators. "
msgstr ""
"La página no existe. Si cree que se trata de un error, póngase en contacto "
"con los administradores. "
#: allianceauth/views.py:85
msgid "Internal Server Error"
msgstr ""
msgstr "Error Interno del Servidor"

View File

@ -7,6 +7,7 @@
# Kristof Swensen, 2023
# Денис Ивченко, 2024
# Andrii Yukhymchak, 2024
# Bandera Primary, 2025
#
#, fuzzy
msgid ""
@ -15,7 +16,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-02-25 19:17+1000\n"
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
"Last-Translator: Andrii Yukhymchak, 2024\n"
"Last-Translator: Bandera Primary, 2025\n"
"Language-Team: Ukrainian (https://app.transifex.com/alliance-auth/teams/107430/uk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -67,7 +68,7 @@ msgstr "Англійська"
#: allianceauth/authentication/models.py:71
msgid "Czech"
msgstr ""
msgstr "Чеська"
#: allianceauth/authentication/models.py:72
#: allianceauth/project_template/project_name/settings/base.py:107
@ -107,12 +108,12 @@ msgstr "Російська"
#: allianceauth/authentication/models.py:79
#: allianceauth/project_template/project_name/settings/base.py:113
msgid "Dutch"
msgstr ""
msgstr "Нідерландська"
#: allianceauth/authentication/models.py:80
#: allianceauth/project_template/project_name/settings/base.py:114
msgid "Polish"
msgstr ""
msgstr "Польська"
#: allianceauth/authentication/models.py:81
#: allianceauth/project_template/project_name/settings/base.py:116
@ -122,7 +123,7 @@ msgstr "Українська"
#: allianceauth/authentication/models.py:82
#: allianceauth/project_template/project_name/settings/base.py:117
msgid "Simplified Chinese"
msgstr ""
msgstr "Cпрощена китайська"
#: allianceauth/authentication/models.py:98
#: allianceauth/menu/templates/menu/menu-user.html:42
@ -216,6 +217,9 @@ msgid ""
"your tokens. Always revoke tokens on "
"https://developers.eveonline.com/authorized-apps where possible."
msgstr ""
"Тут ви може видалити токени, але резервні копії або логи бази даних все ще "
"можуть містити їх. Завжди анульовуйте токени на "
"https://developers.eveonline.com/authorized-apps, коли є можливість."
#: allianceauth/authentication/templates/authentication/tokens.html:23
msgid "Scopes"
@ -446,36 +450,36 @@ msgstr "Не вдалося зібрати статистику корпорац
#: allianceauth/crontab/models.py:13
msgid "Minute Offset"
msgstr ""
msgstr "Зміщення хвилини"
#: allianceauth/crontab/models.py:14
msgid "Hour Offset"
msgstr ""
msgstr "Зміщення години"
#: allianceauth/crontab/models.py:15
msgid "Day of Month Offset"
msgstr ""
msgstr "Зміщення дня місяця"
#: allianceauth/crontab/models.py:16
msgid "Month of Year Offset"
msgstr ""
msgstr "Зміщення місяця року"
#: allianceauth/crontab/models.py:17
msgid "Day of Week Offset"
msgstr ""
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 ""
msgstr "Користувацький CSS"
#: allianceauth/custom_css/models.py:25
msgid "Your custom CSS"
msgstr ""
msgstr "Ваш користувацький CSS"
#: allianceauth/custom_css/models.py:26
msgid "This CSS will be added to the site after the default CSS."
msgstr ""
msgstr "Цей CSS буде додано до сайту після базового CSS."
#: allianceauth/fleetactivitytracking/auth_hooks.py:10
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:10
@ -1951,45 +1955,45 @@ msgstr "Деактивовано обліковий запис IPSuite4."
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7
msgid "Mumble"
msgstr ""
msgstr "Mumble"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:11
msgid "Mumble History"
msgstr ""
msgstr "Історія Mumble"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:23
msgid "Server Connection History"
msgstr ""
msgstr "Історія підключень до сервера"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:32
msgid "Displayed Name"
msgstr ""
msgstr "Відображене ім'я"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:33
msgid "Release"
msgstr ""
msgstr "Реліз"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:34
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:68
msgid "Version"
msgstr ""
msgstr "Версія"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:35
msgid "Last Connect"
msgstr ""
msgstr "Останнє підключення"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:36
msgid "Last Disconnect"
msgstr ""
msgstr "Останнє відключення"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:48
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:60
msgid "Server Connection Breakdown"
msgstr ""
msgstr "Розбір підключення до сервера"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:69
msgid "Number"
msgstr ""
msgstr "Кількість"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:28
#: allianceauth/services/templates/services/service_password.html:26
@ -2002,7 +2006,7 @@ msgstr "Підєднатись"
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:52
msgid "Mumble Connection History"
msgstr ""
msgstr "Історія підключень до Mumble"
#: allianceauth/services/modules/openfire/auth_hooks.py:27
msgid "Jabber"
@ -2740,11 +2744,11 @@ msgstr "POCO"
#: allianceauth/timerboard/models.py:25
msgid "Orbital Skyhook"
msgstr ""
msgstr "Орбітальний скайхук"
#: allianceauth/timerboard/models.py:26
msgid "Sovereignty Hub"
msgstr ""
msgstr "Суверенітетний хаб"
#: allianceauth/timerboard/models.py:27
msgid "TCU"
@ -2808,7 +2812,7 @@ msgstr "Мост Ансіблекс"
#: allianceauth/timerboard/models.py:42
msgid "Mercenary Den"
msgstr ""
msgstr "Кубло найманців"
#: allianceauth/timerboard/models.py:43
msgid "Moon Mining Cycle"
@ -2816,7 +2820,7 @@ msgstr "Цикл видобутку супутника"
#: allianceauth/timerboard/models.py:44
msgid "Metenox Moon Drill"
msgstr ""
msgstr "Бур Метенокс"
#: allianceauth/timerboard/models.py:45
msgid "Other"
@ -2852,7 +2856,7 @@ msgstr "Зняття з якорю"
#: allianceauth/timerboard/models.py:59
msgid "Abandoned"
msgstr ""
msgstr "Покинуто"
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7
#: allianceauth/timerboard/templates/timerboard/view.html:54

View File

@ -8,6 +8,7 @@
# 85b931f94c2441449e78b527e0a313ae_baf2e99 <639a60f913241ffb1c9bd90bc93a541f_869335>, 2023
# Aaron BuBu <351793078@qq.com>, 2023
# Joel Falknau <ozirascal@gmail.com>, 2023
# Aika Yu, 2025
#
#, fuzzy
msgid ""
@ -16,7 +17,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-02-25 19:17+1000\n"
"PO-Revision-Date: 2023-11-08 13:50+0000\n"
"Last-Translator: Joel Falknau <ozirascal@gmail.com>, 2023\n"
"Last-Translator: Aika Yu, 2025\n"
"Language-Team: Chinese Simplified (https://app.transifex.com/alliance-auth/teams/107430/zh-Hans/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -61,7 +62,7 @@ msgstr "英语"
#: allianceauth/authentication/models.py:71
msgid "Czech"
msgstr ""
msgstr "捷克语"
#: allianceauth/authentication/models.py:72
#: allianceauth/project_template/project_name/settings/base.py:107
@ -101,22 +102,22 @@ msgstr "俄语"
#: allianceauth/authentication/models.py:79
#: allianceauth/project_template/project_name/settings/base.py:113
msgid "Dutch"
msgstr ""
msgstr "荷兰语"
#: allianceauth/authentication/models.py:80
#: allianceauth/project_template/project_name/settings/base.py:114
msgid "Polish"
msgstr ""
msgstr "波兰语"
#: allianceauth/authentication/models.py:81
#: allianceauth/project_template/project_name/settings/base.py:116
msgid "Ukrainian"
msgstr ""
msgstr "乌克兰语"
#: allianceauth/authentication/models.py:82
#: allianceauth/project_template/project_name/settings/base.py:117
msgid "Simplified Chinese"
msgstr ""
msgstr "简体中文"
#: allianceauth/authentication/models.py:98
#: allianceauth/menu/templates/menu/menu-user.html:42
@ -283,7 +284,7 @@ msgstr "不能修改主角色为%(char)s这个角色被另一个账户所拥
#: allianceauth/authentication/views.py:164
#, python-format
msgid "Changed main character to %s"
msgstr ""
msgstr "修改主角色为%s"
#: allianceauth/authentication/views.py:178
#, python-format
@ -359,11 +360,11 @@ msgstr "最后一次更新"
#: allianceauth/corputils/templates/corputils/corpstats.html:86
msgid "Update Now"
msgstr ""
msgstr "立刻更新"
#: allianceauth/corputils/templates/corputils/corpstats.html:101
msgid "Main character"
msgstr ""
msgstr "主要角色"
#: allianceauth/corputils/templates/corputils/corpstats.html:102
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:29
@ -536,7 +537,7 @@ msgstr "编辑一个PAP"
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:21
msgid "Are you sure?"
msgstr ""
msgstr "是否确认?"
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:22
msgid "Delete fat"
@ -575,7 +576,7 @@ msgstr "EVE时间"
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:49
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:52
msgid "Docked in"
msgstr ""
msgstr "停靠在"
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:6
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalstatisticsview.html:6
@ -711,11 +712,11 @@ msgstr "记录中找不到已创建的PAP链接"
#: allianceauth/fleetactivitytracking/views.py:218
msgid "Character does not exist"
msgstr ""
msgstr "角色不存在"
#: allianceauth/fleetactivitytracking/views.py:221
msgid "User does not exist"
msgstr ""
msgstr "用户不存在"
#: allianceauth/fleetactivitytracking/views.py:299
msgid "Fleet participation registered."
@ -935,7 +936,7 @@ msgstr "用户组成员"
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:13
msgid "Join/Leave Requests"
msgstr ""
msgstr "加入/退出申请"
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:24
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:33
@ -1444,13 +1445,13 @@ msgstr "管理员"
#: allianceauth/menu/templates/menu/menu-user.html:82
msgid "Sign Out"
msgstr ""
msgstr "登出"
#: 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"
msgstr ""
msgstr "登入"
#: allianceauth/notifications/models.py:21
msgid "danger"
@ -1494,7 +1495,7 @@ msgstr "标题"
#: allianceauth/notifications/templates/notifications/list_partial.html:28
msgid "No notifications."
msgstr ""
msgstr "暂无通知"
#: allianceauth/notifications/templates/notifications/view.html:5
#: allianceauth/notifications/templates/notifications/view.html:9
@ -1584,7 +1585,7 @@ msgstr ""
#: allianceauth/optimer/templates/optimer/dashboard.ops.html:7
msgid "Upcoming Fleets"
msgstr ""
msgstr "接下来的队"
#: allianceauth/optimer/templates/optimer/dashboard.ops.html:14
msgid "Operation"
@ -1598,7 +1599,7 @@ msgstr "集结点"
#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18
msgid "EVE Time"
msgstr ""
msgstr "EVE时间"
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14
#: allianceauth/timerboard/templates/timerboard/timertable.html:13
@ -1793,17 +1794,17 @@ msgstr ""
#: allianceauth/services/modules/discord/templates/services/discord/discord_service_ctrl.html:26
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:22
msgid "Activate"
msgstr ""
msgstr "激活"
#: allianceauth/services/modules/discord/templates/services/discord/discord_service_ctrl.html:32
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:34
msgid "Reset Password"
msgstr ""
msgstr "重置密码"
#: allianceauth/services/modules/discord/templates/services/discord/discord_service_ctrl.html:38
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_service_ctrl.html:40
msgid "Deactivate"
msgstr ""
msgstr "停用"
#: allianceauth/services/modules/discord/templates/services/discord/discord_service_ctrl.html:45
msgid "Link Discord Server"
@ -1820,7 +1821,7 @@ msgstr "在处理你的Discord账户时出错。"
#: allianceauth/services/modules/discord/views.py:102
msgid "Your Discord account has been successfully activated."
msgstr ""
msgstr "你的discord账户已成功停用"
#: allianceauth/services/modules/discord/views.py:108
msgid ""
@ -2232,7 +2233,7 @@ msgstr "补损舰队创建"
#: allianceauth/srp/templates/srp/request.html:11
#: allianceauth/srp/templates/srp/update.html:11
msgid "Ship Replacement Program"
msgstr ""
msgstr "补损"
#: allianceauth/srp/templates/srp/add.html:20
msgid "Create SRP Fleet"
@ -2257,7 +2258,7 @@ msgstr "舰队补损信息"
#: allianceauth/srp/templates/srp/data.html:17
msgid "View Fleets"
msgstr ""
msgstr "查看舰队"
#: allianceauth/srp/templates/srp/data.html:26
msgid "Mark Incomplete"
@ -2374,11 +2375,11 @@ msgstr "创建补损请求"
#: allianceauth/srp/templates/srp/request.html:22
msgid "Your SRP request"
msgstr ""
msgstr "你的补损请求"
#: allianceauth/srp/templates/srp/request.html:35
msgid "Create SRP request"
msgstr ""
msgstr "创建补损请求"
#: allianceauth/srp/templates/srp/update.html:7
#: allianceauth/srp/templates/srp/update.html:16
@ -2387,7 +2388,7 @@ msgstr "上传战报链接"
#: allianceauth/srp/templates/srp/update.html:22
msgid "After Action Report"
msgstr ""
msgstr "战报"
#: allianceauth/srp/templates/srp/update.html:31
msgid "SRP Fleet Does Not Exist"
@ -2395,7 +2396,7 @@ msgstr "补损舰队不存在啊,老哥你在好好看看?"
#: allianceauth/srp/templates/srp/update.html:40
msgid "Update AAR link"
msgstr ""
msgstr "更新战报链接"
#: allianceauth/srp/views.py:85
#, python-format

View File

@ -1,6 +1,7 @@
import logging
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
logger = logging.getLogger(__name__)
@ -12,6 +13,7 @@ logger = logging.getLogger(__name__)
class MenuConfig(AppConfig):
name = "allianceauth.menu"
label = "menu"
verbose_name = _("Menu")
def ready(self):
from allianceauth.menu.core import smart_sync

View File

@ -1,3 +1,4 @@
from typing import ClassVar
from django.db import models
from django.utils.translation import gettext_lazy as _
@ -68,7 +69,7 @@ class MenuItem(models.Model):
help_text=_("External URL this menu items will link to"),
)
objects = MenuItemManager()
objects: ClassVar[MenuItemManager] = MenuItemManager()
def __str__(self) -> str:
return self.text

View File

@ -27,7 +27,7 @@
</a>
{% if item.count >= 1 %}
<span class="badge bg-primary m-2 align-self-center{% if not item.is_folder %} me-2{% endif %}">
<span class="badge text-bg-primary m-2 align-self-center{% if not item.is_folder %} me-2{% endif %}">
{{ item.count }}
</span>
{% elif item.url %}

View File

@ -5,7 +5,7 @@
<div class="col-auto px-0">
<div class="collapse collapse-horizontal" tabindex="-1" id="sidebar">
<div>
<div class="nav-padding navbar-dark bg-dark text-light px-0 d-flex flex-column overflow-hidden vh-100 {% if not user.is_authenticated %}position-relative{% endif %}">
<div class="nav-padding navbar-dark text-bg-dark px-0 d-flex flex-column overflow-hidden vh-100 {% if not user.is_authenticated %}position-relative{% endif %}">
{% if user.is_authenticated %}
<ul id="sidebar-menu" class="navbar-nav flex-column mb-auto overflow-auto pt-2">
<li class="d-flex flex-wrap m-2 p-2 pt-0 pb-0 mt-0 mb-0 me-0 pe-0">

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class NotificationsConfig(AppConfig):
name = 'allianceauth.notifications'
label = 'notifications'
verbose_name = _('Notifications')

View File

@ -1,4 +1,5 @@
import logging
from typing import ClassVar
from django.db import models
from django.contrib.auth.models import User
@ -56,7 +57,7 @@ class Notification(models.Model):
timestamp = models.DateTimeField(auto_now_add=True, db_index=True)
viewed = models.BooleanField(default=False, db_index=True)
objects = NotificationManager()
objects: ClassVar[NotificationManager] = NotificationManager()
def __str__(self) -> str:
return f"{self.user}: {self.title}"

View File

@ -15,14 +15,14 @@
<li class="nav-item">
<a class="nav-link active" id="unread-tab" data-bs-toggle="tab" data-bs-target="#unread" type="button" role="tab" aria-controls="unread" aria-selected="true">
{% translate "Unread" %}
<span class="badge bg-secondary">{{ unread|length }}</span>
<span class="badge text-bg-secondary">{{ unread|length }}</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" id="read-tab" data-bs-toggle="tab" data-bs-target="#read" type="button" role="tab" aria-controls="read" aria-selected="false">
{% translate "Read" %}
<span class="badge bg-secondary">{{ read|length }}</span>
<span class="badge text-bg-secondary">{{ read|length }}</span>
</a>
</li>
{% endblock %}

View File

@ -17,7 +17,7 @@
</div>
<div class="card border-{{ notif.level }}">
<div class="card-header bg-{{ notif.level }}">
<div class="card-header text-bg-{{ notif.level }}">
{{ notif.timestamp }}
{{ notif.title }}
</div>

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class OptimerConfig(AppConfig):
name = 'allianceauth.optimer'
label = 'optimer'
verbose_name = _('Fleet Operations')

View File

@ -24,7 +24,7 @@
{% block content %}
<div>
<div class="text-center mb-3">
<div class="badge bg-primary text-start">
<div class="badge text-bg-primary text-start">
<b>{% translate "Current EVE time:" %}</b>
<span id="current-time"></span>
</div>

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class PermissionsToolConfig(AppConfig):
name = 'allianceauth.permissions_tool'
label = 'permissions_tool'
verbose_name = _('Permissions Audit')

View File

@ -61,6 +61,7 @@ CELERYBEAT_SCHEDULE = {
'esi_cleanup_token': {
'task': 'esi.tasks.cleanup_token',
'schedule': crontab(minute='0', hour='0'),
'apply_offset': True,
},
'run_model_update': {
'task': 'allianceauth.eveonline.tasks.run_model_update',

View File

@ -1,9 +1,11 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class ServicesConfig(AppConfig):
name = 'allianceauth.services'
label = 'services'
verbose_name = _('Services')
def ready(self):
from . import signals

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class DiscordServiceConfig(AppConfig):
name = 'allianceauth.services.modules.discord'
label = 'discord'
verbose_name = _('Discord Service')

View File

@ -1,5 +1,5 @@
import logging
from typing import Optional
from typing import ClassVar, Optional
from requests.exceptions import HTTPError
@ -59,7 +59,7 @@ class DiscordUser(models.Model):
help_text='Date & time this service account was activated'
)
objects = DiscordUserManager()
objects: ClassVar[DiscordUserManager] = DiscordUserManager()
class Meta:
permissions = (

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class DiscourseServiceConfig(AppConfig):
name = 'allianceauth.services.modules.discourse'
label = 'discourse'
verbose_name = _('Discourse Service')

View File

@ -14,7 +14,7 @@
{% endblock %}
{% block active %}
<span class="badge bg-success">
<span class="badge text-bg-success">
{% translate "SSO login active" %}
</span>
{% endblock %}

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class ExampleServiceConfig(AppConfig):
name = 'allianceauth.services.modules.example'
label = 'example_service'
verbose_name = _('Example Service')

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class Ips4ServiceConfig(AppConfig):
name = 'allianceauth.services.modules.ips4'
label = 'ips4'
verbose_name = _('IPS4 Service')

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class MumbleServiceConfig(AppConfig):
name = 'allianceauth.services.modules.mumble'
label = 'mumble'
verbose_name = _('Mumble Service')

View File

@ -1,5 +1,6 @@
import random
import string
from typing import ClassVar
from passlib.hash import bcrypt_sha256
from django.db import models
@ -116,7 +117,7 @@ class MumbleUser(AbstractServiceModel):
help_text="Timestamp of the users Last Disconnection to Mumble"
)
objects = MumbleManager()
objects: ClassVar[MumbleManager] = MumbleManager()
def __str__(self):
return self.username

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class OpenfireServiceConfig(AppConfig):
name = 'allianceauth.services.modules.openfire'
label = 'openfire'
verbose_name = _('Openfire Service')

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class Phpbb3ServiceConfig(AppConfig):
name = 'allianceauth.services.modules.phpbb3'
label = 'phpbb3'
verbose_name = _('phpBB3 Service')

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class SmfServiceConfig(AppConfig):
name = 'allianceauth.services.modules.smf'
label = 'smf'
verbose_name = _('SMF Service')

View File

@ -1,9 +1,11 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class Teamspeak3ServiceConfig(AppConfig):
name = 'allianceauth.services.modules.teamspeak3'
label = 'teamspeak3'
verbose_name = _('TeamSpeak 3 Service')
def ready(self):
from . import signals

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class XenforoServiceConfig(AppConfig):
name = 'allianceauth.services.modules.xenforo'
label = 'xenforo'
verbose_name = _('Xenforo Service')

View File

@ -1,6 +1,6 @@
{% load i18n %}
<div class="card text-center m-2" style="min-width: 18rem; min-height: 18rem;">
<div class="card text-center mx-2 mb-3" style="min-width: 18rem; min-height: 18rem;">
<div class="card-body">
<h5 class="card-title">{% block title %}{% endblock title %}</h5>

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class SRPConfig(AppConfig):
name = 'allianceauth.srp'
label = 'srp'
verbose_name = _('Ship Replacement')

View File

@ -92,11 +92,14 @@ ESC to cancel{% endblocktranslate %}" id="blah"></i></th>
{{ srpfleetrequest.character.alliance.alliance_ticker }}
{% endif %}
[{{ srpfleetrequest.character.corporation.corporation_ticker }}]
{{ srpfleetrequest.character.character_name }}&nbsp;<i class="copy-text-fa-icon far fa-copy" data-clipboard-text="{{ srpfleetrequest.character.character_name }}"></i>
{{ srpfleetrequest.character.character_name }}&nbsp;
<sup>
<i class="copy-text-fa-icon far fa-copy" data-clipboard-text="{{ srpfleetrequest.character.character_name }}"></i>
</sup>
</td>
<td>
<a href="{{ srpfleetrequest.killboard_link }}"
target="_blank" class="badge bg-warning">{% translate "Link" %}</a>
target="_blank" class="badge text-bg-warning">{% translate "Link" %}</a>
</td>
<td>{{ srpfleetrequest.additional_info }}</td>
<td>{{ srpfleetrequest.srp_ship_name }}</td>
@ -105,15 +108,15 @@ ESC to cancel{% endblocktranslate %}" id="blah"></i></th>
<td data-sort="{{ srpfleetrequest.post_time | date:"Y-m-d H:i" }}">{{ srpfleetrequest.post_time | date:"Y-M-d H:i" }}</td>
<td>
{% if srpfleetrequest.srp_status == "Approved" %}
<div class="badge bg-success">
<div class="badge text-bg-success">
{% translate "Approved" %}
</div>
{% elif srpfleetrequest.srp_status == "Rejected" %}
<div class="badge bg-danger">
<div class="badge text-bg-danger">
{% translate "Rejected" %}
</div>
{% else %}
<div class="badge bg-warning">
<div class="badge text-bg-warning">
{% translate "Pending" %}
</div>
{% endif %}
@ -239,13 +242,19 @@ ESC to cancel{% endblocktranslate %}" id="blah"></i></th>
}
});
// Non-Orderable columns
const nonOrderableTargets = [1];
{% if perms.auth.srp_management %}
nonOrderableTargets.push(8);
{% endif %}
elementTableSrpList.DataTable({
language: {url: '{{ DT_LANG_PATH }}'},
"order": [[ 6, "asc" ]],
"paging": false,
"columnDefs": [
{
"targets": [1, 8],
"targets": nonOrderableTargets,
"orderable": false
},
{

View File

@ -61,20 +61,20 @@
<td>{{ srpfleet.fleet_time | date:"Y-m-d H:i" }}</td>
<td>{{ srpfleet.fleet_doctrine }}</td>
<td>
<div class="badge bg-success">
<div class="badge text-bg-success">
{{ srpfleet.fleet_commander.character_name }}
</div>
</td>
<td>
{% if srpfleet.fleet_srp_aar_link %}
<a href="{{ srpfleet.fleet_srp_aar_link }}" target="_blank" class="badge bg-primary">{% translate "Link" %}</a>
<a href="{{ srpfleet.fleet_srp_aar_link }}" target="_blank" class="badge text-bg-primary">{% translate "Link" %}</a>
{% endif %}
</td>
<td>
{% if srpfleet.fleet_srp_code %}
<a class="badge bg-warning" href="{% url 'srp:request' srpfleet.fleet_srp_code %}">{{ srpfleet.fleet_srp_code }}</a>
<a class="badge text-bg-warning" href="{% url 'srp:request' srpfleet.fleet_srp_code %}">{{ srpfleet.fleet_srp_code }}</a>
{% else %}
<div class="badge bg-danger">
<div class="badge text-bg-danger">
{% translate "Disabled" %}
</div>
{% endif %}
@ -83,17 +83,17 @@
<td>
{% if srpfleet.fleet_srp_status == "" %}
<div class="badge bg-warning">
<div class="badge text-bg-warning">
{% translate "Pending" %}
</div>
{% else %}
<div class="badge bg-success">
<div class="badge text-bg-success">
{% translate "Completed" %}
</div>
{% endif %}
</td>
<td>
<div class="badge bg-warning">{{ srpfleet.pending_requests }}</div>
<div class="badge text-bg-warning">{{ srpfleet.pending_requests }}</div>
</td>
<td class="text-end text-nowrap">
<a href="{% url 'srp:fleet' srpfleet.id %}" class="btn btn-primary btn-sm m-1" title="View">

View File

@ -2,7 +2,7 @@
{% load admin_status %}
<div
class="progress-bar bg-{{ level }} task-status-progress-bar"
class="progress-bar text-bg-{{ level }} task-status-progress-bar"
role="progressbar"
aria-valuenow="{% decimal_widthratio tasks_count tasks_total 100 %}"
aria-valuemin="0"

View File

@ -12,11 +12,7 @@
<ul class="list-group">
{% for notif in notifications %}
<li class="list-group-item">
{% if notif.state == 'opened' %}
<span class="badge bg-success me-2">{% translate "Open" %}</span>
{% else %}
<span class="badge bg-danger me-2">{% translate "Closed" %}</span>
{% endif %}
<span class="badge text-bg-success me-2">{% translate "Open" %}</span>
<a href="{{ notif.web_url }}" target="_blank">#{{ notif.iid }} {{ notif.title }}</a>
</li>
{% empty %}
@ -28,13 +24,13 @@
<div class="text-end pt-3">
<a href="https://gitlab.com/allianceauth/allianceauth/issues" target="_blank" class="me-1 text-decoration-none">
<span class="badge" style="background-color: rgb(230 83 40);">
<span class="badge text-bg-danger">
<i class="fab fa-gitlab" aria-hidden="true"></i>
{% translate 'Powered by GitLab' %}
</span>
</a>
<a href="https://discord.com/invite/fjnHAmk" target="_blank" class="text-decoration-none">
<span class="badge" style="background-color: rgb(110 133 211);">
<span class="badge text-bg-info">
<i class="fab fa-discord" aria-hidden="true"></i>
{% translate 'Support Discord' %}
</span>
@ -62,7 +58,7 @@
</div>
</li>
<li class="list-group-item bg-{% if latest_patch %}success{% elif latest_minor %}warning{% else %}danger{% endif %} w-100">
<li class="list-group-item text-bg-{% if latest_patch %}success{% elif latest_minor %}warning{% else %}danger{% endif %} w-100">
<a class="btn h-100 w-100" href="https://gitlab.com/allianceauth/allianceauth/-/releases/v{{ latest_patch_version }}">
<h5 class="list-group-item-heading">{% translate "Latest Stable" %}</h5>
@ -75,7 +71,7 @@
</li>
{% if latest_beta %}
<li class="list-group-item bg-info w-100">
<li class="list-group-item text-bg-info w-100">
<a class="btn h-100 w-100" href="https://gitlab.com/allianceauth/allianceauth/-/releases/v{{ latest_beta_version }}">
<h5 class="list-group-item-heading">{% translate "Latest Pre-Release" %}</h5>

View File

@ -24,13 +24,11 @@
{% include 'bundles/auth-framework-css.html' %}
<style>
.navbar-toggler.collapsed{
transform: rotate(180deg);
}
.nav-padding {
margin-top: {% header_padding_size %} !important;
max-height: calc(100vh - {% header_padding_size %}) !important;
@media all {
.nav-padding {
margin-top: {% header_padding_size %} !important;
max-height: calc(100vh - {% header_padding_size %}) !important;
}
}
</style>
@ -41,7 +39,7 @@
<body>
<!-- Top Menu, Blocks don't work in "include" tagged views -->
<nav class="navbar navbar-expand-lg navbar-dark fixed-top bg-primary">
<nav class="navbar navbar-expand-lg navbar-dark fixed-top text-bg-primary">
<div class="container-fluid justify-content-start">
<a class="navbar-brand" data-bs-toggle="collapse" data-bs-target="#sidebar" role="button">
<i class="fa-solid fa-bars ms-2 me-2"></i>
@ -63,6 +61,11 @@
</ul>
<ul id="nav-right-character-control" class="nav navbar-nav">
<li class="nav-item ms-lg-2 py-2 py-lg-1 col-12 col-lg-auto d-none">
<div class="vr d-none d-lg-flex h-100 mx-2 text-white-50"></div>
<hr class="d-lg-none my-2 text-body text-white-50">
</li>
{% block header_nav_user_character_control %} <!-- Default to add char and swap main -->
{% include 'allianceauth/top-menu-rh-default.html' %}
{% endblock %}

View File

@ -2,7 +2,7 @@
{% if user.is_authenticated %}
<li class="nav-item">
<a href="{% url 'authentication:add_character' %}" class="nav-link" title="{% translate 'Add Character' %}">
<i class="fa-solid fa-plus"></i>
<i class="fa-solid fa-user-plus"></i>
<span class="d-lg-none d-md-inline m-2">{% translate "Add Character" %}</span>
</a>
</li>

View File

@ -67,6 +67,26 @@ def get_datatables_language_static(language: str) -> str:
return static_url
@register.simple_tag
def get_relative_datatables_language_path(language: str) -> str:
"""
Get the correct language code URL for DataTables (relative path to the static folder)
:param language: Django's language code
:type language: str
:return: Mapped language code
:rtype: str
"""
mapped_language = get_datatable_language_code(language)
static_url = (
f"allianceauth/libs/DataTables/Plugins/2.2.1/i18n/{mapped_language}.json"
if mapped_language
else ""
)
return static_url
@register.simple_tag
def get_momentjs_language_static(language: str) -> str:
@ -88,3 +108,24 @@ def get_momentjs_language_static(language: str) -> str:
)
return static_url
@register.simple_tag
def get_relative_momentjs_language_path(language: str) -> str:
"""
Get the correct language code URL for Moment.JS (relative path to the static folder)
:param language: Django's language code
:type language: str
:return: Mapped language code path
:rtype: str
"""
mapped_language = get_momentjs_language_code(language)
static_url = (
f"allianceauth/libs/moment.js/2.29.4/locale/{mapped_language}.js"
if mapped_language
else ""
)
return static_url

View File

@ -1,6 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class TimerBoardConfig(AppConfig):
name = 'allianceauth.timerboard'
label = 'timerboard'
verbose_name = _('Structure Timers')

View File

@ -0,0 +1,18 @@
# Generated by Django 4.2.16 on 2025-03-26 20:53
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('timerboard', '0007_alter_timer_structure'),
]
operations = [
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'), ('THEFT', 'Theft')], default='UNSPECIFIED', max_length=254),
),
]

View File

@ -57,6 +57,7 @@ class Timer(models.Model):
ANCHORING = "ANCHORING", _("Anchoring")
UNANCHORING = "UNANCHORING", _("Unanchoring")
ABANDONED = "ABANDONED", _("Abandoned")
THEFT = "THEFT", _("Theft")
details = models.CharField(max_length=254, default="")
system = models.CharField(max_length=254, default="")

View File

@ -30,17 +30,17 @@
</td>
<td class="text-center" nowrap>
{% if timer.objective == "Hostile" %}
<div class="badge bg-danger">
<div class="badge text-bg-danger">
{% translate "Hostile" %}
</div>
{% endif %}
{% if timer.objective == "Friendly" %}
<div class="badge bg-primary">
<div class="badge text-bg-primary">
{% translate "Friendly" %}
</div>
{% endif %}
{% if timer.objective == "Neutral" %}
<div class="badge bg-secondary">
<div class="badge text-bg-secondary">
{% translate "Neutral" %}
</div>
{% endif %}

View File

@ -21,7 +21,7 @@
<tbody>
{% for timer in timers %}
<tr class="{% if timer.important == True %}bg-danger bg-opacity-25{% else %}bg-info bg-opacity-25{% endif %}">
<tr class="{% if timer.important == True %}text-bg-danger bg-opacity-50{% else %}text-bg-info bg-opacity-50{% endif %}">
<td style="width: 150px;" class="text-center">
{{ timer.details }}
@ -34,15 +34,15 @@
<td class="text-center">
{% comment %} Objective: Hostile (BG: Danger) {% endcomment %}
{% if timer.objective == "Hostile" %}
<div class="badge bg-danger">
<div class="badge text-bg-danger">
{% comment %} Objective: Friendly (BG: Primare) {% endcomment %}
{% elif timer.objective == "Friendly" %}
<div class="badge bg-primary">
<div class="badge text-bg-primary">
{% comment %} Objective: Neutral (BG: Secondary) {% endcomment %}
{% elif timer.objective == "Neutral" %}
<div class="badge bg-secondary">
<div class="badge text-bg-secondary">
{% endif %}
{{ timer.get_objective_display }}
@ -54,7 +54,7 @@
</td>
<td class="text-center">
<div class="badge bg-{{ timer.bg_modifier }}">
<div class="badge text-bg-{{ timer.bg_modifier }}">
{{ timer.get_structure_display }}
</div>
</td>

View File

@ -28,7 +28,7 @@
{% block content %}
<div class="allianceauth-timerboard">
<div class="col-lg-12 text-center mb-3">
<div class="badge bg-primary text-start">
<div class="badge text-bg-primary text-start">
<span>{% translate "Current EVE time:" %}</span>
<span id="current-time"></span>
</div>