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 %}