mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-14 06:42:16 +00:00
Initial work on eve_api for Django 1.4
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import Group
|
||||
|
||||
from eve_api.models import EVEAPIModel
|
||||
|
||||
|
||||
class EVEPlayerAlliance(EVEAPIModel):
|
||||
"""
|
||||
Represents a player-controlled alliance. Updated from the alliance
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
from django.db import models
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
|
||||
from eve_api.app_defines import *
|
||||
from eve_api.models import EVEAPIModel
|
||||
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import Group
|
||||
|
||||
from gargoyle import gargoyle
|
||||
|
||||
from eve_api.models import EVEAPIModel
|
||||
from eve_api.app_defines import *
|
||||
|
||||
|
||||
class EVEPlayerCorporation(EVEAPIModel):
|
||||
"""
|
||||
Represents a player-controlled corporation. Updated from a mixture of
|
||||
|
||||
@@ -22,6 +22,7 @@ from eve_api.tasks.corporation import import_corp_members, import_corp_details
|
||||
from sso.tasks import update_user_access
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.utils.timezone import now, utc
|
||||
|
||||
@task(ignore_result=True, expires=120)
|
||||
def queue_apikey_updates(update_delay=86400, batch_size=50):
|
||||
@@ -40,9 +41,9 @@ def queue_apikey_updates(update_delay=86400, batch_size=50):
|
||||
log.info("Updating APIs older than %s" % (datetime.now() - delta))
|
||||
|
||||
if gargoyle.is_active('eve-cak'):
|
||||
accounts = EVEAccount.objects.filter(api_last_updated__lt=(datetime.now() - delta)).exclude(api_status__in=[API_STATUS_ACC_EXPIRED, API_STATUS_KEY_EXPIRED, API_STATUS_AUTH_ERROR]).order_by('api_last_updated')[:batch_size]
|
||||
accounts = EVEAccount.objects.filter(api_last_updated__lt=(now() - delta)).exclude(api_status__in=[API_STATUS_ACC_EXPIRED, API_STATUS_KEY_EXPIRED, API_STATUS_AUTH_ERROR]).order_by('api_last_updated')[:batch_size]
|
||||
else:
|
||||
accounts = EVEAccount.objects.filter(api_last_updated__lt=(datetime.now() - delta)).exclude(api_status__in=[API_STATUS_ACC_EXPIRED, API_STATUS_KEY_EXPIRED, API_STATUS_AUTH_ERROR]).exclude(api_keytype__gt=2).order_by('api_last_updated')[:batch_size]
|
||||
accounts = EVEAccount.objects.filter(api_last_updated__lt=(now() - delta)).exclude(api_status__in=[API_STATUS_ACC_EXPIRED, API_STATUS_KEY_EXPIRED, API_STATUS_AUTH_ERROR]).exclude(api_keytype__gt=2).order_by('api_last_updated')[:batch_size]
|
||||
log.info("%s account(s) to update" % accounts.count())
|
||||
for acc in accounts:
|
||||
log.debug("Queueing UserID %s for update" % acc.pk)
|
||||
@@ -115,7 +116,7 @@ def import_apikey_func(api_userid, api_key, user=None, force_cache=False, log=lo
|
||||
account.api_keytype = API_KEYTYPE_ACCOUNT
|
||||
account.api_accessmask = int(keydoc['accessMask'])
|
||||
if not keydoc['expires'] == '':
|
||||
account.api_expiry = datetime.strptime(keydoc['expires'], '%Y-%m-%d %H:%M:%S')
|
||||
account.api_expiry = datetime.strptime(keydoc['expires'], '%Y-%m-%d %H:%M:%S').replace(tzinfo=utc)
|
||||
|
||||
# Checks account status to see if the account is still active
|
||||
if not account.api_keytype == API_KEYTYPE_CORPORATION:
|
||||
@@ -124,8 +125,8 @@ def import_apikey_func(api_userid, api_key, user=None, force_cache=False, log=lo
|
||||
status = CachedDocument.objects.api_query('/account/AccountStatus.xml.aspx', params=auth_params, no_cache=True)
|
||||
status = basic_xml_parse_doc(status)['eveapi']
|
||||
if not status.get('error', None):
|
||||
paiddate = datetime.strptime(status['result']['paidUntil'], '%Y-%m-%d %H:%M:%S')
|
||||
if paiddate <= datetime.utcnow():
|
||||
paiddate = datetime.strptime(status['result']['paidUntil'], '%Y-%m-%d %H:%M:%S').replace(tzinfo=utc)
|
||||
if paiddate <= now():
|
||||
account.api_status = API_STATUS_ACC_EXPIRED
|
||||
else:
|
||||
account.api_status = API_STATUS_OK
|
||||
@@ -236,7 +237,7 @@ def import_apikey_func(api_userid, api_key, user=None, force_cache=False, log=lo
|
||||
if account.user:
|
||||
update_user_access.delay(account.user.id)
|
||||
|
||||
account.api_last_updated = datetime.utcnow()
|
||||
account.api_last_updated = now()
|
||||
account.save()
|
||||
return account
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ from eve_api.utils import basic_xml_parse_doc
|
||||
from eve_api.tasks.corporation import import_corp_details, import_corp_details_result
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.utils.timezone import now, utc
|
||||
|
||||
@task(ignore_result=True, default_retry_delay=10 * 60)
|
||||
def import_alliance_details():
|
||||
@@ -32,10 +33,10 @@ def import_alliance_details():
|
||||
allobj, created = EVEPlayerAlliance.objects.get_or_create(pk=alliance['allianceID'])
|
||||
allobj.name = alliance['name']
|
||||
allobj.ticker = alliance['shortName']
|
||||
allobj.date_founded = datetime.strptime(alliance['startDate'], "%Y-%m-%d %H:%M:%S")
|
||||
allobj.date_founded = datetime.strptime(alliance['startDate'], "%Y-%m-%d %H:%M:%S").replace(tzinfo=utc)
|
||||
allobj.executor, created = EVEPlayerCorporation.objects.get_or_create(id=alliance['executorCorpID'])
|
||||
allobj.member_count = alliance['memberCount']
|
||||
allobj.api_last_updated = datetime.utcnow()
|
||||
allobj.api_last_updated = now()
|
||||
allobj.save()
|
||||
|
||||
members = [int(corp['corporationID']) for corp in alliance['memberCorporations']]
|
||||
|
||||
@@ -2,6 +2,8 @@ from datetime import datetime, timedelta
|
||||
from xml.dom import minidom
|
||||
import logging
|
||||
|
||||
from django.utils.timezone import now, utc
|
||||
|
||||
from celery.task import task
|
||||
from celery.task.sets import subtask
|
||||
from gargoyle import gargoyle
|
||||
@@ -85,11 +87,11 @@ def import_eve_character_func(character_id, key_id=None, logger=logging.getLogge
|
||||
# Set corporation and join date
|
||||
corp, created = EVEPlayerCorporation.objects.get_or_create(pk=values['corporationID'])
|
||||
from eve_api.tasks.corporation import import_corp_details
|
||||
if created or not corp.name or corp.api_last_updated < (datetime.utcnow() - timedelta(hours=12)):
|
||||
if created or not corp.name or corp.api_last_updated < (now() - timedelta(hours=12)):
|
||||
import_corp_details.delay(values['corporationID'])
|
||||
|
||||
pchar.corporation = corp
|
||||
pchar.corporation_date = values['corporationDate']
|
||||
pchar.corporation_date = datetime.strptime(values['corporationDate'], "%Y-%m-%d %H:%M:%S").replace(tzinfo=utc)
|
||||
|
||||
# Derrive Race value from the choices
|
||||
for v in API_RACES_CHOICES:
|
||||
@@ -106,7 +108,8 @@ def import_eve_character_func(character_id, key_id=None, logger=logging.getLogge
|
||||
corp, created = EVEPlayerCorporation.objects.get_or_create(pk=emp['corporationID'])
|
||||
if created:
|
||||
import_corp_details.delay(emp['corporationID'])
|
||||
eobj, created = EVEPlayerCharacterEmploymentHistory.objects.get_or_create(pk=emp['recordID'], corporation=corp, character=pchar, start_date=emp['startDate'])
|
||||
startdate = datetime.strptime(emp['startDate'], "%Y-%m-%d %H:%M:%S").replace(tzinfo=utc)
|
||||
eobj, created = EVEPlayerCharacterEmploymentHistory.objects.get_or_create(pk=emp['recordID'], corporation=corp, character=pchar, start_date=startdate)
|
||||
|
||||
# We've been passed a Key ID, try and work with it
|
||||
if key_id:
|
||||
@@ -183,7 +186,7 @@ def import_eve_character_func(character_id, key_id=None, logger=logging.getLogge
|
||||
else:
|
||||
pchar.gender = API_GENDER_FEMALE
|
||||
|
||||
pchar.api_last_updated = datetime.utcnow()
|
||||
pchar.api_last_updated = now()
|
||||
pchar.save()
|
||||
|
||||
if acc:
|
||||
|
||||
@@ -55,7 +55,7 @@ def import_corp_details_result(corp_id, callback=None):
|
||||
def import_corp_details_func(corp_id, log=logging.getLogger(__name__)):
|
||||
|
||||
corpobj, created = EVEPlayerCorporation.objects.get_or_create(id=corp_id)
|
||||
if created or not corpobj.api_last_updated or corpobj.api_last_updated < (datetime.utcnow() - timedelta(hours=12)):
|
||||
if created or not corpobj.api_last_updated or corpobj.api_last_updated < (now() - timedelta(hours=12)):
|
||||
|
||||
try:
|
||||
doc = CachedDocument.objects.api_query('/corp/CorporationSheet.xml.aspx', {'corporationID': corp_id})
|
||||
@@ -98,7 +98,7 @@ def import_corp_details_func(corp_id, log=logging.getLogger(__name__)):
|
||||
if int(d['allianceID']):
|
||||
corpobj.alliance, created = EVEPlayerAlliance.objects.get_or_create(id=d['allianceID'])
|
||||
|
||||
corpobj.api_last_updated = datetime.utcnow()
|
||||
corpobj.api_last_updated = now()
|
||||
corpobj.save()
|
||||
|
||||
# Skip looking up the CEOs for NPC corps and ones with no CEO defined (dead corps)
|
||||
@@ -159,10 +159,10 @@ def import_corp_members(key_id, character_id):
|
||||
if created:
|
||||
charobj.name = character['name']
|
||||
charobj.corporation = corp
|
||||
charobj.corporation_date = character['startDateTime']
|
||||
charobj.corporation_date = datetime.strptime(character['startDateTime'], "%Y-%m-%d %H:%M:%S").replace(tzinfo=utc)
|
||||
if 'logonDateTime' in character:
|
||||
charobj.last_login = character['logonDateTime']
|
||||
charobj.last_logoff = character['logoffDateTime']
|
||||
charobj.last_login = datetime.strptime(character['logonDateTime'], "%Y-%m-%d %H:%M:%S").replace(tzinfo=utc)
|
||||
charobj.last_logoff = datetime.strptime(character['logoffDateTime'], "%Y-%m-%d %H:%M:%S").replace(tzinfo=utc)
|
||||
charobj.current_location_id = int(character['locationID'])
|
||||
else:
|
||||
charobj.last_login = None
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
from datetime import datetime
|
||||
from xml.dom import minidom
|
||||
|
||||
from django.utils.timezone import utc
|
||||
|
||||
from eve_proxy.models import CachedDocument
|
||||
|
||||
def basic_xml_parse(nodes):
|
||||
@@ -51,3 +55,7 @@ def basic_xml_parse_doc(doc):
|
||||
return basic_xml_parse(dom.childNodes)
|
||||
|
||||
return {}
|
||||
|
||||
|
||||
def parse_eveapi_date(datestring):
|
||||
return datetime.strptime(datestring, "%Y-%m-%d %H:%M:%S").replace(tzinfo=utc)
|
||||
@@ -6,7 +6,6 @@ from django.http import HttpResponse, Http404
|
||||
from django.shortcuts import render_to_response, get_object_or_404, redirect
|
||||
from django.template import RequestContext
|
||||
from django.views.generic import DetailView, ListView
|
||||
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth.decorators import login_required
|
||||
|
||||
@@ -22,6 +21,7 @@ from eve_api.tasks import import_apikey_result
|
||||
from eve_api.utils import basic_xml_parse_doc
|
||||
from eve_api.views.mixins import DetailPaginationMixin
|
||||
|
||||
|
||||
@login_required
|
||||
def eveapi_add(request, post_save_redirect='/', template='eve_api/add.html'):
|
||||
""" Add a EVE API key to a user's account """
|
||||
|
||||
Reference in New Issue
Block a user