mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 20:40:17 +02:00
37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
from alliance_auth.celeryapp import app
|
|
from esi.models import Token
|
|
from esi.errors import TokenExpiredError, TokenInvalidError
|
|
from authentication.models import CharacterOwnership
|
|
|
|
import logging
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
@app.task
|
|
def check_character_ownership(owner_hash):
|
|
tokens = Token.objects.filter(character_owner_hash=owner_hash)
|
|
if tokens:
|
|
for t in tokens:
|
|
old_hash = t.character_owner_hash
|
|
try:
|
|
t.update_token_data(commit=False)
|
|
except (TokenExpiredError, TokenInvalidError):
|
|
t.delete()
|
|
continue
|
|
|
|
if t.character_owner_hash == old_hash:
|
|
break
|
|
else:
|
|
logger.info('Character %s has changed ownership. Revoking %s tokens.' % (t.character_name, tokens.count()))
|
|
tokens.delete()
|
|
else:
|
|
logger.info('No tokens found with owner hash %s. Revoking ownership.' % owner_hash)
|
|
CharacterOwnership.objects.filter(owner_hash=owner_hash).delete()
|
|
|
|
|
|
@app.task
|
|
def check_all_character_ownership():
|
|
for c in CharacterOwnership.objects.all().only('owner_hash'):
|
|
check_character_ownership.delay(c.owner_hash)
|