|
|
|
|
@@ -1,12 +1,11 @@
|
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
|
from django.conf import settings
|
|
|
|
|
from django.shortcuts import render_to_response
|
|
|
|
|
from django.template import RequestContext
|
|
|
|
|
from django.contrib.auth.decorators import login_required
|
|
|
|
|
from django.shortcuts import HttpResponseRedirect
|
|
|
|
|
from django.shortcuts import render, redirect
|
|
|
|
|
|
|
|
|
|
from collections import namedtuple
|
|
|
|
|
|
|
|
|
|
from authentication.managers import AuthServicesInfoManager
|
|
|
|
|
from authentication.models import AuthServicesInfo
|
|
|
|
|
from services.managers.eve_api_manager import EveApiManager
|
|
|
|
|
from services.managers.evewho_manager import EveWhoManager
|
|
|
|
|
from eveonline.models import EveCorporationInfo
|
|
|
|
|
@@ -14,14 +13,15 @@ from eveonline.models import EveAllianceInfo
|
|
|
|
|
from eveonline.models import EveCharacter
|
|
|
|
|
from eveonline.models import EveApiKeyPair
|
|
|
|
|
from fleetactivitytracking.models import Fat
|
|
|
|
|
from util import check_if_user_has_permission
|
|
|
|
|
from forms import CorputilsSearchForm
|
|
|
|
|
from corputils.forms import CorputilsSearchForm
|
|
|
|
|
from evelink.api import APIError
|
|
|
|
|
|
|
|
|
|
import logging
|
|
|
|
|
import datetime
|
|
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Player(object):
|
|
|
|
|
def __init__(self, main, user, maincorp, maincorpid, altlist, apilist, n_fats):
|
|
|
|
|
self.main = main
|
|
|
|
|
@@ -32,21 +32,23 @@ class Player(object):
|
|
|
|
|
self.apilist = apilist
|
|
|
|
|
self.n_fats = n_fats
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def first_day_of_next_month(year, month):
|
|
|
|
|
if month == 12:
|
|
|
|
|
return datetime.datetime(year+1,1,1)
|
|
|
|
|
return datetime.datetime(year + 1, 1, 1)
|
|
|
|
|
else:
|
|
|
|
|
return datetime.datetime(year, month+1, 1)
|
|
|
|
|
return datetime.datetime(year, month + 1, 1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def first_day_of_previous_month(year, month):
|
|
|
|
|
if month == 1:
|
|
|
|
|
return datetime.datetime(year-1,12,1)
|
|
|
|
|
return datetime.datetime(year - 1, 12, 1)
|
|
|
|
|
else:
|
|
|
|
|
return datetime.datetime(year, month-1, 1)
|
|
|
|
|
return datetime.datetime(year, month - 1, 1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
|
|
def corp_member_view(request, corpid = None, year=datetime.date.today().year, month=datetime.date.today().month):
|
|
|
|
|
def corp_member_view(request, corpid=None, year=datetime.date.today().year, month=datetime.date.today().month):
|
|
|
|
|
year = int(year)
|
|
|
|
|
month = int(month)
|
|
|
|
|
start_of_month = datetime.datetime(year, month, 1)
|
|
|
|
|
@@ -55,16 +57,17 @@ def corp_member_view(request, corpid = None, year=datetime.date.today().year, mo
|
|
|
|
|
logger.debug("corp_member_view called by user %s" % request.user)
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
user_main = EveCharacter.objects.get(character_id=AuthServicesInfoManager.get_auth_service_info(user=request.user).main_char_id)
|
|
|
|
|
user_main = EveCharacter.objects.get(
|
|
|
|
|
character_id=AuthServicesInfo.objects.get_or_create(user=request.user)[0].main_char_id)
|
|
|
|
|
user_corp_id = int(user_main.corporation_id)
|
|
|
|
|
except (ValueError, EveCharacter.DoesNotExist):
|
|
|
|
|
user_corp_id = settings.CORP_ID
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if not settings.IS_CORP:
|
|
|
|
|
alliance = EveAllianceInfo.objects.get(alliance_id=settings.ALLIANCE_ID)
|
|
|
|
|
alliancecorps = EveCorporationInfo.objects.filter(alliance=alliance)
|
|
|
|
|
membercorplist = [(int(membercorp.corporation_id), str(membercorp.corporation_name)) for membercorp in alliancecorps]
|
|
|
|
|
membercorplist = [(int(membercorp.corporation_id), str(membercorp.corporation_name)) for membercorp in
|
|
|
|
|
alliancecorps]
|
|
|
|
|
membercorplist.sort(key=lambda tup: tup[1])
|
|
|
|
|
membercorp_id_list = [int(membercorp.corporation_id) for membercorp in alliancecorps]
|
|
|
|
|
|
|
|
|
|
@@ -77,7 +80,7 @@ def corp_member_view(request, corpid = None, year=datetime.date.today().year, mo
|
|
|
|
|
user_corp_id = None
|
|
|
|
|
|
|
|
|
|
if not corpid:
|
|
|
|
|
if(settings.IS_CORP):
|
|
|
|
|
if settings.IS_CORP:
|
|
|
|
|
corpid = settings.CORP_ID
|
|
|
|
|
elif user_corp_id:
|
|
|
|
|
corpid = user_corp_id
|
|
|
|
|
@@ -86,7 +89,8 @@ def corp_member_view(request, corpid = None, year=datetime.date.today().year, mo
|
|
|
|
|
|
|
|
|
|
corp = EveCorporationInfo.objects.get(corporation_id=corpid)
|
|
|
|
|
|
|
|
|
|
if check_if_user_has_permission(request.user, 'alliance_apis') or (check_if_user_has_permission(request.user, 'corp_apis') and (user_corp_id == corpid)):
|
|
|
|
|
if request.user.has_perm('auth.alliance_apis') or (
|
|
|
|
|
request.user.has_perm('auth.corp_apis') and (user_corp_id == corpid)):
|
|
|
|
|
logger.debug("Retreiving and sending API-information")
|
|
|
|
|
|
|
|
|
|
if settings.IS_CORP:
|
|
|
|
|
@@ -107,7 +111,7 @@ def corp_member_view(request, corpid = None, year=datetime.date.today().year, mo
|
|
|
|
|
char = EveCharacter.objects.get(character_id=char_id)
|
|
|
|
|
char_owner = char.user
|
|
|
|
|
try:
|
|
|
|
|
mainid = int(AuthServicesInfoManager.get_auth_service_info(user=char_owner).main_char_id)
|
|
|
|
|
mainid = int(AuthServicesInfo.objects.get_or_create(user=char_owner)[0].main_char_id)
|
|
|
|
|
mainchar = EveCharacter.objects.get(character_id=mainid)
|
|
|
|
|
mainname = mainchar.character_name
|
|
|
|
|
maincorp = mainchar.corporation_name
|
|
|
|
|
@@ -120,7 +124,7 @@ def corp_member_view(request, corpid = None, year=datetime.date.today().year, mo
|
|
|
|
|
maincorp = "Not set."
|
|
|
|
|
maincorpid = None
|
|
|
|
|
api_pair = None
|
|
|
|
|
num_registered_characters = num_registered_characters + 1
|
|
|
|
|
num_registered_characters += 1
|
|
|
|
|
characters_with_api.setdefault(mainname, Player(main=mainchar,
|
|
|
|
|
user=char_owner,
|
|
|
|
|
maincorp=maincorp,
|
|
|
|
|
@@ -132,7 +136,7 @@ def corp_member_view(request, corpid = None, year=datetime.date.today().year, mo
|
|
|
|
|
if api_pair:
|
|
|
|
|
characters_with_api[mainname].apilist.append(api_pair)
|
|
|
|
|
|
|
|
|
|
except (EveCharacter.DoesNotExist):
|
|
|
|
|
except EveCharacter.DoesNotExist:
|
|
|
|
|
characters_without_api.update({member_data["name"]: member_data["id"]})
|
|
|
|
|
|
|
|
|
|
for char in EveCharacter.objects.filter(corporation_id=corpid):
|
|
|
|
|
@@ -140,7 +144,7 @@ def corp_member_view(request, corpid = None, year=datetime.date.today().year, mo
|
|
|
|
|
logger.info("Character '%s' does not exist in EveWho dump." % char.character_name)
|
|
|
|
|
char_owner = char.user
|
|
|
|
|
try:
|
|
|
|
|
mainid = int(AuthServicesInfoManager.get_auth_service_info(user=char_owner).main_char_id)
|
|
|
|
|
mainid = int(AuthServicesInfo.objects.get_or_create(user=char_owner)[0].main_char_id)
|
|
|
|
|
mainchar = EveCharacter.objects.get(character_id=mainid)
|
|
|
|
|
mainname = mainchar.character_name
|
|
|
|
|
maincorp = mainchar.corporation_name
|
|
|
|
|
@@ -153,7 +157,7 @@ def corp_member_view(request, corpid = None, year=datetime.date.today().year, mo
|
|
|
|
|
maincorp = "Not set."
|
|
|
|
|
maincorpid = None
|
|
|
|
|
api_pair = None
|
|
|
|
|
num_registered_characters = num_registered_characters + 1
|
|
|
|
|
num_registered_characters += 1
|
|
|
|
|
characters_with_api.setdefault(mainname, Player(main=mainchar,
|
|
|
|
|
user=char_owner,
|
|
|
|
|
maincorp=maincorp,
|
|
|
|
|
@@ -168,13 +172,13 @@ def corp_member_view(request, corpid = None, year=datetime.date.today().year, mo
|
|
|
|
|
n_unacounted = corp.member_count - (num_registered_characters + len(characters_without_api))
|
|
|
|
|
|
|
|
|
|
for mainname, player in characters_with_api.items():
|
|
|
|
|
fats_this_month = Fat.objects.filter(user=player.user).filter(fatlink__fatdatetime__gte = start_of_month).filter(fatlink__fatdatetime__lt = start_of_next_month)
|
|
|
|
|
fats_this_month = Fat.objects.filter(user=player.user).filter(
|
|
|
|
|
fatlink__fatdatetime__gte=start_of_month).filter(fatlink__fatdatetime__lt=start_of_next_month)
|
|
|
|
|
characters_with_api[mainname].n_fats = len(fats_this_month)
|
|
|
|
|
|
|
|
|
|
if start_of_next_month > datetime.datetime.now():
|
|
|
|
|
start_of_next_month = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if not settings.IS_CORP:
|
|
|
|
|
context = {"membercorplist": membercorplist,
|
|
|
|
|
"corp": corp,
|
|
|
|
|
@@ -196,8 +200,8 @@ def corp_member_view(request, corpid = None, year=datetime.date.today().year, mo
|
|
|
|
|
context["previous_month"] = start_of_previous_month
|
|
|
|
|
context["this_month"] = start_of_month
|
|
|
|
|
|
|
|
|
|
return render_to_response('registered/corputils.html',context, context_instance=RequestContext(request) )
|
|
|
|
|
return HttpResponseRedirect("/dashboard/")
|
|
|
|
|
return render(request, 'registered/corputils.html', context=context)
|
|
|
|
|
return redirect("auth_dashboard")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
|
|
@@ -208,13 +212,15 @@ def corputils_search(request, corpid=settings.CORP_ID):
|
|
|
|
|
|
|
|
|
|
authorized = False
|
|
|
|
|
try:
|
|
|
|
|
user_main = EveCharacter.objects.get(character_id=AuthServicesInfoManager.get_auth_service_info(user=request.user).main_char_id)
|
|
|
|
|
if check_if_user_has_permission(request.user, 'alliance_apis') or (check_if_user_has_permission(request.user, 'corp_apis') and (user_main.corporation_id == corpid)):
|
|
|
|
|
user_main = EveCharacter.objects.get(
|
|
|
|
|
character_id=AuthServicesInfo.objects.get_or_create(user=request.user)[0].main_char_id)
|
|
|
|
|
if request.user.has_perm('auth.alliance_apis') or (
|
|
|
|
|
request.user.has_perm('auth.corp_apis') and (user_main.corporation_id == corpid)):
|
|
|
|
|
logger.debug("Retreiving and sending API-information")
|
|
|
|
|
authorized = True
|
|
|
|
|
except (ValueError, EveCharacter.DoesNotExist):
|
|
|
|
|
if check_if_user_has_permission(request.user, 'alliance_apis'):
|
|
|
|
|
logger.debug("Retreiving and sending API-information")
|
|
|
|
|
if request.user.has_perm('auth.alliance_apis'):
|
|
|
|
|
logger.debug("Retrieving and sending API-information")
|
|
|
|
|
authorized = True
|
|
|
|
|
|
|
|
|
|
if authorized:
|
|
|
|
|
@@ -229,14 +235,16 @@ def corputils_search(request, corpid=settings.CORP_ID):
|
|
|
|
|
|
|
|
|
|
if settings.IS_CORP:
|
|
|
|
|
try:
|
|
|
|
|
member_list = EveApiManager.get_corp_membertracking(settings.CORP_API_ID, settings.CORP_API_VCODE)
|
|
|
|
|
member_list = EveApiManager.get_corp_membertracking(settings.CORP_API_ID,
|
|
|
|
|
settings.CORP_API_VCODE)
|
|
|
|
|
except APIError:
|
|
|
|
|
logger.debug("Corp API does not have membertracking scope, using EveWho data instead.")
|
|
|
|
|
member_list = EveWhoManager.get_corporation_members(corpid)
|
|
|
|
|
else:
|
|
|
|
|
member_list = EveWhoManager.get_corporation_members(corpid)
|
|
|
|
|
|
|
|
|
|
SearchResult = namedtuple('SearchResult', ['name', 'id', 'main', 'api_registered', 'character', 'apiinfo'])
|
|
|
|
|
SearchResult = namedtuple('SearchResult',
|
|
|
|
|
['name', 'id', 'main', 'api_registered', 'character', 'apiinfo'])
|
|
|
|
|
|
|
|
|
|
searchresults = []
|
|
|
|
|
for memberid, member_data in member_list.items():
|
|
|
|
|
@@ -244,7 +252,7 @@ def corputils_search(request, corpid=settings.CORP_ID):
|
|
|
|
|
try:
|
|
|
|
|
char = EveCharacter.objects.get(character_name=member_data["name"])
|
|
|
|
|
user = char.user
|
|
|
|
|
mainid = int(AuthServicesInfoManager.get_auth_service_info(user=user).main_char_id)
|
|
|
|
|
mainid = int(AuthServicesInfo.objects.get_or_create(user=user)[0].main_char_id)
|
|
|
|
|
main = EveCharacter.objects.get(character_id=mainid)
|
|
|
|
|
api_registered = True
|
|
|
|
|
apiinfo = EveApiKeyPair.objects.get(api_id=char.api_id)
|
|
|
|
|
@@ -254,25 +262,24 @@ def corputils_search(request, corpid=settings.CORP_ID):
|
|
|
|
|
main = ""
|
|
|
|
|
apiinfo = None
|
|
|
|
|
|
|
|
|
|
searchresults.append(SearchResult(name=member_data["name"], id=memberid, main=main, api_registered=api_registered,
|
|
|
|
|
character=char, apiinfo=apiinfo))
|
|
|
|
|
searchresults.append(SearchResult(name=member_data["name"], id=memberid, main=main,
|
|
|
|
|
api_registered=api_registered,
|
|
|
|
|
character=char, apiinfo=apiinfo))
|
|
|
|
|
|
|
|
|
|
logger.info("Found %s members for user %s matching search string %s" % (
|
|
|
|
|
len(searchresults), request.user, searchstring))
|
|
|
|
|
|
|
|
|
|
logger.info("Found %s members for user %s matching search string %s" % (len(searchresults), request.user, searchstring))
|
|
|
|
|
context = {'corp': corp, 'results': searchresults, 'search_form': CorputilsSearchForm(),
|
|
|
|
|
"year": datetime.datetime.now().year, "month": datetime.datetime.now().month}
|
|
|
|
|
|
|
|
|
|
context = {'corp': corp, 'results': searchresults, 'search_form': CorputilsSearchForm(), "year":datetime.datetime.now().year, "month":datetime.datetime.now().month}
|
|
|
|
|
|
|
|
|
|
return render_to_response('registered/corputilssearchview.html',
|
|
|
|
|
context, context_instance=RequestContext(request))
|
|
|
|
|
return render(request, 'registered/corputilssearchview.html',
|
|
|
|
|
context=context)
|
|
|
|
|
else:
|
|
|
|
|
logger.debug("Form invalid - returning for user %s to retry." % request.user)
|
|
|
|
|
context = {'corp': corp, 'members': None, 'search_form': CorputilsSearchForm()}
|
|
|
|
|
return render_to_response('registered/corputilssearchview.html',
|
|
|
|
|
context, context_instance=RequestContext(request))
|
|
|
|
|
return render(request, 'registered/corputilssearchview.html', context=context)
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
logger.debug("Returning empty search form for user %s" % request.user)
|
|
|
|
|
return HttpResponseRedirect("/corputils/")
|
|
|
|
|
return HttpResponseRedirect("/dashboard/")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return redirect("auth_corputils")
|
|
|
|
|
return redirect("auth_dashboard")
|
|
|
|
|
|