Compare commits

...

15 Commits

Author SHA1 Message Date
Joel Falknau
a650f0730e Version Bump 4.7.0 2025-05-24 17:28:41 +10:00
Ariel Rin
63eb9edc9c Merge branch 'readme' into 'master'
Feedback Wanted - Update Readme

See merge request allianceauth/allianceauth!1696
2025-05-24 06:23:06 +00:00
Ariel Rin
d6e1eb9792 Feedback Wanted - Update Readme 2025-05-24 06:23:06 +00:00
Ariel Rin
b459f96e6b Merge branch 'autogroup-multiple-configs' into 'master'
[Fix] Multiple AutoGroupsConfig will override each others

See merge request allianceauth/allianceauth!1722
2025-05-24 04:05:28 +00:00
Ariel Rin
bf32f2c1ef Merge branch 'fix-instance-must-be-saved' into 'master'
Fix discord test errror

See merge request allianceauth/allianceauth!1723
2025-05-24 04:04:27 +00:00
Ariel Rin
7ca67ebaae Merge branch 'fix-active-class' into 'master'
[FIX] Active class on notification icon

See merge request allianceauth/allianceauth!1724
2025-05-24 04:00:59 +00:00
Peter Pfeufer
fa32f87a35 [FIX] Active class on notification icon 2025-05-22 09:21:05 +02:00
T'rahk Rokym
a630015451 Fix error on one of my tox settings
ValueError: Model instances passed to related filters must be saved.
2025-05-21 21:52:40 +02:00
T'rahk Rokym
bf43f59232 Fix the role distribution if several configs hold the same corporation/alliance 2025-05-21 21:29:21 +02: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
41 changed files with 341 additions and 195 deletions

View File

