示例#1
0
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/")
示例#2
0
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/")