mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 12:30:15 +02:00
FAT uses ESI tokens to get character location/ship - closes #564 Pull corp memebrship data from ESI Additional permissions for non-api viewing. - migration to convert permissions from old users. Standardize EVE datasource responses. - allow different sources for EVE data types. Allow empty values for character alliance id and name Allow multiple corps and alliances to be considered 'members'
43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
from django.db import models
|
|
from authentication.models import AuthServicesInfo
|
|
from eveonline.models import EveCharacter
|
|
|
|
|
|
class CorpStatsQuerySet(models.QuerySet):
|
|
def visible_to(self, user):
|
|
# superusers get all visible
|
|
if user.is_superuser:
|
|
return self
|
|
|
|
auth = AuthServicesInfo.objects.get_or_create(user=user)[0]
|
|
try:
|
|
char = EveCharacter.objects.get(character_id=auth.main_char_id)
|
|
# build all accepted queries
|
|
queries = []
|
|
if user.has_perm('corputils.view_corp_corpstats'):
|
|
queries.append(models.Q(corp__corporation_id=char.corporation_id))
|
|
if user.has_perm('corputils.view_alliance_corpstats'):
|
|
queries.append(models.Q(corp__alliance__alliance_id=char.alliance_id))
|
|
if user.has_perm('corputils.view_blue_corpstats'):
|
|
queries.append(models.Q(corp__is_blue=True))
|
|
|
|
# filter based on queries
|
|
if queries:
|
|
query = queries.pop()
|
|
for q in queries:
|
|
query |= q
|
|
return self.filter(query)
|
|
else:
|
|
# not allowed to see any
|
|
return self.none()
|
|
except EveCharacter.DoesNotExist:
|
|
return self.none()
|
|
|
|
|
|
class CorpStatsManager(models.Manager):
|
|
def get_queryset(self):
|
|
return CorpStatsQuerySet(self.model, using=self._db)
|
|
|
|
def visible_to(self, user):
|
|
return self.get_queryset().visible_to(user)
|