@@ -1,15 +1,15 @@
# Alliance Auth # Alliance Auth
[![license](https://img.shields.io/badge/license-GPLv2-green)](https://pypi.org/project/allianceauth/) [![License](https://img.shields.io/badge/license-GPLv2-green)](https://pypi.org/project/allianceauth/)
[![python](https://img.shields.io/pypi/pyversions/allianceauth)](https://pypi.org/project/allianceauth/) [![Python Versions](https://img.shields.io/pypi/pyversions/allianceauth)](https://pypi.org/project/allianceauth/)
[![django](https://img.shields.io/pypi/djversions/allianceauth?label=django)](https://pypi.org/project/allianceauth/) [![Django Versions](https://img.shields.io/pypi/djversions/allianceauth?label=django)](https://pypi.org/project/allianceauth/)
[![version](https://img.shields.io/pypi/v/allianceauth?label=release)](https://pypi.org/project/allianceauth/) [![Stable AA Version](https://img.shields.io/pypi/v/allianceauth?label=release)](https://pypi.org/project/allianceauth/)
[![pipeline status](https://gitlab.com/allianceauth/allianceauth/badges/master/pipeline.svg)](https://gitlab.com/allianceauth/allianceauth/commits/master) [![Pipeline Status](https://gitlab.com/allianceauth/allianceauth/badges/master/pipeline.svg)](https://gitlab.com/allianceauth/allianceauth/commits/master)
[![Documentation Status](https://readthedocs.org/projects/allianceauth/badge/?version=latest)](https://allianceauth.readthedocs.io/?badge=latest) [![Documentation Status](https://readthedocs.org/projects/allianceauth/badge/?version=latest)](https://allianceauth.readthedocs.io/?badge=latest)
[![coverage report](https://gitlab.com/allianceauth/allianceauth/badges/master/coverage.svg)](https://gitlab.com/allianceauth/allianceauth/commits/master) [![Test Coverage Report](https://gitlab.com/allianceauth/allianceauth/badges/master/coverage.svg)](https://gitlab.com/allianceauth/allianceauth/commits/master)
[![Chat on Discord](https://img.shields.io/discord/399006117012832262.svg)](https://discord.gg/fjnHAmk) [![Chat on Discord](https://img.shields.io/discord/399006117012832262.svg)](https://discord.gg/fjnHAmk)
An auth system for EVE Online to help in-game organizations manage online service access. A flexible authentication platform for EVE Online to help in-game organizations manage access to applications and services. AA provides both, a stable core, and a robust framework for community development and custom applications.
## Content ## Content
@@ -22,17 +22,17 @@ An auth system for EVE Online to help in-game organizations manage online servic
## Overview ## Overview
Alliance Auth (AA) is a web site that helps Eve Online organizations efficiently manage access to applications and services. Alliance Auth (AA) is a platform that helps Eve Online organizations efficiently manage access to applications and services.
Main features: Main features:
- Automatically grants or revokes user access to external services (e.g. Discord, Mumble) and web apps (e.g. SRP requests) based on the user's current membership to [in-game organizations](https://allianceauth.readthedocs.io/en/latest/features/core/states/) and [groups](https://allianceauth.readthedocs.io/en/latest/features/core/groups/) - Automatically grants or revokes user access to external services (e.g.: Discord, Mumble) based on the user's current membership to [a variety of EVE Online affiliation](https://allianceauth.readthedocs.io/en/latest/features/core/states/) and [groups](https://allianceauth.readthedocs.io/en/latest/features/core/groups/)
- Provides a central web site where users can directly access web apps (e.g. SRP requests, Fleet Schedule) and manage their access to external services and groups. - Provides a central web site where users can directly access web apps (e.g. SRP requests, Fleet Schedule) and manage their access to external services and groups.
- Includes a set of connectors (called ["services"](https://allianceauth.readthedocs.io/en/latest/features/services/)) for integrating access management with many popular external applications / services like Discord, Mumble, Teamspeak 3, SMF and others - Includes a set of connectors (called ["Services"](https://allianceauth.readthedocs.io/en/latest/features/services/)) for integrating access management with many popular external applications / services like Discord, Mumble, Teamspeak 3, SMF and others
- Includes a set of web [apps](https://allianceauth.readthedocs.io/en/latest/features/apps/) which add many useful functions, e.g.: fleet schedule, timer board, SRP request management, fleet activity tracker - Includes a set of web [Apps](https://allianceauth.readthedocs.io/en/latest/features/apps/) which add many useful functions, e.g.: fleet schedule, timer board, SRP request management, fleet activity tracker
- Can be easily extended with additional services and apps. Many are provided by the community and can be found here: [Community Creations](https://gitlab.com/allianceauth/community-creations) - Can be easily extended with additional services and apps. Many are provided by the community and can be found here: [Community Creations](https://gitlab.com/allianceauth/community-creations)
@@ -42,9 +42,15 @@ For further details about AA - including an installation guide and a full list o
## Screenshot ## Screenshot
Here is an example of the Alliance Auth web site with some plug-ins apps and services enabled: Here is an example of the Alliance Auth web site with a mixture of Services, Apps and Community Creations enabled:
![screenshot](https://i.imgur.com/2tnX9kD.png) ### Flatly Theme
![Flatly Theme](docs/_static/images/promotion/SampleInstallation-Flatly.png)
### Darkly Theme
![Darkly Theme](docs/_static/images/promotion/SampleInstallation-Darkly.png)
## Support ## Support

View File

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

View File

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

View File

@@ -138,7 +138,7 @@
<td style="width: 30%;">{{ alt.corporation_name }}</td> <td style="width: 30%;">{{ alt.corporation_name }}</td>
<td style="width: 30%;">{{ alt.alliance_name|default_if_none:"" }}</td> <td style="width: 30%;">{{ alt.alliance_name|default_if_none:"" }}</td>
<td style="width: 5%;"> <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" %} {% translate "Killboard" %}
</a> </a>
</td> </td>
@@ -175,7 +175,7 @@
<td><img src="{{ member.portrait_url }}" class="img-circle" alt="{{ member }}"></td> <td><img src="{{ member.portrait_url }}" class="img-circle" alt="{{ member }}"></td>
<td>{{ member }}</td> <td>{{ member }}</td>
<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>{{ member.character_ownership.user.profile.main_character.character_name }}</td> <td>{{ member.character_ownership.user.profile.main_character.character_name }}</td>
<td>{{ member.character_ownership.user.profile.main_character.corporation_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><img src="{{ member.portrait_url }}" class="img-circle" alt="{{ member.character_name }}"></td>
<td>{{ member.character_name }}</td> <td>{{ member.character_name }}</td>
<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></td>
<td></td> <td></td>
@@ -219,7 +219,7 @@
<td><img src="{{ member.portrait_url }}" class="img-circle" alt="{{ member.character_name }}"></td> <td><img src="{{ member.portrait_url }}" class="img-circle" alt="{{ member.character_name }}"></td>
<td>{{ member.character_name }}</td> <td>{{ member.character_name }}</td>
<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" %} {% translate "Killboard" %}
</a> </a>
</td> </td>

View File

@@ -28,7 +28,7 @@
<td><img src="{{ result.1.portrait_url }}" class="img-circle" alt="{{ result.1.character_name }}"></td> <td><img src="{{ result.1.portrait_url }}" class="img-circle" alt="{{ result.1.character_name }}"></td>
<td>{{ result.1.character_name }}</td> <td>{{ result.1.character_name }}</td>
<td >{{ result.0.corp.corporation_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.character_name }}</td>
<td>{{ result.1.main_character.corporation_name }}</td> <td>{{ result.1.main_character.corporation_name }}</td>
<td>{{ result.1.main_character.alliance_name }}</td> <td>{{ result.1.main_character.alliance_name }}</td>

View File

@@ -39,13 +39,13 @@ class AutogroupsConfigManager(models.Manager):
""" """
if state is None: if state is None:
state = user.profile.state state = user.profile.state
for config in self.filter(states=state):
# grant user new groups for their state
config.update_group_membership_for_user(user)
for config in self.exclude(states=state): for config in self.exclude(states=state):
# ensure user does not have groups from previous state # ensure user does not have groups from previous state
config.remove_user_from_alliance_groups(user) config.remove_user_from_alliance_groups(user)
config.remove_user_from_corp_groups(user) config.remove_user_from_corp_groups(user)
for config in self.filter(states=state):
# grant user new groups for their state
config.update_group_membership_for_user(user)
class AutogroupsConfig(models.Model): class AutogroupsConfig(models.Model):

View File

@@ -1,3 +1,4 @@
from allianceauth.eveonline.models import EveCorporationInfo
from django.test import TestCase from django.test import TestCase
from allianceauth.tests.auth_utils import AuthUtils from allianceauth.tests.auth_utils import AuthUtils
@@ -73,3 +74,51 @@ class AutogroupsConfigManagerTestCase(TestCase):
AutogroupsConfig.objects.update_groups_for_user(member) AutogroupsConfig.objects.update_groups_for_user(member)
self.assertTrue(update_groups.called) self.assertTrue(update_groups.called)
def test_update_group_membership_corp_in_two_configs(self):
# given
member = AuthUtils.create_member('test member')
AuthUtils.add_main_character_2(
member,
character_id='1234',
name='test character',
corp_id='2345',
corp_name='corp name',
corp_ticker='TIKK',
)
corp = EveCorporationInfo.objects.create(
corporation_id='2345',
corporation_name='corp name',
corporation_ticker='TIKK',
member_count=10,
)
member_state = AuthUtils.get_member_state()
member_config = AutogroupsConfig.objects.create(corp_groups=True)
member_config.states.add(member_state)
blue_state = AuthUtils.get_blue_state()
blue_state.member_corporations.add(corp)
blue_config = AutogroupsConfig.objects.create(corp_groups=True)
blue_config.states.add(blue_state)
member.profile.state = blue_state
member.profile.save()
AutogroupsConfig.objects.update_groups_for_user(member)
# Checks before test that the role is correctly applied
group = blue_config.get_corp_group(corp)
self.assertIn(group, member.groups.all())
# when
blue_state.member_corporations.remove(corp)
member_state.member_corporations.add(corp)
member.profile.state = member_state
member.profile.save()
# then
AutogroupsConfig.objects.update_groups_for_user(member)
group = member_config.get_corp_group(corp)
self.assertIn(group, member.groups.all())

View File

@@ -80,7 +80,7 @@
{% for link in created_fats %} {% for link in created_fats %}
<tr> <tr>
<td class="text-center"> <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 }} {{ link.fleet }}
</a> </a>
</td> </td>

View File

@@ -97,7 +97,7 @@
{% for link in fatlinks %} {% for link in fatlinks %}
<tr> <tr>
<td class="text-center"> <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>
<td class="text-center">{{ link.creator.username }}</td> <td class="text-center">{{ link.creator.username }}</td>
<td class="text-center">{{ link.fleet }}</td> <td class="text-center">{{ link.fleet }}</td>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -31,7 +31,7 @@
</div> </div>
<div class="card mb-3"> <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 class="card-title mb-0">{% translate "Applicant" %}</div>
</div> </div>
@@ -50,7 +50,7 @@
</div> </div>
<div class="card mb-3"> <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 class="card-title mb-0">{% translate "Characters" %}</div>
</div> </div>

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-02-25 19:17+1000\n" "POT-Creation-Date: 2025-05-24 16:55+1000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,6 +18,10 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: allianceauth/analytics/apps.py:8
msgid "Analytics"
msgstr ""
#: allianceauth/analytics/models.py:22 #: allianceauth/analytics/models.py:22
msgid "Google Analytics Universal" msgid "Google Analytics Universal"
msgstr "" msgstr ""
@@ -26,6 +30,10 @@ msgstr ""
msgid "Google Analytics V4" msgid "Google Analytics V4"
msgstr "" msgstr ""
#: allianceauth/authentication/apps.py:9
msgid "Authentication"
msgstr ""
#: allianceauth/authentication/constants.py:6 #: allianceauth/authentication/constants.py:6
msgid "" msgid ""
"This software has exceeded the error limit for ESI. If you are a user, " "This software has exceeded the error limit for ESI. If you are a user, "
@@ -35,7 +43,7 @@ msgid ""
"esi on the EVE Online Discord. https://www.eveonline.com/discord" "esi on the EVE Online Discord. https://www.eveonline.com/discord"
msgstr "" msgstr ""
#: allianceauth/authentication/decorators.py:49 #: allianceauth/authentication/decorators.py:52
msgid "A main character is required to perform that action. Add one below." msgid "A main character is required to perform that action. Add one below."
msgstr "" msgstr ""
@@ -48,91 +56,91 @@ msgstr ""
msgid "You are not allowed to add or remove these restricted groups: %s" msgid "You are not allowed to add or remove these restricted groups: %s"
msgstr "" msgstr ""
#: allianceauth/authentication/models.py:70 #: allianceauth/authentication/models.py:72
#: allianceauth/project_template/project_name/settings/base.py:105 #: allianceauth/project_template/project_name/settings/base.py:106
msgid "English" msgid "English"
msgstr "" msgstr ""
#: allianceauth/authentication/models.py:71 #: allianceauth/authentication/models.py:73
msgid "Czech" msgid "Czech"
msgstr "" msgstr ""
#: allianceauth/authentication/models.py:72 #: allianceauth/authentication/models.py:74
#: allianceauth/project_template/project_name/settings/base.py:107 #: allianceauth/project_template/project_name/settings/base.py:108
msgid "German" msgid "German"
msgstr "" msgstr ""
#: allianceauth/authentication/models.py:73 #: allianceauth/authentication/models.py:75
#: allianceauth/project_template/project_name/settings/base.py:108 #: allianceauth/project_template/project_name/settings/base.py:109
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
#: allianceauth/authentication/models.py:74 #: allianceauth/authentication/models.py:76
#: allianceauth/project_template/project_name/settings/base.py:109 #: allianceauth/project_template/project_name/settings/base.py:110
msgid "Italian" msgid "Italian"
msgstr "" msgstr ""
#: allianceauth/authentication/models.py:75 #: allianceauth/authentication/models.py:77
#: allianceauth/project_template/project_name/settings/base.py:110 #: allianceauth/project_template/project_name/settings/base.py:111
msgid "Japanese" msgid "Japanese"
msgstr "" msgstr ""
#: allianceauth/authentication/models.py:76
#: allianceauth/project_template/project_name/settings/base.py:111
msgid "Korean"
msgstr ""
#: allianceauth/authentication/models.py:77
#: allianceauth/project_template/project_name/settings/base.py:112
msgid "French"
msgstr ""
#: allianceauth/authentication/models.py:78 #: allianceauth/authentication/models.py:78
#: allianceauth/project_template/project_name/settings/base.py:115 #: allianceauth/project_template/project_name/settings/base.py:112
msgid "Russian" msgid "Korean"
msgstr "" msgstr ""
#: allianceauth/authentication/models.py:79 #: allianceauth/authentication/models.py:79
#: allianceauth/project_template/project_name/settings/base.py:113 #: allianceauth/project_template/project_name/settings/base.py:113
msgid "Dutch" msgid "French"
msgstr "" msgstr ""
#: allianceauth/authentication/models.py:80 #: allianceauth/authentication/models.py:80
#: allianceauth/project_template/project_name/settings/base.py:114 #: allianceauth/project_template/project_name/settings/base.py:116
msgid "Polish" msgid "Russian"
msgstr "" msgstr ""
#: allianceauth/authentication/models.py:81 #: allianceauth/authentication/models.py:81
#: allianceauth/project_template/project_name/settings/base.py:116 #: allianceauth/project_template/project_name/settings/base.py:114
msgid "Ukrainian" msgid "Dutch"
msgstr "" msgstr ""
#: allianceauth/authentication/models.py:82 #: allianceauth/authentication/models.py:82
#: allianceauth/project_template/project_name/settings/base.py:115
msgid "Polish"
msgstr ""
#: allianceauth/authentication/models.py:83
#: allianceauth/project_template/project_name/settings/base.py:117 #: allianceauth/project_template/project_name/settings/base.py:117
msgid "Ukrainian"
msgstr ""
#: allianceauth/authentication/models.py:84
#: allianceauth/project_template/project_name/settings/base.py:118
msgid "Simplified Chinese" msgid "Simplified Chinese"
msgstr "" msgstr ""
#: allianceauth/authentication/models.py:98 #: allianceauth/authentication/models.py:100
#: allianceauth/menu/templates/menu/menu-user.html:42 #: allianceauth/menu/templates/menu/menu-user.html:42
msgid "Language" msgid "Language"
msgstr "" msgstr ""
#: allianceauth/authentication/models.py:103 #: allianceauth/authentication/models.py:105
#: allianceauth/templates/allianceauth/night-toggle.html:6 #: allianceauth/templates/allianceauth/night-toggle.html:6
msgid "Night Mode" msgid "Night Mode"
msgstr "" msgstr ""
#: allianceauth/authentication/models.py:107 #: allianceauth/authentication/models.py:109
#: allianceauth/menu/templates/menu/menu-user.html:46 #: allianceauth/menu/templates/menu/menu-user.html:46
msgid "Theme" msgid "Theme"
msgstr "" msgstr ""
#: allianceauth/authentication/models.py:124 #: allianceauth/authentication/models.py:126
#, python-format #, python-format
msgid "State changed to: %s" msgid "State changed to: %s"
msgstr "" msgstr ""
#: allianceauth/authentication/models.py:125 #: allianceauth/authentication/models.py:127
#, python-format #, python-format
msgid "Your user's state is now: %(state)s" msgid "Your user's state is now: %(state)s"
msgstr "" msgstr ""
@@ -267,53 +275,53 @@ msgstr ""
msgid "Invalid or expired activation link." msgid "Invalid or expired activation link."
msgstr "" msgstr ""
#: allianceauth/authentication/views.py:157 #: allianceauth/authentication/views.py:158
#, python-format #, python-format
msgid "" msgid ""
"Cannot change main character to %(char)s: character owned by a different " "Cannot change main character to %(char)s: character owned by a different "
"account." "account."
msgstr "" msgstr ""
#: allianceauth/authentication/views.py:164 #: allianceauth/authentication/views.py:165
#, python-format #, python-format
msgid "Changed main character to %s" msgid "Changed main character to %s"
msgstr "" msgstr ""
#: allianceauth/authentication/views.py:178 #: allianceauth/authentication/views.py:179
#, python-format #, python-format
msgid "Added %(name)s to your account." msgid "Added %(name)s to your account."
msgstr "" msgstr ""
#: allianceauth/authentication/views.py:180 #: allianceauth/authentication/views.py:181
#, python-format #, python-format
msgid "Failed to add %(name)s to your account: they already have an account." msgid "Failed to add %(name)s to your account: they already have an account."
msgstr "" msgstr ""
#: allianceauth/authentication/views.py:225 #: allianceauth/authentication/views.py:226
msgid "" msgid ""
"Unable to authenticate as the selected character. Please log in with the " "Unable to authenticate as the selected character. Please log in with the "
"main character associated with this account." "main character associated with this account."
msgstr "" msgstr ""
#: allianceauth/authentication/views.py:292 #: allianceauth/authentication/views.py:293
msgid "Registration token has expired." msgid "Registration token has expired."
msgstr "" msgstr ""
#: allianceauth/authentication/views.py:353 #: allianceauth/authentication/views.py:354
msgid "" msgid ""
"Sent confirmation email. Please follow the link to confirm your email " "Sent confirmation email. Please follow the link to confirm your email "
"address." "address."
msgstr "" msgstr ""
#: allianceauth/authentication/views.py:359 #: allianceauth/authentication/views.py:360
msgid "Confirmed your email address. Please login to continue." msgid "Confirmed your email address. Please login to continue."
msgstr "" msgstr ""
#: allianceauth/authentication/views.py:365 #: allianceauth/authentication/views.py:366
msgid "Registration of new accounts is not allowed at this time." msgid "Registration of new accounts is not allowed at this time."
msgstr "" msgstr ""
#: allianceauth/corputils/auth_hooks.py:12 #: allianceauth/corputils/apps.py:8 allianceauth/corputils/auth_hooks.py:12
msgid "Corporation Stats" msgid "Corporation Stats"
msgstr "" msgstr ""
@@ -419,6 +427,10 @@ msgstr ""
msgid "Failed to gather corporation statistics with selected token." msgid "Failed to gather corporation statistics with selected token."
msgstr "" msgstr ""
#: allianceauth/crontab/apps.py:16
msgid "Crontab"
msgstr ""
#: allianceauth/crontab/models.py:13 #: allianceauth/crontab/models.py:13
msgid "Minute Offset" msgid "Minute Offset"
msgstr "" msgstr ""
@@ -452,6 +464,15 @@ msgstr ""
msgid "This CSS will be added to the site after the default CSS." msgid "This CSS will be added to the site after the default CSS."
msgstr "" msgstr ""
#: allianceauth/eveonline/apps.py:8
msgid "EVE Online"
msgstr ""
#: allianceauth/eveonline/autogroups/apps.py:8
msgid "EVE Online Autogroups"
msgstr ""
#: allianceauth/fleetactivitytracking/apps.py:8
#: allianceauth/fleetactivitytracking/auth_hooks.py:10 #: allianceauth/fleetactivitytracking/auth_hooks.py:10
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:10 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html:10
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkcreate.html:11 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkcreate.html:11
@@ -561,9 +582,11 @@ msgstr ""
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:75 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkpersonalmonthlystatisticsview.html:75
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:44 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:44
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:92 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkview.html:92
#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17
#: allianceauth/templates/allianceauth/top-menu.html:23 #: allianceauth/templates/allianceauth/top-menu.html:23
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18
#: allianceauth/timerboard/templates/timerboard/timertable.html:12 #: allianceauth/timerboard/templates/timerboard/timertable.html:12
msgid "Eve Time" msgid "EVE time"
msgstr "" msgstr ""
#: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:49 #: allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkmodify.html:49
@@ -728,6 +751,11 @@ msgid ""
"character needs to be online." "character needs to be online."
msgstr "" msgstr ""
#: allianceauth/framework/apps.py:16
msgid "Framework"
msgstr ""
#: allianceauth/groupmanagement/apps.py:8
#: allianceauth/groupmanagement/auth_hooks.py:18 #: allianceauth/groupmanagement/auth_hooks.py:18
#: allianceauth/groupmanagement/templates/groupmanagement/groups.html:18 #: allianceauth/groupmanagement/templates/groupmanagement/groups.html:18
msgid "Group Management" msgid "Group Management"
@@ -956,7 +984,7 @@ msgid "Hidden"
msgstr "" msgstr ""
#: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45 #: allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html:45
#: allianceauth/templates/allianceauth/admin-status/overview.html:16 #: allianceauth/templates/allianceauth/admin-status/overview.html:15
msgid "Open" msgid "Open"
msgstr "" msgstr ""
@@ -1009,7 +1037,7 @@ msgstr ""
#: allianceauth/hrapplications/templates/hrapplications/management.html:182 #: allianceauth/hrapplications/templates/hrapplications/management.html:182
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:46 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:46
#: allianceauth/hrapplications/templates/hrapplications/view.html:25 #: allianceauth/hrapplications/templates/hrapplications/view.html:25
#: allianceauth/srp/templates/srp/data.html:117 #: allianceauth/srp/templates/srp/data.html:120
#: allianceauth/srp/templates/srp/management.html:87 #: allianceauth/srp/templates/srp/management.html:87
msgid "Pending" msgid "Pending"
msgstr "" msgstr ""
@@ -1151,6 +1179,10 @@ msgstr ""
msgid "Applied to leave group %(group)s." msgid "Applied to leave group %(group)s."
msgstr "" msgstr ""
#: allianceauth/hrapplications/apps.py:8
msgid "HR Applications"
msgstr ""
#: allianceauth/hrapplications/auth_hooks.py:15 #: allianceauth/hrapplications/auth_hooks.py:15
msgid "Applications" msgid "Applications"
msgstr "" msgstr ""
@@ -1222,7 +1254,7 @@ msgstr ""
#: allianceauth/hrapplications/templates/hrapplications/management.html:185 #: allianceauth/hrapplications/templates/hrapplications/management.html:185
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:48 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:48
#: allianceauth/hrapplications/templates/hrapplications/view.html:21 #: allianceauth/hrapplications/templates/hrapplications/view.html:21
#: allianceauth/srp/templates/srp/data.html:109 #: allianceauth/srp/templates/srp/data.html:112
msgid "Approved" msgid "Approved"
msgstr "" msgstr ""
@@ -1230,7 +1262,7 @@ msgstr ""
#: allianceauth/hrapplications/templates/hrapplications/management.html:143 #: allianceauth/hrapplications/templates/hrapplications/management.html:143
#: allianceauth/hrapplications/templates/hrapplications/management.html:187 #: allianceauth/hrapplications/templates/hrapplications/management.html:187
#: allianceauth/hrapplications/templates/hrapplications/searchview.html:50 #: allianceauth/hrapplications/templates/hrapplications/searchview.html:50
#: allianceauth/srp/templates/srp/data.html:113 #: allianceauth/srp/templates/srp/data.html:116
msgid "Rejected" msgid "Rejected"
msgstr "" msgstr ""
@@ -1345,7 +1377,7 @@ msgstr ""
msgid "children" msgid "children"
msgstr "" msgstr ""
#: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:21 #: allianceauth/menu/admin.py:90 allianceauth/menu/models.py:22
msgid "text" msgid "text"
msgstr "" msgstr ""
@@ -1357,11 +1389,15 @@ msgstr ""
msgid "visible" msgid "visible"
msgstr "" msgstr ""
#: allianceauth/menu/apps.py:16
msgid "Menu"
msgstr ""
#: allianceauth/menu/constants.py:16 #: allianceauth/menu/constants.py:16
msgid "app" msgid "app"
msgstr "" msgstr ""
#: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:37 #: allianceauth/menu/constants.py:17 allianceauth/menu/models.py:38
msgid "folder" msgid "folder"
msgstr "" msgstr ""
@@ -1373,47 +1409,47 @@ msgstr ""
msgid "type" msgid "type"
msgstr "" msgstr ""
#: allianceauth/menu/models.py:22 #: allianceauth/menu/models.py:23
msgid "Text to show on menu" msgid "Text to show on menu"
msgstr "" msgstr ""
#: allianceauth/menu/models.py:27 #: allianceauth/menu/models.py:28
msgid "order" msgid "order"
msgstr "" msgstr ""
#: allianceauth/menu/models.py:28 #: allianceauth/menu/models.py:29
msgid "Order of the menu. Lowest First" msgid "Order of the menu. Lowest First"
msgstr "" msgstr ""
#: allianceauth/menu/models.py:38 #: allianceauth/menu/models.py:39
msgid "Folder this item is in (optional)" msgid "Folder this item is in (optional)"
msgstr "" msgstr ""
#: allianceauth/menu/models.py:42 #: allianceauth/menu/models.py:43
msgid "is hidden" msgid "is hidden"
msgstr "" msgstr ""
#: allianceauth/menu/models.py:44 #: allianceauth/menu/models.py:45
msgid "" msgid ""
"Hide this menu item.If this item is a folder all items under it will be " "Hide this menu item.If this item is a folder all items under it will be "
"hidden too" "hidden too"
msgstr "" msgstr ""
#: allianceauth/menu/models.py:59 #: allianceauth/menu/models.py:60
msgid "icon classes" msgid "icon classes"
msgstr "" msgstr ""
#: allianceauth/menu/models.py:61 #: allianceauth/menu/models.py:62
msgid "" msgid ""
"Font Awesome classes to show as icon on menu, e.g. <code>fa-solid fa-house</" "Font Awesome classes to show as icon on menu, e.g. <code>fa-solid fa-house</"
"code>" "code>"
msgstr "" msgstr ""
#: allianceauth/menu/models.py:67 #: allianceauth/menu/models.py:68
msgid "url" msgid "url"
msgstr "" msgstr ""
#: allianceauth/menu/models.py:68 #: allianceauth/menu/models.py:69
msgid "External URL this menu items will link to" msgid "External URL this menu items will link to"
msgstr "" msgstr ""
@@ -1422,6 +1458,7 @@ msgid "Add folder"
msgstr "" msgstr ""
#: allianceauth/menu/templates/menu/menu-notification-block.html:12 #: allianceauth/menu/templates/menu/menu-notification-block.html:12
#: allianceauth/notifications/apps.py:8
#: allianceauth/notifications/templates/notifications/list.html:7 #: allianceauth/notifications/templates/notifications/list.html:7
#: allianceauth/notifications/templates/notifications/list.html:11 #: allianceauth/notifications/templates/notifications/list.html:11
#: allianceauth/templates/allianceauth/notifications_menu_item.html:6 #: allianceauth/templates/allianceauth/notifications_menu_item.html:6
@@ -1447,19 +1484,19 @@ msgstr ""
msgid "Sign In" msgid "Sign In"
msgstr "" msgstr ""
#: allianceauth/notifications/models.py:21 #: allianceauth/notifications/models.py:22
msgid "danger" msgid "danger"
msgstr "" msgstr ""
#: allianceauth/notifications/models.py:22 #: allianceauth/notifications/models.py:23
msgid "warning" msgid "warning"
msgstr "" msgstr ""
#: allianceauth/notifications/models.py:23 #: allianceauth/notifications/models.py:24
msgid "info" msgid "info"
msgstr "" msgstr ""
#: allianceauth/notifications/models.py:24 #: allianceauth/notifications/models.py:25
msgid "success" msgid "success"
msgstr "" msgstr ""
@@ -1516,7 +1553,7 @@ msgstr ""
msgid "Deleted all read notifications." msgid "Deleted all read notifications."
msgstr "" msgstr ""
#: allianceauth/optimer/auth_hooks.py:12 #: allianceauth/optimer/apps.py:8 allianceauth/optimer/auth_hooks.py:12
msgid "Fleet Operations" msgid "Fleet Operations"
msgstr "" msgstr ""
@@ -1590,11 +1627,6 @@ msgstr ""
msgid "Form Up System" msgid "Form Up System"
msgstr "" msgstr ""
#: allianceauth/optimer/templates/optimer/dashboard.ops.html:17
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:18
msgid "EVE Time"
msgstr ""
#: allianceauth/optimer/templates/optimer/fleetoptable.html:14 #: allianceauth/optimer/templates/optimer/fleetoptable.html:14
#: allianceauth/timerboard/templates/timerboard/timertable.html:13 #: allianceauth/timerboard/templates/timerboard/timertable.html:13
msgid "Local Time" msgid "Local Time"
@@ -1610,7 +1642,7 @@ msgstr ""
#: allianceauth/optimer/templates/optimer/management.html:28 #: allianceauth/optimer/templates/optimer/management.html:28
#: allianceauth/timerboard/templates/timerboard/view.html:32 #: allianceauth/timerboard/templates/timerboard/view.html:32
msgid "Current Eve Time:" msgid "Current EVE time:"
msgstr "" msgstr ""
#: allianceauth/optimer/templates/optimer/management.html:36 #: allianceauth/optimer/templates/optimer/management.html:36
@@ -1655,6 +1687,7 @@ msgstr ""
msgid "Saved changes to operation timer for %(opname)s." msgid "Saved changes to operation timer for %(opname)s."
msgstr "" msgstr ""
#: allianceauth/permissions_tool/apps.py:8
#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:7 #: allianceauth/permissions_tool/templates/permissions_tool/audit.html:7
#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:11 #: allianceauth/permissions_tool/templates/permissions_tool/audit.html:11
#: allianceauth/permissions_tool/templates/permissions_tool/audit.html:17 #: allianceauth/permissions_tool/templates/permissions_tool/audit.html:17
@@ -1711,7 +1744,7 @@ msgstr ""
msgid "Successfully set your {self.service_name} password" msgid "Successfully set your {self.service_name} password"
msgstr "" msgstr ""
#: allianceauth/services/auth_hooks.py:12 #: allianceauth/services/apps.py:8 allianceauth/services/auth_hooks.py:12
msgid "Services" msgid "Services"
msgstr "" msgstr ""
@@ -1775,6 +1808,10 @@ msgstr ""
msgid "Password must be at least 8 characters long." msgid "Password must be at least 8 characters long."
msgstr "" msgstr ""
#: allianceauth/services/modules/discord/apps.py:8
msgid "Discord Service"
msgstr ""
#: allianceauth/services/modules/discord/models.py:187 #: allianceauth/services/modules/discord/models.py:187
msgid "Discord Account Disabled" msgid "Discord Account Disabled"
msgstr "" msgstr ""
@@ -1823,6 +1860,10 @@ msgid ""
"again." "again."
msgstr "" msgstr ""
#: allianceauth/services/modules/discourse/apps.py:8
msgid "Discourse Service"
msgstr ""
#: allianceauth/services/modules/discourse/templates/services/discourse/discourse_service_ctrl.html:5 #: allianceauth/services/modules/discourse/templates/services/discourse/discourse_service_ctrl.html:5
msgid "Discourse" msgid "Discourse"
msgstr "" msgstr ""
@@ -1853,6 +1894,14 @@ msgstr ""
msgid "Invalid payload. Please contact support if this problem persists." msgid "Invalid payload. Please contact support if this problem persists."
msgstr "" msgstr ""
#: allianceauth/services/modules/example/apps.py:8
msgid "Example Service"
msgstr ""
#: allianceauth/services/modules/ips4/apps.py:8
msgid "IPS4 Service"
msgstr ""
#: allianceauth/services/modules/ips4/views.py:31 #: allianceauth/services/modules/ips4/views.py:31
msgid "Activated IPSuite4 account." msgid "Activated IPSuite4 account."
msgstr "" msgstr ""
@@ -1876,6 +1925,10 @@ msgstr ""
msgid "Deactivated IPSuite4 account." msgid "Deactivated IPSuite4 account."
msgstr "" msgstr ""
#: allianceauth/services/modules/mumble/apps.py:8
msgid "Mumble Service"
msgstr ""
#: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7 #: allianceauth/services/modules/mumble/templates/services/mumble/mumble_connection_history.html:7
msgid "Mumble" msgid "Mumble"
msgstr "" msgstr ""
@@ -1931,6 +1984,10 @@ msgstr ""
msgid "Mumble Connection History" msgid "Mumble Connection History"
msgstr "" msgstr ""
#: allianceauth/services/modules/openfire/apps.py:8
msgid "Openfire Service"
msgstr ""
#: allianceauth/services/modules/openfire/auth_hooks.py:27 #: allianceauth/services/modules/openfire/auth_hooks.py:27
msgid "Jabber" msgid "Jabber"
msgstr "" msgstr ""
@@ -1982,6 +2039,10 @@ msgstr ""
msgid "Set jabber password." msgid "Set jabber password."
msgstr "" msgstr ""
#: allianceauth/services/modules/phpbb3/apps.py:8
msgid "phpBB3 Service"
msgstr ""
#: allianceauth/services/modules/phpbb3/views.py:34 #: allianceauth/services/modules/phpbb3/views.py:34
msgid "Activated forum account." msgid "Activated forum account."
msgstr "" msgstr ""
@@ -2005,6 +2066,10 @@ msgstr ""
msgid "Set forum password." msgid "Set forum password."
msgstr "" msgstr ""
#: allianceauth/services/modules/smf/apps.py:8
msgid "SMF Service"
msgstr ""
#: allianceauth/services/modules/smf/views.py:52 #: allianceauth/services/modules/smf/views.py:52
msgid "Activated SMF account." msgid "Activated SMF account."
msgstr "" msgstr ""
@@ -2028,6 +2093,10 @@ msgstr ""
msgid "Set SMF password." msgid "Set SMF password."
msgstr "" msgstr ""
#: allianceauth/services/modules/teamspeak3/apps.py:8
msgid "TeamSpeak 3 Service"
msgstr ""
#: allianceauth/services/modules/teamspeak3/forms.py:14 #: allianceauth/services/modules/teamspeak3/forms.py:14
#, python-format #, python-format
msgid "Unable to locate user %s on server" msgid "Unable to locate user %s on server"
@@ -2077,6 +2146,10 @@ msgstr ""
msgid "Reset TeamSpeak3 permission key." msgid "Reset TeamSpeak3 permission key."
msgstr "" msgstr ""
#: allianceauth/services/modules/xenforo/apps.py:8
msgid "Xenforo Service"
msgstr ""
#: allianceauth/services/modules/xenforo/views.py:30 #: allianceauth/services/modules/xenforo/views.py:30
msgid "Activated XenForo account." msgid "Activated XenForo account."
msgstr "" msgstr ""
@@ -2186,7 +2259,7 @@ msgid ""
"Some services provide different options. Hover over the buttons to see more." "Some services provide different options. Hover over the buttons to see more."
msgstr "" msgstr ""
#: allianceauth/srp/auth_hooks.py:14 #: allianceauth/srp/apps.py:8 allianceauth/srp/auth_hooks.py:14
msgid "Ship Replacement" msgid "Ship Replacement"
msgstr "" msgstr ""
@@ -2261,18 +2334,18 @@ msgid "Mark Completed"
msgstr "" msgstr ""
#: allianceauth/srp/templates/srp/data.html:48 #: allianceauth/srp/templates/srp/data.html:48
#: allianceauth/srp/templates/srp/data.html:139 #: allianceauth/srp/templates/srp/data.html:142
msgid "Total Losses:" msgid "Total Losses:"
msgstr "" msgstr ""
#: allianceauth/srp/templates/srp/data.html:49 #: allianceauth/srp/templates/srp/data.html:49
#: allianceauth/srp/templates/srp/data.html:140 #: allianceauth/srp/templates/srp/data.html:143
#: allianceauth/srp/templates/srp/management.html:36 #: allianceauth/srp/templates/srp/management.html:36
msgid "Total ISK Cost:" msgid "Total ISK Cost:"
msgstr "" msgstr ""
#: allianceauth/srp/templates/srp/data.html:60 #: allianceauth/srp/templates/srp/data.html:60
#: allianceauth/srp/templates/srp/data.html:151 #: allianceauth/srp/templates/srp/data.html:154
msgid "Are you sure you want to delete SRP requests?" msgid "Are you sure you want to delete SRP requests?"
msgstr "" msgstr ""
@@ -2304,12 +2377,12 @@ msgstr ""
msgid "Post Time" msgid "Post Time"
msgstr "" msgstr ""
#: allianceauth/srp/templates/srp/data.html:99 #: allianceauth/srp/templates/srp/data.html:102
#: allianceauth/srp/templates/srp/management.html:70 #: allianceauth/srp/templates/srp/management.html:70
msgid "Link" msgid "Link"
msgstr "" msgstr ""
#: allianceauth/srp/templates/srp/data.html:160 #: allianceauth/srp/templates/srp/data.html:163
msgid "No SRP requests for this fleet." msgid "No SRP requests for this fleet."
msgstr "" msgstr ""
@@ -2493,52 +2566,48 @@ msgstr ""
msgid "Alliance Auth Notifications" msgid "Alliance Auth Notifications"
msgstr "" msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:18 #: allianceauth/templates/allianceauth/admin-status/overview.html:20
msgid "Closed"
msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:24
msgid "No notifications at this time" msgid "No notifications at this time"
msgstr "" msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:33 #: allianceauth/templates/allianceauth/admin-status/overview.html:29
msgid "Powered by GitLab" msgid "Powered by GitLab"
msgstr "" msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:39 #: allianceauth/templates/allianceauth/admin-status/overview.html:35
msgid "Support Discord" msgid "Support Discord"
msgstr "" msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:49
#: allianceauth/templates/allianceauth/admin-status/overview.html:53 #: allianceauth/templates/allianceauth/admin-status/overview.html:53
#: allianceauth/templates/allianceauth/admin-status/overview.html:57
msgid "Software Version" msgid "Software Version"
msgstr "" msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:60 #: allianceauth/templates/allianceauth/admin-status/overview.html:56
msgid "Current" msgid "Current"
msgstr "" msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:67 #: allianceauth/templates/allianceauth/admin-status/overview.html:63
msgid "Latest Stable" msgid "Latest Stable"
msgstr "" msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:72 #: allianceauth/templates/allianceauth/admin-status/overview.html:68
msgid "Update available" msgid "Update available"
msgstr "" msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:80 #: allianceauth/templates/allianceauth/admin-status/overview.html:76
msgid "Latest Pre-Release" msgid "Latest Pre-Release"
msgstr "" msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:85 #: allianceauth/templates/allianceauth/admin-status/overview.html:81
msgid "Pre-Release available" msgid "Pre-Release available"
msgstr "" msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:95 #: allianceauth/templates/allianceauth/admin-status/overview.html:91
msgid "Task Queue" msgid "Task Queue"
msgstr "" msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:100 #: allianceauth/templates/allianceauth/admin-status/overview.html:96
#, python-format #, python-format
msgid "" msgid ""
"\n" "\n"
@@ -2547,11 +2616,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:116 #: allianceauth/templates/allianceauth/admin-status/overview.html:112
msgid "running" msgid "running"
msgstr "" msgstr ""
#: allianceauth/templates/allianceauth/admin-status/overview.html:117 #: allianceauth/templates/allianceauth/admin-status/overview.html:113
msgid "queued" msgid "queued"
msgstr "" msgstr ""
@@ -2580,6 +2649,13 @@ msgstr ""
msgid "Select Theme" msgid "Select Theme"
msgstr "" msgstr ""
#: allianceauth/timerboard/apps.py:8
#: allianceauth/timerboard/templates/timerboard/form.html:10
#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10
#: allianceauth/timerboard/templates/timerboard/view.html:14
msgid "Structure Timers"
msgstr ""
#: allianceauth/timerboard/form.py:36 #: allianceauth/timerboard/form.py:36
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:14
#: allianceauth/timerboard/templates/timerboard/timertable.html:8 #: allianceauth/timerboard/templates/timerboard/timertable.html:8
@@ -2766,6 +2842,10 @@ msgstr ""
msgid "Abandoned" msgid "Abandoned"
msgstr "" msgstr ""
#: allianceauth/timerboard/models.py:60
msgid "Theft"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7 #: allianceauth/timerboard/templates/timerboard/dashboard.timers.html:7
#: allianceauth/timerboard/templates/timerboard/view.html:54 #: allianceauth/timerboard/templates/timerboard/view.html:54
msgid "Upcoming Timers" msgid "Upcoming Timers"
@@ -2775,12 +2855,6 @@ msgstr ""
msgid "Timer" msgid "Timer"
msgstr "" msgstr ""
#: allianceauth/timerboard/templates/timerboard/form.html:10
#: allianceauth/timerboard/templates/timerboard/timer_confirm_delete.html:10
#: allianceauth/timerboard/templates/timerboard/view.html:14
msgid "Structure Timers"
msgstr ""
#: allianceauth/timerboard/templates/timerboard/form.html:25 #: allianceauth/timerboard/templates/timerboard/form.html:25
msgid "Structure Timer Details" msgid "Structure Timer Details"
msgstr "" msgstr ""

View File

@@ -27,7 +27,7 @@
</a> </a>
{% if item.count >= 1 %} {% 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 }} {{ item.count }}
</span> </span>
{% elif item.url %} {% elif item.url %}

View File

@@ -2,8 +2,8 @@
{% load navactive %} {% load navactive %}
{% load auth_notifications %} {% load auth_notifications %}
<li class="nav-item {% navactive request 'notifications:' %}" id="menu_item_notifications"> <li class="nav-item" id="menu_item_notifications">
<a class="nav-link" href="{% url 'notifications:list' %}"> <a class="nav-link {% navactive request 'notifications:' %}" href="{% url 'notifications:list' %}">
{% with unread_count=request.user|user_unread_notification_count %} {% with unread_count=request.user|user_unread_notification_count %}
<i class="fa-solid fa-bell{% if unread_count %} text-danger{% endif %}"></i> <i class="fa-solid fa-bell{% if unread_count %} text-danger{% endif %}"></i>
{% endwith %} {% endwith %}

View File

@@ -5,7 +5,7 @@
<div class="col-auto px-0"> <div class="col-auto px-0">
<div class="collapse collapse-horizontal" tabindex="-1" id="sidebar"> <div class="collapse collapse-horizontal" tabindex="-1" id="sidebar">
<div> <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 %} {% if user.is_authenticated %}
<ul id="sidebar-menu" class="navbar-nav flex-column mb-auto overflow-auto pt-2"> <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"> <li class="d-flex flex-wrap m-2 p-2 pt-0 pb-0 mt-0 mb-0 me-0 pe-0">

View File

@@ -15,14 +15,14 @@
<li class="nav-item"> <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"> <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" %} {% translate "Unread" %}
<span class="badge bg-secondary">{{ unread|length }}</span> <span class="badge text-bg-secondary">{{ unread|length }}</span>
</a> </a>
</li> </li>
<li class="nav-item"> <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"> <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" %} {% translate "Read" %}
<span class="badge bg-secondary">{{ read|length }}</span> <span class="badge text-bg-secondary">{{ read|length }}</span>
</a> </a>
</li> </li>
{% endblock %} {% endblock %}

View File

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

View File

@@ -24,7 +24,7 @@
{% block content %} {% block content %}
<div> <div>
<div class="text-center mb-3"> <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> <b>{% translate "Current EVE time:" %}</b>
<span id="current-time"></span> <span id="current-time"></span>
</div> </div>

View File

@@ -439,6 +439,7 @@ class TestUserHasAccount(NoSocketsTestCase):
def test_return_false_if_user_does_not_exist(self): def test_return_false_if_user_does_not_exist(self):
my_user = User(username='Dummy') my_user = User(username='Dummy')
my_user.save()
self.assertFalse(DiscordUser.objects.user_has_account(my_user)) self.assertFalse(DiscordUser.objects.user_has_account(my_user))
def test_return_false_if_not_called_with_user_object(self): def test_return_false_if_not_called_with_user_object(self):

View File

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

View File

@@ -92,11 +92,14 @@ ESC to cancel{% endblocktranslate %}" id="blah"></i></th>
{{ srpfleetrequest.character.alliance.alliance_ticker }} {{ srpfleetrequest.character.alliance.alliance_ticker }}
{% endif %} {% endif %}
[{{ srpfleetrequest.character.corporation.corporation_ticker }}] [{{ 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>
<td> <td>
<a href="{{ srpfleetrequest.killboard_link }}" <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>
<td>{{ srpfleetrequest.additional_info }}</td> <td>{{ srpfleetrequest.additional_info }}</td>
<td>{{ srpfleetrequest.srp_ship_name }}</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 data-sort="{{ srpfleetrequest.post_time | date:"Y-m-d H:i" }}">{{ srpfleetrequest.post_time | date:"Y-M-d H:i" }}</td>
<td> <td>
{% if srpfleetrequest.srp_status == "Approved" %} {% if srpfleetrequest.srp_status == "Approved" %}
<div class="badge bg-success"> <div class="badge text-bg-success">
{% translate "Approved" %} {% translate "Approved" %}
</div> </div>
{% elif srpfleetrequest.srp_status == "Rejected" %} {% elif srpfleetrequest.srp_status == "Rejected" %}
<div class="badge bg-danger"> <div class="badge text-bg-danger">
{% translate "Rejected" %} {% translate "Rejected" %}
</div> </div>
{% else %} {% else %}
<div class="badge bg-warning"> <div class="badge text-bg-warning">
{% translate "Pending" %} {% translate "Pending" %}
</div> </div>
{% endif %} {% 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({ elementTableSrpList.DataTable({
language: {url: '{{ DT_LANG_PATH }}'}, language: {url: '{{ DT_LANG_PATH }}'},
"order": [[ 6, "asc" ]], "order": [[ 6, "asc" ]],
"paging": false, "paging": false,
"columnDefs": [ "columnDefs": [
{ {
"targets": [1, 8], "targets": nonOrderableTargets,
"orderable": false "orderable": false
}, },
{ {

View File

@@ -61,20 +61,20 @@
<td>{{ srpfleet.fleet_time | date:"Y-m-d H:i" }}</td> <td>{{ srpfleet.fleet_time | date:"Y-m-d H:i" }}</td>
<td>{{ srpfleet.fleet_doctrine }}</td> <td>{{ srpfleet.fleet_doctrine }}</td>
<td> <td>
<div class="badge bg-success"> <div class="badge text-bg-success">
{{ srpfleet.fleet_commander.character_name }} {{ srpfleet.fleet_commander.character_name }}
</div> </div>
</td> </td>
<td> <td>
{% if srpfleet.fleet_srp_aar_link %} {% 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 %} {% endif %}
</td> </td>
<td> <td>
{% if srpfleet.fleet_srp_code %} {% 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 %} {% else %}
<div class="badge bg-danger"> <div class="badge text-bg-danger">
{% translate "Disabled" %} {% translate "Disabled" %}
</div> </div>
{% endif %} {% endif %}
@@ -83,17 +83,17 @@
<td> <td>
{% if srpfleet.fleet_srp_status == "" %} {% if srpfleet.fleet_srp_status == "" %}
<div class="badge bg-warning"> <div class="badge text-bg-warning">
{% translate "Pending" %} {% translate "Pending" %}
</div> </div>
{% else %} {% else %}
<div class="badge bg-success"> <div class="badge text-bg-success">
{% translate "Completed" %} {% translate "Completed" %}
</div> </div>
{% endif %} {% endif %}
</td> </td>
<td> <td>
<div class="badge bg-warning">{{ srpfleet.pending_requests }}</div> <div class="badge text-bg-warning">{{ srpfleet.pending_requests }}</div>
</td> </td>
<td class="text-end text-nowrap"> <td class="text-end text-nowrap">
<a href="{% url 'srp:fleet' srpfleet.id %}" class="btn btn-primary btn-sm m-1" title="View"> <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 %} {% load admin_status %}
<div <div
class="progress-bar bg-{{ level }} task-status-progress-bar" class="progress-bar text-bg-{{ level }} task-status-progress-bar"
role="progressbar" role="progressbar"
aria-valuenow="{% decimal_widthratio tasks_count tasks_total 100 %}" aria-valuenow="{% decimal_widthratio tasks_count tasks_total 100 %}"
aria-valuemin="0" aria-valuemin="0"

View File

@@ -12,7 +12,7 @@
<ul class="list-group"> <ul class="list-group">
{% for notif in notifications %} {% for notif in notifications %}
<li class="list-group-item"> <li class="list-group-item">
<span class="badge bg-success me-2">{% translate "Open" %}</span> <span class="badge text-bg-success me-2">{% translate "Open" %}</span>
<a href="{{ notif.web_url }}" target="_blank">#{{ notif.iid }} {{ notif.title }}</a> <a href="{{ notif.web_url }}" target="_blank">#{{ notif.iid }} {{ notif.title }}</a>
</li> </li>
{% empty %} {% empty %}
@@ -24,13 +24,13 @@
<div class="text-end pt-3"> <div class="text-end pt-3">
<a href="https://gitlab.com/allianceauth/allianceauth/issues" target="_blank" class="me-1 text-decoration-none"> <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> <i class="fab fa-gitlab" aria-hidden="true"></i>
{% translate 'Powered by GitLab' %} {% translate 'Powered by GitLab' %}
</span> </span>
</a> </a>
<a href="https://discord.com/invite/fjnHAmk" target="_blank" class="text-decoration-none"> <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> <i class="fab fa-discord" aria-hidden="true"></i>
{% translate 'Support Discord' %} {% translate 'Support Discord' %}
</span> </span>
@@ -58,7 +58,7 @@
</div> </div>
</li> </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 }}"> <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> <h5 class="list-group-item-heading">{% translate "Latest Stable" %}</h5>
@@ -71,7 +71,7 @@
</li> </li>
{% if latest_beta %} {% 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 }}"> <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> <h5 class="list-group-item-heading">{% translate "Latest Pre-Release" %}</h5>

View File

@@ -39,7 +39,7 @@
<body> <body>
<!-- Top Menu, Blocks don't work in "include" tagged views --> <!-- 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"> <div class="container-fluid justify-content-start">
<a class="navbar-brand" data-bs-toggle="collapse" data-bs-target="#sidebar" role="button"> <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> <i class="fa-solid fa-bars ms-2 me-2"></i>

View File

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

View File

@@ -78,6 +78,13 @@ class AuthUtils:
except State.DoesNotExist: except State.DoesNotExist:
return cls.create_state('Member', 100, disconnect_signals=True) return cls.create_state('Member', 100, disconnect_signals=True)
@classmethod
def get_blue_state(cls):
try:
return State.objects.get(name='Blue')
except State.DoesNotExist:
return cls.create_state('Blue', 50, disconnect_signals=True)
@classmethod @classmethod
def get_guest_state(cls): def get_guest_state(cls):
cls.disconnect_signals() cls.disconnect_signals()

View File

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

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB