Refactor the alliance update function, try to avoid corps being left out without their alliance

This commit is contained in:
2011-08-19 17:14:51 +01:00
parent db145ac3f0
commit bec05f1ee0

View File

@@ -38,16 +38,12 @@ def import_alliance_details():
allobj.api_last_updated = datetime.utcnow()
allobj.save()
corplist = allobj.eveplayercorporation_set.all().values_list('id', flat=True)
members = [int(corp['corporationID']) for corp in alliance['memberCorporations']
EVEPlayerCorporation.objects.filter(id__in=members).update(alliance=allobj)
EVEPlayerCorporation.objects.filter(alliance=allobj).exclude(id__in=members).update(alliance=None)
validcorps = []
for corp in alliance['memberCorporations']:
if int(corp['corporationID']) not in corplist:
import_corp_details.delay(corp['corporationID'])
validcorps.append(int(corp['corporationID']))
delcorps = set(corplist) - set(validcorps)
EVEPlayerCorporation.objects.filter(id__in=delcorps).update(alliance=None)
for id in members:
import_corp_details.delay(id)
else:
# We got a error, retry
import_alliance_details.retry()