mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-04 14:16:21 +01:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
337c4d9ce5 | ||
|
|
9afc36a009 | ||
|
|
ebff1387c1 | ||
|
|
801502ec77 | ||
|
|
c07f59201e |
@@ -1,6 +1,6 @@
|
|||||||
# 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__ = '2.3.0'
|
__version__ = '2.4.0'
|
||||||
NAME = 'Alliance Auth v%s' % __version__
|
NAME = 'Alliance Auth v%s' % __version__
|
||||||
default_app_config = 'allianceauth.apps.AllianceAuthConfig'
|
default_app_config = 'allianceauth.apps.AllianceAuthConfig'
|
||||||
|
|||||||
@@ -29,9 +29,9 @@
|
|||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<ul class="nav nav-pills pull-left">
|
<ul class="nav nav-pills pull-left">
|
||||||
<li class="active"><a href="#mains" data-toggle="pill">{% trans 'Mains' %} ({{ corpstats.main_count }})</a></li>
|
<li class="active"><a href="#mains" data-toggle="pill">{% trans 'Mains' %} ({{ total_mains }})</a></li>
|
||||||
<li><a href="#members" data-toggle="pill">{% trans 'Members' %} ({{ corpstats.member_count }})</a></li>
|
<li><a href="#members" data-toggle="pill">{% trans 'Members' %} ({{ corpstats.member_count }})</a></li>
|
||||||
<li><a href="#unregistered" data-toggle="pill">{% trans 'Unregistered' %} ({{ corpstats.unregistered_member_count }})</a></li>
|
<li><a href="#unregistered" data-toggle="pill">{% trans 'Unregistered' %} ({{ unregistered.count }})</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
{% trans "Last update:" %} {{ corpstats.last_update|naturaltime }}
|
{% trans "Last update:" %} {{ corpstats.last_update|naturaltime }}
|
||||||
@@ -54,14 +54,14 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for main in mains %}
|
{% for id, main in mains.items %}
|
||||||
<tr>
|
<tr>
|
||||||
<td class="text-center" style="vertical-align:middle">
|
<td class="text-center" style="vertical-align:middle">
|
||||||
<div class="thumbnail"
|
<div class="thumbnail"
|
||||||
style="border: 0 none; box-shadow: none; background: transparent;">
|
style="border: 0 none; box-shadow: none; background: transparent;">
|
||||||
<img src="{{ main.portrait_url_64 }}" class="img-circle">
|
<img src="{{ main.main.portrait_url_64 }}" class="img-circle">
|
||||||
<div class="caption text-center">
|
<div class="caption text-center">
|
||||||
{{ main }}
|
{{ main.main }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@@ -119,16 +119,29 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for member in members %}
|
{% for member in members %}
|
||||||
<tr {% if not member.registered %}class="danger"{% endif %}>
|
<tr>
|
||||||
|
<td><img src="{{ member.portrait_url }}" class="img-circle"></td>
|
||||||
|
<td class="text-center">{{ member }}</td>
|
||||||
|
<td class="text-center"><a
|
||||||
|
href="https://zkillboard.com/character/{{ member.character_id }}/"
|
||||||
|
class="label label-danger"
|
||||||
|
target="_blank">{% trans "Killboard" %}</a></td>
|
||||||
|
<td class="text-center">{{ member.character_ownership.user.profile.main_character.character_name }}</td>
|
||||||
|
<td class="text-center">{{ member.character_ownership.user.profile.main_character.corporation_name }}</td>
|
||||||
|
<td class="text-center">{{ member.character_ownership.user.profile.main_character.alliance_name }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
{% for member in unregistered %}
|
||||||
|
<tr class="danger">
|
||||||
<td><img src="{{ member.portrait_url }}" class="img-circle"></td>
|
<td><img src="{{ member.portrait_url }}" class="img-circle"></td>
|
||||||
<td class="text-center">{{ member.character_name }}</td>
|
<td class="text-center">{{ member.character_name }}</td>
|
||||||
<td class="text-center"><a
|
<td class="text-center"><a
|
||||||
href="https://zkillboard.com/character/{{ member.character_id }}/"
|
href="https://zkillboard.com/character/{{ member.character_id }}/"
|
||||||
class="label label-danger"
|
class="label label-danger"
|
||||||
target="_blank">{% trans "Killboard" %}</a></td>
|
target="_blank">{% trans "Killboard" %}</a></td>
|
||||||
<td class="text-center">{{ member.main_character.character_name }}</td>
|
<td class="text-center"></td>
|
||||||
<td class="text-center">{{ member.main_character.corporation_name }}</td>
|
<td class="text-center"></td>
|
||||||
<td class="text-center">{{ member.main_character.alliance_name }}</td>
|
<td class="text-center"></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
@@ -3,14 +3,14 @@ import os
|
|||||||
from bravado.exception import HTTPError
|
from bravado.exception import HTTPError
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth.decorators import login_required, permission_required, user_passes_test
|
from django.contrib.auth.decorators import login_required, permission_required, user_passes_test
|
||||||
from django.core.exceptions import PermissionDenied
|
from django.core.exceptions import PermissionDenied, ObjectDoesNotExist
|
||||||
from django.db import IntegrityError
|
from django.db import IntegrityError
|
||||||
from django.shortcuts import render, redirect, get_object_or_404
|
from django.shortcuts import render, redirect, get_object_or_404
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from esi.decorators import token_required
|
from esi.decorators import token_required
|
||||||
from allianceauth.eveonline.models import EveCharacter, EveCorporationInfo
|
from allianceauth.eveonline.models import EveCharacter, EveCorporationInfo
|
||||||
|
|
||||||
from .models import CorpStats
|
from .models import CorpStats, CorpMember
|
||||||
|
|
||||||
SWAGGER_SPEC_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'swagger.json')
|
SWAGGER_SPEC_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'swagger.json')
|
||||||
"""
|
"""
|
||||||
@@ -68,7 +68,7 @@ def corpstats_view(request, corp_id=None):
|
|||||||
corpstats = get_object_or_404(CorpStats, corp=corp)
|
corpstats = get_object_or_404(CorpStats, corp=corp)
|
||||||
|
|
||||||
# get available models
|
# get available models
|
||||||
available = CorpStats.objects.visible_to(request.user).order_by('corp__corporation_name')
|
available = CorpStats.objects.visible_to(request.user).order_by('corp__corporation_name').select_related('corp')
|
||||||
|
|
||||||
# ensure we can see the requested model
|
# ensure we can see the requested model
|
||||||
if corpstats and corpstats not in available:
|
if corpstats and corpstats not in available:
|
||||||
@@ -89,13 +89,49 @@ def corpstats_view(request, corp_id=None):
|
|||||||
}
|
}
|
||||||
|
|
||||||
if corpstats:
|
if corpstats:
|
||||||
members = corpstats.members.all()
|
character_list = CorpMember.objects.filter(corpstats=corpstats)
|
||||||
mains = corpstats.mains.all()
|
linked_chars = EveCharacter.objects.filter(
|
||||||
unregistered = corpstats.unregistered_members.all()
|
character_id__in=character_list.values_list('character_id', flat=True))
|
||||||
|
linked_chars = linked_chars | EveCharacter.objects.filter(
|
||||||
|
character_ownership__user__profile__main_character__corporation_id=corpstats.corp.corporation_id)
|
||||||
|
|
||||||
|
linked_chars = linked_chars.select_related('character_ownership',
|
||||||
|
'character_ownership__user__profile__main_character') \
|
||||||
|
.prefetch_related('character_ownership__user__character_ownerships') \
|
||||||
|
.prefetch_related('character_ownership__user__character_ownerships__character')
|
||||||
|
|
||||||
|
members = []
|
||||||
|
mains = {}
|
||||||
|
|
||||||
|
temp_ids = []
|
||||||
|
for char in linked_chars:
|
||||||
|
try:
|
||||||
|
main = char.character_ownership.user.profile.main_character
|
||||||
|
if main is not None:
|
||||||
|
if main.character_id not in mains:
|
||||||
|
mains[main.character_id] = {'main':main, 'alts':[]}
|
||||||
|
|
||||||
|
mains[main.character_id]['alts'].append(char)
|
||||||
|
|
||||||
|
if char.corporation_id == corpstats.corp.corporation_id:
|
||||||
|
members.append(char)
|
||||||
|
|
||||||
|
temp_ids.append(char.character_id)
|
||||||
|
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
pass
|
||||||
|
|
||||||
|
unregistered = character_list.exclude(character_id__in=temp_ids)
|
||||||
|
|
||||||
|
members = members
|
||||||
|
mains = mains
|
||||||
|
total_mains = len(mains)
|
||||||
|
unregistered = unregistered
|
||||||
context.update({
|
context.update({
|
||||||
'corpstats': corpstats,
|
'corpstats': corpstats,
|
||||||
'members': members,
|
'members': members,
|
||||||
'mains': mains,
|
'mains': mains,
|
||||||
|
'total_mains': total_mains,
|
||||||
'unregistered': unregistered,
|
'unregistered': unregistered,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ Alliance Auth can be installed on any operating system. Dependencies are provide
|
|||||||
|
|
||||||
### Python
|
### Python
|
||||||
|
|
||||||
Alliance Auth requires python3.4 or higher. Ensure it is installed on your server before proceeding.
|
Alliance Auth requires python3.5 or higher. Ensure it is installed on your server before proceeding.
|
||||||
|
|
||||||
Ubuntu:
|
Ubuntu:
|
||||||
|
|
||||||
|
|||||||
18
setup.py
18
setup.py
@@ -11,28 +11,27 @@ install_requires = [
|
|||||||
'mysqlclient',
|
'mysqlclient',
|
||||||
'dnspython',
|
'dnspython',
|
||||||
'passlib',
|
'passlib',
|
||||||
'requests>=2.9.1',
|
'requests>=2.9.1,<3.0.0',
|
||||||
'bcrypt',
|
'bcrypt',
|
||||||
'python-slugify>=1.2',
|
'python-slugify>=1.2',
|
||||||
'requests-oauthlib',
|
'requests-oauthlib',
|
||||||
'semantic_version',
|
'semantic_version',
|
||||||
|
|
||||||
'redis<=2.10.6',
|
'redis>=3.3.1,<4.0.0',
|
||||||
'celery>=4.0.2,<4.3.0',
|
'celery>=4.3.0,<5.0.0',
|
||||||
'celery_once',
|
'celery_once',
|
||||||
|
|
||||||
'django>=2.0,<3.0',
|
'django>=2.0,<3.0',
|
||||||
'django-bootstrap-form',
|
'django-bootstrap-form',
|
||||||
'django-registration==2.4',
|
'django-registration==2.4',
|
||||||
'django-sortedm2m',
|
'django-sortedm2m',
|
||||||
'django-redis-cache==1.8.1',
|
'django-redis-cache>=2.1.0,<3.0.0',
|
||||||
'django-celery-beat<=1.1.1',
|
'django-celery-beat>=1.1.1,<2.0.0',
|
||||||
|
|
||||||
'openfire-restapi',
|
'openfire-restapi',
|
||||||
'sleekxmpp',
|
'sleekxmpp',
|
||||||
|
|
||||||
'adarnauth-esi>=1.4.10,<2.0',
|
'django-esi>=1.5.0,<2.0'
|
||||||
'kombu<=4.3.0',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
testing_extras = [
|
testing_extras = [
|
||||||
@@ -52,10 +51,9 @@ setup(
|
|||||||
long_description_content_type='text/markdown',
|
long_description_content_type='text/markdown',
|
||||||
install_requires=install_requires,
|
install_requires=install_requires,
|
||||||
extras_require={
|
extras_require={
|
||||||
'testing': testing_extras,
|
'testing': testing_extras
|
||||||
':python_version=="3.4"': ['typing'],
|
|
||||||
},
|
},
|
||||||
python_requires='~=3.4',
|
python_requires='~=3.5',
|
||||||
license='GPLv2',
|
license='GPLv2',
|
||||||
packages=['allianceauth'],
|
packages=['allianceauth'],
|
||||||
url='https://gitlab.com/allianceauth/allianceauth',
|
url='https://gitlab.com/allianceauth/allianceauth',
|
||||||
|
|||||||
Reference in New Issue
Block a user