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) 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) Member = namedtuple('Member', ['name', 'main', 'api_registered']) members = [] 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 except EveCharacter.DoesNotExist: api_registered = False mainname = "" members.append(Member(name=member_data["name"], main=mainname, api_registered=api_registered)) logger.info("Found %s members for user %s matching search string %s" % (len(members), request.user, searchstring)) context = {'corp': corp, 'members': members, '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)) else: logger.debug("Returning empty search form for user %s" % request.user) return HttpResponseRedirect("/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) 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") authorized = True except (ValueError, EveCharacter.DoesNotExist): if check_if_user_has_permission(request.user, 'alliance_apis'): logger.debug("Retreiving and sending API-information") authorized = True 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(): 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)) 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)) else: logger.debug("Returning empty search form for user %s" % request.user) return HttpResponseRedirect("/corputils/") return HttpResponseRedirect("/dashboard/")