mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-14 23:10:15 +02:00
Remove references to legacy is_blue attributes
Provide simple EVE model creation forms with ID, populate the rest from providers Correct handling of non-main characters in signals
This commit is contained in:
parent
54262a850d
commit
64e7c6093e
@ -113,5 +113,7 @@ def assign_state_on_reactivate(sender, instance, *args, **kwargs):
|
|||||||
@receiver(post_save, sender=EveCharacter)
|
@receiver(post_save, sender=EveCharacter)
|
||||||
def check_state_on_character_update(sender, instance, *args, **kwargs):
|
def check_state_on_character_update(sender, instance, *args, **kwargs):
|
||||||
# if this is a main character updating, check that user's state
|
# if this is a main character updating, check that user's state
|
||||||
if instance.userprofile:
|
try:
|
||||||
instance.userprofile.assign_state()
|
instance.userprofile.assign_state()
|
||||||
|
except UserProfile.DoesNotExist:
|
||||||
|
pass
|
||||||
|
@ -16,8 +16,6 @@ class CorpStatsQuerySet(models.QuerySet):
|
|||||||
queries.append(models.Q(corp__corporation_id=char.corporation_id))
|
queries.append(models.Q(corp__corporation_id=char.corporation_id))
|
||||||
if user.has_perm('corputils.view_alliance_corpstats'):
|
if user.has_perm('corputils.view_alliance_corpstats'):
|
||||||
queries.append(models.Q(corp__alliance__alliance_id=char.alliance_id))
|
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
|
# filter based on queries
|
||||||
if queries:
|
if queries:
|
||||||
|
@ -1,14 +1,81 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
from django import forms
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
from eveonline.models import EveCharacter
|
from eveonline.models import EveCharacter
|
||||||
from eveonline.models import EveAllianceInfo
|
from eveonline.models import EveAllianceInfo
|
||||||
from eveonline.models import EveCorporationInfo
|
from eveonline.models import EveCorporationInfo
|
||||||
|
from eveonline.managers import EveManager
|
||||||
admin.site.register(EveAllianceInfo)
|
from eveonline.providers import ObjectNotFound
|
||||||
admin.site.register(EveCorporationInfo)
|
|
||||||
|
|
||||||
|
|
||||||
|
class EveEntityForm(forms.ModelForm):
|
||||||
|
id = forms.IntegerField(min_value=1)
|
||||||
|
entity_type_name = None # override in subclass
|
||||||
|
entity_model_class = None
|
||||||
|
|
||||||
|
def clean_id(self):
|
||||||
|
try:
|
||||||
|
assert getattr(EveManager, 'get_%s' % self.entity_type_name)(self.cleaned_data['id'])
|
||||||
|
except (AssertionError, ObjectNotFound):
|
||||||
|
raise forms.ValidationError('%s with ID %s not found.' % (self.entity_type_name, self.cleaned_data['id']))
|
||||||
|
if self.entity_model_class.objects.filter(
|
||||||
|
**{'%s_id' % self.entity_type_name: self.cleaned_data['id']}).exists():
|
||||||
|
raise forms.ValidationError(
|
||||||
|
'%s with ID %s already exists.' % (self.entity_type_name, self.cleaned_data['id']))
|
||||||
|
return self.cleaned_data['id']
|
||||||
|
|
||||||
|
def save(self, commit=True):
|
||||||
|
return getattr(EveManager, 'create_%s' % self.entity_type_name)(self.cleaned_data['id'])
|
||||||
|
|
||||||
|
def save_m2m(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class EveCharacterForm(EveEntityForm):
|
||||||
|
entity_model_class = EveCharacter
|
||||||
|
entity_type_name = 'character'
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
fields = ['id']
|
||||||
|
model = EveCharacter
|
||||||
|
|
||||||
|
|
||||||
|
class EveCorporationForm(EveEntityForm):
|
||||||
|
entity_model_class = EveCorporationInfo
|
||||||
|
entity_type_name = 'corporation'
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
fields = ['id']
|
||||||
|
model = EveCorporationInfo
|
||||||
|
|
||||||
|
|
||||||
|
class EveAllianceForm(EveEntityForm):
|
||||||
|
entity_model_class = EveAllianceInfo
|
||||||
|
entity_type_name = 'alliance'
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
fields = ['id']
|
||||||
|
model = EveAllianceInfo
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(EveCorporationInfo)
|
||||||
|
class EveCorporationInfoAdmin(admin.ModelAdmin):
|
||||||
|
def get_form(self, request, obj=None, **kwargs):
|
||||||
|
if not obj or not obj.pk:
|
||||||
|
return EveCorporationForm
|
||||||
|
return super(EveCorporationInfoAdmin, self).get_form(request, obj=obj, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(EveAllianceInfo)
|
||||||
|
class EveAllianceInfoAdmin(admin.ModelAdmin):
|
||||||
|
def get_form(self, request, obj=None, **kwargs):
|
||||||
|
if not obj or not obj.pk:
|
||||||
|
return EveAllianceForm
|
||||||
|
return super(EveAllianceInfoAdmin, self).get_form(request, obj=obj, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(EveCharacter)
|
||||||
class EveCharacterAdmin(admin.ModelAdmin):
|
class EveCharacterAdmin(admin.ModelAdmin):
|
||||||
search_fields = ['character_name', 'corporation_name', 'alliance_name', 'character_ownership__user__username']
|
search_fields = ['character_name', 'corporation_name', 'alliance_name', 'character_ownership__user__username']
|
||||||
list_display = ('character_name', 'corporation_name', 'alliance_name', 'user', 'main_character')
|
list_display = ('character_name', 'corporation_name', 'alliance_name', 'user', 'main_character')
|
||||||
@ -27,5 +94,7 @@ class EveCharacterAdmin(admin.ModelAdmin):
|
|||||||
except (AttributeError, ObjectDoesNotExist):
|
except (AttributeError, ObjectDoesNotExist):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def get_form(self, request, obj=None, **kwargs):
|
||||||
admin.site.register(EveCharacter, EveCharacterAdmin)
|
if not obj or not obj.pk:
|
||||||
|
return EveCharacterForm
|
||||||
|
return super(EveCharacterAdmin, self).get_form(request, obj=obj, **kwargs)
|
||||||
|
@ -58,28 +58,26 @@ class EveManager(object):
|
|||||||
return cls.get_adapter().get_alliance(alliance_id)
|
return cls.get_adapter().get_alliance(alliance_id)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create_alliance(id, is_blue=False):
|
def create_alliance(id):
|
||||||
return EveManager.create_alliance_obj(EveManager.get_alliance(id), is_blue=is_blue)
|
return EveManager.create_alliance_obj(EveManager.get_alliance(id))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create_alliance_obj(alliance, is_blue=False):
|
def create_alliance_obj(alliance):
|
||||||
return EveAllianceInfo.objects.create(
|
return EveAllianceInfo.objects.create(
|
||||||
alliance_id=alliance.id,
|
alliance_id=alliance.id,
|
||||||
alliance_name=alliance.name,
|
alliance_name=alliance.name,
|
||||||
alliance_ticker=alliance.ticker,
|
alliance_ticker=alliance.ticker,
|
||||||
executor_corp_id=alliance.executor_corp_id,
|
executor_corp_id=alliance.executor_corp_id,
|
||||||
is_blue=is_blue,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def update_alliance(id, is_blue=None):
|
def update_alliance(id):
|
||||||
return EveManager.update_alliance_obj(EveManager.get_alliance(id), is_blue=is_blue)
|
return EveManager.update_alliance_obj(EveManager.get_alliance(id))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def update_alliance_obj(alliance, is_blue=None):
|
def update_alliance_obj(alliance):
|
||||||
model = EveAllianceInfo.objects.get(alliance_id=alliance.id)
|
model = EveAllianceInfo.objects.get(alliance_id=alliance.id)
|
||||||
model.executor_corp_id = alliance.executor_corp_id
|
model.executor_corp_id = alliance.executor_corp_id
|
||||||
model.is_blue = model.is_blue if is_blue is None else is_blue
|
|
||||||
model.save()
|
model.save()
|
||||||
return model
|
return model
|
||||||
|
|
||||||
@ -89,23 +87,21 @@ class EveManager(object):
|
|||||||
alliance = EveManager.get_alliance(id)
|
alliance = EveManager.get_alliance(id)
|
||||||
for corp_id in alliance.corp_ids:
|
for corp_id in alliance.corp_ids:
|
||||||
if not EveCorporationInfo.objects.filter(corporation_id=corp_id).exists():
|
if not EveCorporationInfo.objects.filter(corporation_id=corp_id).exists():
|
||||||
EveManager.create_corporation(corp_id, is_blue=alliance_model.is_blue)
|
EveManager.create_corporation(corp_id)
|
||||||
EveCorporationInfo.objects.filter(corporation_id__in=alliance.corp_ids).update(alliance=alliance_model)
|
EveCorporationInfo.objects.filter(corporation_id__in=alliance.corp_ids).update(alliance=alliance_model)
|
||||||
EveCorporationInfo.objects.filter(alliance=alliance_model).exclude(corporation_id__in=alliance.corp_ids).update(
|
EveCorporationInfo.objects.filter(alliance=alliance_model).exclude(corporation_id__in=alliance.corp_ids).update(
|
||||||
alliance=None)
|
alliance=None)
|
||||||
if alliance_model.is_blue:
|
|
||||||
EveCorporationInfo.objects.filter(alliance=alliance_model).update(is_blue=True)
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_corporation(cls, corp_id):
|
def get_corporation(cls, corp_id):
|
||||||
return cls.get_adapter().get_corp(corp_id)
|
return cls.get_adapter().get_corp(corp_id)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create_corporation(id, is_blue=False):
|
def create_corporation(id):
|
||||||
return EveManager.create_corporation_obj(EveManager.get_corporation(id), is_blue=is_blue)
|
return EveManager.create_corporation_obj(EveManager.get_corporation(id))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create_corporation_obj(corp, is_blue=False):
|
def create_corporation_obj(corp):
|
||||||
try:
|
try:
|
||||||
alliance = EveAllianceInfo.objects.get(alliance_id=corp.alliance_id)
|
alliance = EveAllianceInfo.objects.get(alliance_id=corp.alliance_id)
|
||||||
except EveAllianceInfo.DoesNotExist:
|
except EveAllianceInfo.DoesNotExist:
|
||||||
@ -116,22 +112,20 @@ class EveManager(object):
|
|||||||
corporation_ticker=corp.ticker,
|
corporation_ticker=corp.ticker,
|
||||||
member_count=corp.members,
|
member_count=corp.members,
|
||||||
alliance=alliance,
|
alliance=alliance,
|
||||||
is_blue=is_blue,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def update_corporation(id, is_blue=None):
|
def update_corporation(id):
|
||||||
return EveManager.update_corporation_obj(EveManager.get_corporation(id), is_blue=is_blue)
|
return EveManager.update_corporation_obj(EveManager.get_corporation(id))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def update_corporation_obj(corp, is_blue=None):
|
def update_corporation_obj(corp):
|
||||||
model = EveCorporationInfo.objects.get(corporation_id=corp.id)
|
model = EveCorporationInfo.objects.get(corporation_id=corp.id)
|
||||||
model.member_count = corp.members
|
model.member_count = corp.members
|
||||||
try:
|
try:
|
||||||
model.alliance = EveAllianceInfo.objects.get(alliance_id=corp.alliance_id)
|
model.alliance = EveAllianceInfo.objects.get(alliance_id=corp.alliance_id)
|
||||||
except EveAllianceInfo.DoesNotExist:
|
except EveAllianceInfo.DoesNotExist:
|
||||||
model.alliance = None
|
model.alliance = None
|
||||||
model.is_blue = model.is_blue if is_blue is None else is_blue
|
|
||||||
model.save()
|
model.save()
|
||||||
return model
|
return model
|
||||||
|
|
||||||
|
@ -12,13 +12,13 @@ import logging
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@task
|
@task
|
||||||
def update_corp(corp_id, is_blue=None):
|
def update_corp(corp_id):
|
||||||
EveManager.update_corporation(corp_id, is_blue=is_blue)
|
EveManager.update_corporation(corp_id)
|
||||||
|
|
||||||
|
|
||||||
@task
|
@task
|
||||||
def update_alliance(alliance_id, is_blue=None):
|
def update_alliance(alliance_id):
|
||||||
EveManager.update_alliance(alliance_id, is_blue=is_blue)
|
EveManager.update_alliance(alliance_id)
|
||||||
EveManager.populate_alliance(alliance_id)
|
EveManager.populate_alliance(alliance_id)
|
||||||
|
|
||||||
|
|
||||||
@ -26,24 +26,22 @@ def update_alliance(alliance_id, is_blue=None):
|
|||||||
def run_corp_update():
|
def run_corp_update():
|
||||||
# generate member corps
|
# generate member corps
|
||||||
for corp_id in settings.STR_CORP_IDS + settings.STR_BLUE_CORP_IDS:
|
for corp_id in settings.STR_CORP_IDS + settings.STR_BLUE_CORP_IDS:
|
||||||
is_blue = True if corp_id in settings.STR_BLUE_CORP_IDS else False
|
|
||||||
try:
|
try:
|
||||||
if EveCorporationInfo.objects.filter(corporation_id=corp_id).exists():
|
if EveCorporationInfo.objects.filter(corporation_id=corp_id).exists():
|
||||||
update_corp(corp_id, is_blue=is_blue)
|
update_corp(corp_id)
|
||||||
else:
|
else:
|
||||||
EveManager.create_corporation(corp_id, is_blue=is_blue)
|
EveManager.create_corporation(corp_id)
|
||||||
except ObjectNotFound:
|
except ObjectNotFound:
|
||||||
logger.warn('Bad corp ID in settings: %s' % corp_id)
|
logger.warn('Bad corp ID in settings: %s' % corp_id)
|
||||||
|
|
||||||
# generate member alliances
|
# generate member alliances
|
||||||
for alliance_id in settings.STR_ALLIANCE_IDS + settings.STR_BLUE_ALLIANCE_IDS:
|
for alliance_id in settings.STR_ALLIANCE_IDS + settings.STR_BLUE_ALLIANCE_IDS:
|
||||||
is_blue = True if alliance_id in settings.STR_BLUE_ALLIANCE_IDS else False
|
|
||||||
try:
|
try:
|
||||||
if EveAllianceInfo.objects.filter(alliance_id=alliance_id).exists():
|
if EveAllianceInfo.objects.filter(alliance_id=alliance_id).exists():
|
||||||
logger.debug("Updating existing owner alliance model with id %s" % alliance_id)
|
logger.debug("Updating existing owner alliance model with id %s" % alliance_id)
|
||||||
update_alliance(alliance_id, is_blue=is_blue)
|
update_alliance(alliance_id)
|
||||||
else:
|
else:
|
||||||
EveManager.create_alliance(alliance_id, is_blue=is_blue)
|
EveManager.create_alliance(alliance_id)
|
||||||
EveManager.populate_alliance(alliance_id)
|
EveManager.populate_alliance(alliance_id)
|
||||||
except ObjectNotFound:
|
except ObjectNotFound:
|
||||||
logger.warn('Bad alliance ID in settings: %s' % alliance_id)
|
logger.warn('Bad alliance ID in settings: %s' % alliance_id)
|
||||||
|
@ -49,7 +49,6 @@ class CorpStat(object):
|
|||||||
self.corp = EveCorporationInfo.objects.get(corporation_id=corp_id)
|
self.corp = EveCorporationInfo.objects.get(corporation_id=corp_id)
|
||||||
self.n_fats = Fat.objects.filter(character__corporation_id=self.corp.corporation_id).filter(
|
self.n_fats = Fat.objects.filter(character__corporation_id=self.corp.corporation_id).filter(
|
||||||
fatlink__fatdatetime__gte=start_of_month).filter(fatlink__fatdatetime__lte=start_of_next_month).count()
|
fatlink__fatdatetime__gte=start_of_month).filter(fatlink__fatdatetime__lte=start_of_next_month).count()
|
||||||
self.blue = self.corp.is_blue
|
|
||||||
|
|
||||||
def avg_fat(self):
|
def avg_fat(self):
|
||||||
return "%.2f" % (float(self.n_fats) / float(self.corp.member_count))
|
return "%.2f" % (float(self.n_fats) / float(self.corp.member_count))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user