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)
|
||||
def check_state_on_character_update(sender, instance, *args, **kwargs):
|
||||
# if this is a main character updating, check that user's state
|
||||
if instance.userprofile:
|
||||
try:
|
||||
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))
|
||||
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:
|
||||
|
@ -1,14 +1,81 @@
|
||||
from __future__ import unicode_literals
|
||||
from django.contrib import admin
|
||||
from django import forms
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from eveonline.models import EveCharacter
|
||||
from eveonline.models import EveAllianceInfo
|
||||
from eveonline.models import EveCorporationInfo
|
||||
|
||||
admin.site.register(EveAllianceInfo)
|
||||
admin.site.register(EveCorporationInfo)
|
||||
from eveonline.managers import EveManager
|
||||
from eveonline.providers import ObjectNotFound
|
||||
|
||||
|
||||
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):
|
||||
search_fields = ['character_name', 'corporation_name', 'alliance_name', 'character_ownership__user__username']
|
||||
list_display = ('character_name', 'corporation_name', 'alliance_name', 'user', 'main_character')
|
||||
@ -27,5 +94,7 @@ class EveCharacterAdmin(admin.ModelAdmin):
|
||||
except (AttributeError, ObjectDoesNotExist):
|
||||
return None
|
||||
|
||||
|
||||
admin.site.register(EveCharacter, EveCharacterAdmin)
|
||||
def get_form(self, request, obj=None, **kwargs):
|
||||
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)
|
||||
|
||||
@staticmethod
|
||||
def create_alliance(id, is_blue=False):
|
||||
return EveManager.create_alliance_obj(EveManager.get_alliance(id), is_blue=is_blue)
|
||||
def create_alliance(id):
|
||||
return EveManager.create_alliance_obj(EveManager.get_alliance(id))
|
||||
|
||||
@staticmethod
|
||||
def create_alliance_obj(alliance, is_blue=False):
|
||||
def create_alliance_obj(alliance):
|
||||
return EveAllianceInfo.objects.create(
|
||||
alliance_id=alliance.id,
|
||||
alliance_name=alliance.name,
|
||||
alliance_ticker=alliance.ticker,
|
||||
executor_corp_id=alliance.executor_corp_id,
|
||||
is_blue=is_blue,
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def update_alliance(id, is_blue=None):
|
||||
return EveManager.update_alliance_obj(EveManager.get_alliance(id), is_blue=is_blue)
|
||||
def update_alliance(id):
|
||||
return EveManager.update_alliance_obj(EveManager.get_alliance(id))
|
||||
|
||||
@staticmethod
|
||||
def update_alliance_obj(alliance, is_blue=None):
|
||||
def update_alliance_obj(alliance):
|
||||
model = EveAllianceInfo.objects.get(alliance_id=alliance.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()
|
||||
return model
|
||||
|
||||
@ -89,23 +87,21 @@ class EveManager(object):
|
||||
alliance = EveManager.get_alliance(id)
|
||||
for corp_id in alliance.corp_ids:
|
||||
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(alliance=alliance_model).exclude(corporation_id__in=alliance.corp_ids).update(
|
||||
alliance=None)
|
||||
if alliance_model.is_blue:
|
||||
EveCorporationInfo.objects.filter(alliance=alliance_model).update(is_blue=True)
|
||||
|
||||
@classmethod
|
||||
def get_corporation(cls, corp_id):
|
||||
return cls.get_adapter().get_corp(corp_id)
|
||||
|
||||
@staticmethod
|
||||
def create_corporation(id, is_blue=False):
|
||||
return EveManager.create_corporation_obj(EveManager.get_corporation(id), is_blue=is_blue)
|
||||
def create_corporation(id):
|
||||
return EveManager.create_corporation_obj(EveManager.get_corporation(id))
|
||||
|
||||
@staticmethod
|
||||
def create_corporation_obj(corp, is_blue=False):
|
||||
def create_corporation_obj(corp):
|
||||
try:
|
||||
alliance = EveAllianceInfo.objects.get(alliance_id=corp.alliance_id)
|
||||
except EveAllianceInfo.DoesNotExist:
|
||||
@ -116,22 +112,20 @@ class EveManager(object):
|
||||
corporation_ticker=corp.ticker,
|
||||
member_count=corp.members,
|
||||
alliance=alliance,
|
||||
is_blue=is_blue,
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def update_corporation(id, is_blue=None):
|
||||
return EveManager.update_corporation_obj(EveManager.get_corporation(id), is_blue=is_blue)
|
||||
def update_corporation(id):
|
||||
return EveManager.update_corporation_obj(EveManager.get_corporation(id))
|
||||
|
||||
@staticmethod
|
||||
def update_corporation_obj(corp, is_blue=None):
|
||||
def update_corporation_obj(corp):
|
||||
model = EveCorporationInfo.objects.get(corporation_id=corp.id)
|
||||
model.member_count = corp.members
|
||||
try:
|
||||
model.alliance = EveAllianceInfo.objects.get(alliance_id=corp.alliance_id)
|
||||
except EveAllianceInfo.DoesNotExist:
|
||||
model.alliance = None
|
||||
model.is_blue = model.is_blue if is_blue is None else is_blue
|
||||
model.save()
|
||||
return model
|
||||
|
||||
|
@ -12,13 +12,13 @@ import logging
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@task
|
||||
def update_corp(corp_id, is_blue=None):
|
||||
EveManager.update_corporation(corp_id, is_blue=is_blue)
|
||||
def update_corp(corp_id):
|
||||
EveManager.update_corporation(corp_id)
|
||||
|
||||
|
||||
@task
|
||||
def update_alliance(alliance_id, is_blue=None):
|
||||
EveManager.update_alliance(alliance_id, is_blue=is_blue)
|
||||
def update_alliance(alliance_id):
|
||||
EveManager.update_alliance(alliance_id)
|
||||
EveManager.populate_alliance(alliance_id)
|
||||
|
||||
|
||||
@ -26,24 +26,22 @@ def update_alliance(alliance_id, is_blue=None):
|
||||
def run_corp_update():
|
||||
# generate member corps
|
||||
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:
|
||||
if EveCorporationInfo.objects.filter(corporation_id=corp_id).exists():
|
||||
update_corp(corp_id, is_blue=is_blue)
|
||||
update_corp(corp_id)
|
||||
else:
|
||||
EveManager.create_corporation(corp_id, is_blue=is_blue)
|
||||
EveManager.create_corporation(corp_id)
|
||||
except ObjectNotFound:
|
||||
logger.warn('Bad corp ID in settings: %s' % corp_id)
|
||||
|
||||
# generate member alliances
|
||||
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:
|
||||
if EveAllianceInfo.objects.filter(alliance_id=alliance_id).exists():
|
||||
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:
|
||||
EveManager.create_alliance(alliance_id, is_blue=is_blue)
|
||||
EveManager.create_alliance(alliance_id)
|
||||
EveManager.populate_alliance(alliance_id)
|
||||
except ObjectNotFound:
|
||||
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.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()
|
||||
self.blue = self.corp.is_blue
|
||||
|
||||
def avg_fat(self):
|
||||
return "%.2f" % (float(self.n_fats) / float(self.corp.member_count))
|
||||
|
Loading…
x
Reference in New Issue
Block a user