diff --git a/alliance_auth/urls.py b/alliance_auth/urls.py index 4d812dea..4a308518 100755 --- a/alliance_auth/urls.py +++ b/alliance_auth/urls.py @@ -42,7 +42,6 @@ urlpatterns = patterns('', url(r'^characters/', 'eveonline.views.characters_view', name='auth_characters'), url(r'^main_character_change/(\w+)/$', 'eveonline.views.main_character_change', name='auth_main_character_change'), - url(r'^corporation_stats/$', 'eveonline.views.corp_stats_view', name='auth_corp_stats'), # Group management url(r'^groups/', 'groupmanagement.views.groups_view', name='auth_groups'), @@ -166,7 +165,7 @@ urlpatterns = patterns('', name="auth_srp_request_update_amount_view"), #corputils - url(r'^corputils/$', 'corputils.views.corp_member_view', name='auth_corp_member_view'), + url(r'^corputils/$', 'corputils.views.corp_member_view', name='auth_corputils'), url(r'^corputils/(?P[0-9]+)/$', 'corputils.views.corp_member_view'), url(r'^corputils/search/$', 'corputils.views.corputils_search', name="auth_corputils_search"), url(r'^corputils/search/(?P[0-9]+)/$', 'corputils.views.corputils_search'), diff --git a/corputils/views.py b/corputils/views.py index 8498541c..7b6ac23f 100644 --- a/corputils/views.py +++ b/corputils/views.py @@ -13,7 +13,9 @@ from services.managers.evewho_manager import EveWhoManager from eveonline.models import EveCorporationInfo from eveonline.models import EveAllianceInfo from eveonline.models import EveCharacter +from eveonline.models import EveApiKeyPair from authentication.models import AuthServicesInfo +from util import check_if_user_has_permission from forms import CorputilsSearchForm from evelink.api import APIError @@ -42,7 +44,18 @@ def corp_member_view(request, corpid = None): corp = EveCorporationInfo.objects.get(corporation_id=corpid) - Player = namedtuple("Player", ["main", "maincorp", "maincorpid", "altlist"]) + Player = namedtuple("Player", ["main", "maincorp", "maincorpid", "altlist", "apilist"]) + + send_apis = 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)): + logger.debug("Retreiving and sending API-information") + send_apis = True + except (ValueError, EveCharacter.DoesNotExist): + if check_if_user_has_permission(request.user, 'alliance_apis'): + logger.debug("Retreiving and sending API-information") + send_apis = True if settings.IS_CORP: try: @@ -56,26 +69,31 @@ def corp_member_view(request, corpid = None): characters_with_api = {} characters_without_api = {} + ncharacters_with_api = 0 for char_id, member_data in member_list.items(): try: char = EveCharacter.objects.get(character_id=char_id) - user = char.user + char_owner = char.user try: - mainid = int(AuthServicesInfoManager.get_auth_service_info(user=user).main_char_id) + mainid = int(AuthServicesInfoManager.get_auth_service_info(user=char_owner).main_char_id) mainchar = EveCharacter.objects.get(character_id=mainid) mainname = mainchar.character_name maincorp = mainchar.corporation_name maincorpid = mainchar.corporation_id except (ValueError, EveCharacter.DoesNotExist): - mainname = "User: " + user.username + mainname = "User: " + char_owner.username mainchar = char maincorp = "Not set." maincorpid = None + ncharacters_with_api = ncharacters_with_api + 1 characters_with_api.setdefault(mainname, Player(main=mainchar, maincorp=maincorp, maincorpid=maincorpid, - altlist=[]) + altlist=[], + apilist=[]) ).altlist.append(char) + if send_apis: + characters_with_api[mainname].apilist.append(EveApiKeyPair.objects.get(api_id=char.api_id)) except EveCharacter.DoesNotExist: characters_without_api.update({member_data["name"]: member_data["id"]}) @@ -84,13 +102,17 @@ def corp_member_view(request, corpid = None): if not settings.IS_CORP: context = {"membercorp_list": membercorp_list, "corp": corp, + "sent_apis": send_apis, "characters_with_api": sorted(characters_with_api.items()), + 'nwithapi': ncharacters_with_api, "characters_without_api": sorted(characters_without_api.items()), "search_form": CorputilsSearchForm()} else: logger.debug("corp_member_view running in corportation mode") context = {"corp": corp, + "sent_apis": send_apis, "characters_with_api": sorted(characters_with_api.items()), + 'nwithapi': ncharacters_with_api, "characters_without_api": sorted(characters_without_api.items()), "search_form": CorputilsSearchForm()} @@ -105,6 +127,17 @@ def corputils_search(request, corpid=settings.CORP_ID): corp = EveCorporationInfo.objects.get(corporation_id=corpid) + send_apis = 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)): + logger.debug("Retreiving and sending API-information") + send_apis = True + except (ValueError, EveCharacter.DoesNotExist): + if check_if_user_has_permission(request.user, 'alliance_apis'): + logger.debug("Retreiving and sending API-information") + send_apis = True + if request.method == 'POST': form = CorputilsSearchForm(request.POST) logger.debug("Request type POST contains form valid: %s" % form.is_valid()) @@ -123,9 +156,9 @@ def corputils_search(request, corpid=settings.CORP_ID): else: member_list = EveWhoManager.get_corporation_members(corpid) - Member = namedtuple('Member', ['name', 'main', 'api_registered']) + SearchResult = namedtuple('SearchResult', ['name', 'id', 'main', 'api_registered', 'character', 'apiinfo']) - members = [] + searchresults = [] for memberid, member_data in member_list.items(): if searchstring.lower() in member_data["name"].lower(): try: @@ -136,13 +169,20 @@ def corputils_search(request, corpid=settings.CORP_ID): api_registered = True except EveCharacter.DoesNotExist: api_registered = False + char = None mainname = "" - members.append(Member(name=member_data["name"], main=mainname, api_registered=api_registered)) + if api_registered and send_apis: + apiinfo = EveApiKeyPair.objects.get(api_id=char.api_id) + else: + apiinfo = None + + searchresults.append(SearchResult(name=member_data["name"], id=memberid, main=mainname, api_registered=api_registered, + character=char, apiinfo=apiinfo)) - logger.info("Found %s members for user %s matching search string %s" % (len(members), request.user, searchstring)) + logger.info("Found %s members for user %s matching search string %s" % (len(searchresults), request.user, searchstring)) - context = {'corp': corp, 'members': members, 'search_form': CorputilsSearchForm()} + context = {'corp': corp, 'results': searchresults, 'search_form': CorputilsSearchForm(), 'sent_apis': send_apis} return render_to_response('registered/corputilssearchview.html', context, context_instance=RequestContext(request)) diff --git a/eveonline/views.py b/eveonline/views.py index ff7bf6c1..15ea537d 100755 --- a/eveonline/views.py +++ b/eveonline/views.py @@ -128,39 +128,6 @@ def main_character_change(request, char_id): return HttpResponseRedirect("/characters") -@login_required -@permission_required('auth.corp_stats') -def corp_stats_view(request): - logger.debug("corp_stats_view called by user %s" % request.user) - # Get the corp the member is in - auth_info = AuthServicesInfo.objects.get(user=request.user) - logger.debug("Got user %s authservicesinfo model %s" % (request.user, auth_info)) - if EveCharacter.objects.filter(character_id=auth_info.main_char_id).exists(): - main_char = EveCharacter.objects.get(character_id=auth_info.main_char_id) - logger.debug("Got user %s main character model %s" % (request.user, main_char)) - if EveCorporationInfo.objects.filter(corporation_id=main_char.corporation_id).exists(): - current_count = 0 - allcharacters = {} - corp = EveCorporationInfo.objects.get(corporation_id=main_char.corporation_id) - logger.debug("Got user %s main character's corp model %s" % (request.user, corp)) - all_characters = EveCharacter.objects.all() - for char in all_characters: - if char: - try: - if char.corporation_id == corp.corporation_id: - current_count = current_count + 1 - allcharacters[char.character_name] = EveApiKeyPair.objects.get(api_id=char.api_id) - except: - pass - context = {"corp": corp, - "currentCount": current_count, - "characters": allcharacters} - return render_to_response('registered/corpstats.html', context, context_instance=RequestContext(request)) - else: - logger.error("Unable to locate user %s main character's corp model with id %s. Cannot provide corp stats." % (request.user, main_char.corporation_id)) - else: - logger.error("Unable to locate user %s main character model with id %s. Cannot provide corp stats." % (request.user, auth_info.main_char_id)) - return render_to_response('registered/corpstats.html', None, context_instance=RequestContext(request)) @login_required def user_refresh_api(request, api_id): diff --git a/stock/templates/public/base.html b/stock/templates/public/base.html index 5b61d205..edee0f0d 100755 --- a/stock/templates/public/base.html +++ b/stock/templates/public/base.html @@ -125,17 +125,10 @@ {% endif %} {% if perms.auth.corp_stats %} -
  • - Corporation Stats -
  • - {% endif %} - {% if perms.auth.corputils %}
  • Member Tracking + href="{% url 'auth_corputils' %}"> Corporation Stats
  • {% endif %} diff --git a/stock/templates/registered/corpstats.html b/stock/templates/registered/corpstats.html deleted file mode 100755 index f373d253..00000000 --- a/stock/templates/registered/corpstats.html +++ /dev/null @@ -1,85 +0,0 @@ -{% extends "public/base.html" %} -{% block title %}Alliance Auth{% endblock %} -{% block page_title %}Corporation Stats{% endblock page_title %} - -{% block content %} - -
    -

    Corporation Stats

    - {% if perms.auth.member %} -
    - {% if corp %} -
    -
    -
    -
    Corporation
    - -
    -
    -
    - -
    -

    Name: {{ corp.corporation_name }}

    - -

    Ticker: {{ corp.corporation_ticker }}

    - -

    Member: {{ corp.member_count }}

    - -

    Total Authed Members: {{ currentCount }}

    -
    -
    -
    -
    - - -
    -
    -
    Registered Characters
    -
    -
    - - - - - - {% for key,value in characters.items %} - - - - - {% endfor %} -
    Character NameActions
    -

    {{ key }}

    -
    - - - -
    -
    -
    -
    -
    - {% else %} -
    -
    -
    - -
    -
    -
    - {% endif %} -
    -
    - {% else %} - {% if IS_CORP %} - - {% else %} - - {% endif %} - {% endif %} -
    -{% endblock content %} diff --git a/stock/templates/registered/corputils.html b/stock/templates/registered/corputils.html index 708f3996..e9ea7d92 100644 --- a/stock/templates/registered/corputils.html +++ b/stock/templates/registered/corputils.html @@ -34,8 +34,8 @@
    API Index:
    -
    - {{characters_with_api|length}}/{{ corp.member_count }} +
    + {{ncharacters_with_api}}/{{ corp.member_count }}
    @@ -90,7 +90,10 @@ Main character Main corporation Character list - Killboard + Killboard + {% if sent_apis %} + API JackKnife + {% endif %} {% for maincharname, player in characters_with_api %} @@ -121,6 +124,19 @@

    Killboard

    {% endfor %} + {% if sent_apis %} + + {% for apiinfo in player.apilist %} +

    + + + +

    + {% endfor %} + + {% endif %} {% endfor %} diff --git a/stock/templates/registered/corputilssearchview.html b/stock/templates/registered/corputilssearchview.html index a68f513a..4410a946 100644 --- a/stock/templates/registered/corputilssearchview.html +++ b/stock/templates/registered/corputilssearchview.html @@ -12,7 +12,7 @@ {% if perms.auth.corputils %}

    Member Search Results

    -

    {{ corp.corporation_name }}

    +

    {{ corp.corporation_name }}

    @@ -34,19 +34,42 @@
    - - + + + + + {% if sent_apis %} + + {% endif %} - {% for member in members %} - - + {% for result in results %} + + + + + + {% if sent_apis %} + + {% endif %} {% endfor %}
    CharacterMain CharacterCharacterMain characterKillboardAPI JackKnife
    {{ member.name }}{{ member.id }}
    - {% if member.api_registered%} - {{ member.main }} + + {{ result.name }} + {% if result.api_registered%} + {{ result.main }} {% else %} No API registered! {% endif %} +

    Killboard

    +
    + {% if result.api_registered %} + + + + {% endif %} +
    diff --git a/util/__init__.py b/util/__init__.py index 339b36bb..93783589 100755 --- a/util/__init__.py +++ b/util/__init__.py @@ -18,8 +18,9 @@ def bootstrap_permissions(): Permission.objects.get_or_create(codename="jabber_broadcast_all", content_type=ct, name="jabber_broadcast_all") Permission.objects.get_or_create(codename="human_resources", content_type=ct, name="human_resources") Permission.objects.get_or_create(codename="blue_member", content_type=ct, name="blue_member") - Permission.objects.get_or_create(codename="corp_stats", content_type=ct, name="corp_stats") Permission.objects.get_or_create(codename="corputils", content_type=ct, name="corputils") + Permission.objects.get_or_create(codename="alliance_apis", content_type=ct, name="alliance_apis") + Permission.objects.get_or_create(codename="corp_apis", content_type=ct, name="corp_apis") Permission.objects.get_or_create(codename="timer_management", content_type=ct, name="timer_management") Permission.objects.get_or_create(codename="timer_view", content_type=ct, name="timer_view") Permission.objects.get_or_create(codename="srp_management", content_type=ct, name="srp_management")