From a2438b2e16525c245138f16254ee41aba3d949c3 Mon Sep 17 00:00:00 2001 From: Ydmir Date: Fri, 26 Feb 2016 00:15:10 +0100 Subject: [PATCH 1/4] Merged corpstats and membertracking. Added two new permissions, corp_apis and alliance_apis. --- alliance_auth/urls.py | 3 +- corputils/views.py | 60 ++++++++++--- eveonline/views.py | 33 ------- stock/templates/public/base.html | 11 +-- stock/templates/registered/corpstats.html | 85 ------------------- stock/templates/registered/corputils.html | 22 ++++- .../registered/corputilssearchview.html | 39 +++++++-- util/__init__.py | 3 +- 8 files changed, 105 insertions(+), 151 deletions(-) delete mode 100755 stock/templates/registered/corpstats.html 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") From 8a321992ad228b4390c488ec0e93ce585e7dab89 Mon Sep 17 00:00:00 2001 From: Ydmir Date: Fri, 26 Feb 2016 08:48:25 +0100 Subject: [PATCH 2/4] Utils-view defaults to showing the corporation of the requester, if in the alliance. Also renamed some variables. --- corputils/views.py | 37 ++++++++++++++--------- stock/templates/registered/corputils.html | 4 +-- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/corputils/views.py b/corputils/views.py index 7b6ac23f..917d464c 100644 --- a/corputils/views.py +++ b/corputils/views.py @@ -30,32 +30,39 @@ logger = logging.getLogger(__name__) def corp_member_view(request, corpid = None): 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_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) membercorp_list = [(int(membercorp.corporation_id), str(membercorp.corporation_name)) for membercorp in alliancecorps] membercorp_list.sort(key=lambda tup: tup[1]) + membercorp_id_list = [int(membercorp.corporation_id) for membercorp in alliancecorps] + if user_corp_id not in membercorp_id_list: + user_corp_id = None + if not corpid: - if(settings.CORP_ID): + if(settings.IS_CORP): corpid = settings.CORP_ID + elif user_corp_id: + corpid = user_corp_id else: corpid = membercorp_list[0][0] - corp = EveCorporationInfo.objects.get(corporation_id=corpid) 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 check_if_user_has_permission(request.user, 'alliance_apis') or (check_if_user_has_permission(request.user, 'corp_apis') and (user_corp_id == corpid)): + logger.debug("Retreiving and sending API-information") + send_apis = True if settings.IS_CORP: try: @@ -69,7 +76,7 @@ def corp_member_view(request, corpid = None): characters_with_api = {} characters_without_api = {} - ncharacters_with_api = 0 + num_registered_characters = 0 for char_id, member_data in member_list.items(): try: char = EveCharacter.objects.get(character_id=char_id) @@ -85,7 +92,7 @@ def corp_member_view(request, corpid = None): mainchar = char maincorp = "Not set." maincorpid = None - ncharacters_with_api = ncharacters_with_api + 1 + num_registered_characters = num_registered_characters + 1 characters_with_api.setdefault(mainname, Player(main=mainchar, maincorp=maincorp, maincorpid=maincorpid, @@ -104,7 +111,7 @@ def corp_member_view(request, corpid = None): "corp": corp, "sent_apis": send_apis, "characters_with_api": sorted(characters_with_api.items()), - 'nwithapi': ncharacters_with_api, + 'n_registered': num_registered_characters, "characters_without_api": sorted(characters_without_api.items()), "search_form": CorputilsSearchForm()} else: @@ -112,7 +119,7 @@ def corp_member_view(request, corpid = None): context = {"corp": corp, "sent_apis": send_apis, "characters_with_api": sorted(characters_with_api.items()), - 'nwithapi': ncharacters_with_api, + 'n_registered': num_registered_characters, "characters_without_api": sorted(characters_without_api.items()), "search_form": CorputilsSearchForm()} diff --git a/stock/templates/registered/corputils.html b/stock/templates/registered/corputils.html index e9ea7d92..bcd0c8dc 100644 --- a/stock/templates/registered/corputils.html +++ b/stock/templates/registered/corputils.html @@ -34,8 +34,8 @@
    API Index:
    -
    - {{ncharacters_with_api}}/{{ corp.member_count }} +
    + {{n_registered}}/{{ corp.member_count }}
    From cb50697537c7394ab48571f51f442afb7ceb6cd3 Mon Sep 17 00:00:00 2001 From: Ydmir Date: Sat, 27 Feb 2016 00:50:16 +0100 Subject: [PATCH 3/4] Updated readme with the new permissions. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index d30ed5e1..02d9c2e2 100755 --- a/README.md +++ b/README.md @@ -69,6 +69,8 @@ Special Permissions In Admin: auth | user | blue_member ( Auto Added to people who register has a blue when adding api key) auth | user | corp_stats ( View basic corp auth stats *who is authed etc*) auth | user | corputils ( View who has registered APIs, which alts belong to which main, and more. ) + auth | user | corp_apis ( View APIs, andjackKnife, of all member in current corp. ) + auth | user | alliance_apis ( View APIs, andjackKnife, of all member in whole alliance. ) auth | user | timer_management ( Access to create and remove timers) auth | user | timer_view ( Access to timerboard to view timers) auth | user | srp_management ( Allows for an individual to create and remove srp fleets and fleet data) From c852d3f8e2de077b5143010434708911c4517cc2 Mon Sep 17 00:00:00 2001 From: Ydmir Date: Sat, 27 Feb 2016 09:48:42 +0100 Subject: [PATCH 4/4] Changed to only using two permissions. --- corputils/views.py | 216 +++++++++--------- stock/templates/public/base.html | 2 +- stock/templates/registered/corputils.html | 6 +- .../registered/corputilssearchview.html | 4 - util/__init__.py | 1 - 5 files changed, 107 insertions(+), 122 deletions(-) diff --git a/corputils/views.py b/corputils/views.py index 917d464c..082963fb 100644 --- a/corputils/views.py +++ b/corputils/views.py @@ -26,7 +26,6 @@ logger = logging.getLogger(__name__) # Because corp-api only exist for the executor corp, this function will only be available in corporation mode. @login_required -@permission_required('auth.corputils') def corp_member_view(request, corpid = None): logger.debug("corp_member_view called by user %s" % request.user) @@ -58,148 +57,143 @@ def corp_member_view(request, corpid = None): corp = EveCorporationInfo.objects.get(corporation_id=corpid) Player = namedtuple("Player", ["main", "maincorp", "maincorpid", "altlist", "apilist"]) - send_apis = False - 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)): logger.debug("Retreiving and sending API-information") - send_apis = True - if settings.IS_CORP: - try: - 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) - - characters_with_api = {} - characters_without_api = {} - - num_registered_characters = 0 - for char_id, member_data in member_list.items(): - try: - char = EveCharacter.objects.get(character_id=char_id) - char_owner = char.user + if settings.IS_CORP: try: - 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: " + char_owner.username - mainchar = char - maincorp = "Not set." - maincorpid = None - num_registered_characters = num_registered_characters + 1 - characters_with_api.setdefault(mainname, Player(main=mainchar, - maincorp=maincorp, - maincorpid=maincorpid, - altlist=[], - apilist=[]) - ).altlist.append(char) - if send_apis: + 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) + + characters_with_api = {} + characters_without_api = {} + + num_registered_characters = 0 + for char_id, member_data in member_list.items(): + try: + 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) + 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: " + char_owner.username + mainchar = char + maincorp = "Not set." + maincorpid = None + num_registered_characters = num_registered_characters + 1 + characters_with_api.setdefault(mainname, Player(main=mainchar, + maincorp=maincorp, + maincorpid=maincorpid, + altlist=[], + apilist=[]) + ).altlist.append(char) 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"]}) + + except EveCharacter.DoesNotExist: + characters_without_api.update({member_data["name"]: member_data["id"]}) - if not settings.IS_CORP: - context = {"membercorp_list": membercorp_list, - "corp": corp, - "sent_apis": send_apis, - "characters_with_api": sorted(characters_with_api.items()), - 'n_registered': num_registered_characters, - "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()), - 'n_registered': num_registered_characters, - "characters_without_api": sorted(characters_without_api.items()), - "search_form": CorputilsSearchForm()} + if not settings.IS_CORP: + context = {"membercorp_list": membercorp_list, + "corp": corp, + "characters_with_api": sorted(characters_with_api.items()), + 'n_registered': num_registered_characters, + "characters_without_api": sorted(characters_without_api.items()), + "search_form": CorputilsSearchForm()} + else: + logger.debug("corp_member_view running in corportation mode") + context = {"corp": corp, + "characters_with_api": sorted(characters_with_api.items()), + 'n_registered': num_registered_characters, + "characters_without_api": sorted(characters_without_api.items()), + "search_form": CorputilsSearchForm()} - - return render_to_response('registered/corputils.html',context, context_instance=RequestContext(request) ) + return render_to_response('registered/corputils.html',context, context_instance=RequestContext(request) ) + return HttpResponseRedirect("/dashboard/") @login_required -@permission_required('auth.corputils') def corputils_search(request, corpid=settings.CORP_ID): logger.debug("corputils_search called by user %s" % request.user) corp = EveCorporationInfo.objects.get(corporation_id=corpid) - send_apis = False + 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)): logger.debug("Retreiving and sending API-information") - send_apis = True + authorized = 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 + authorized = True - if request.method == 'POST': - form = CorputilsSearchForm(request.POST) - logger.debug("Request type POST contains form valid: %s" % form.is_valid()) - if form.is_valid(): - # Really dumb search and only checks character name - # This can be improved but it does the job for now - searchstring = form.cleaned_data['search_string'] - logger.debug("Searching for player with character name %s for user %s" % (searchstring, request.user)) + if authorized: + if request.method == 'POST': + form = CorputilsSearchForm(request.POST) + logger.debug("Request type POST contains form valid: %s" % form.is_valid()) + if form.is_valid(): + # Really dumb search and only checks character name + # This can be improved but it does the job for now + searchstring = form.cleaned_data['search_string'] + logger.debug("Searching for player with character name %s for user %s" % (searchstring, request.user)) - if settings.IS_CORP: - try: - 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']) - - searchresults = [] - for memberid, member_data in member_list.items(): - if searchstring.lower() in member_data["name"].lower(): + if settings.IS_CORP: 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) - mainname = EveCharacter.objects.get(character_id=mainid).character_name - api_registered = True - except EveCharacter.DoesNotExist: - api_registered = False - char = None - mainname = "" - if api_registered and send_apis: - apiinfo = EveApiKeyPair.objects.get(api_id=char.api_id) - else: - apiinfo = None + 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) - searchresults.append(SearchResult(name=member_data["name"], id=memberid, main=mainname, api_registered=api_registered, - character=char, apiinfo=apiinfo)) + SearchResult = namedtuple('SearchResult', ['name', 'id', 'main', 'api_registered', 'character', 'apiinfo']) + + searchresults = [] + for memberid, member_data in member_list.items(): + if searchstring.lower() in member_data["name"].lower(): + 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) + mainname = EveCharacter.objects.get(character_id=mainid).character_name + api_registered = True + apiinfo = EveApiKeyPair.objects.get(api_id=char.api_id) + except EveCharacter.DoesNotExist: + api_registered = False + char = None + mainname = "" + 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(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(), 'sent_apis': send_apis} + context = {'corp': corp, 'results': searchresults, 'search_form': CorputilsSearchForm()} + + return render_to_response('registered/corputilssearchview.html', + context, context_instance=RequestContext(request)) + 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_to_response('registered/corputilssearchview.html', - context, context_instance=RequestContext(request)) 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)) + logger.debug("Returning empty search form for user %s" % request.user) + return HttpResponseRedirect("/corputils/") + return HttpResponseRedirect("/dashboard/") - else: - logger.debug("Returning empty search form for user %s" % request.user) - return HttpResponseRedirect("/corputils/") diff --git a/stock/templates/public/base.html b/stock/templates/public/base.html index edee0f0d..1f97835e 100755 --- a/stock/templates/public/base.html +++ b/stock/templates/public/base.html @@ -124,7 +124,7 @@ {% endif %} - {% if perms.auth.corp_stats %} + {% if perms.auth.corp_apis or perms.auth.alliance_apis %}