diff --git a/alliance_auth/urls.py b/alliance_auth/urls.py index 4d065330..e1b562ad 100755 --- a/alliance_auth/urls.py +++ b/alliance_auth/urls.py @@ -164,7 +164,9 @@ urlpatterns = patterns('', name="auth_srp_request_update_amount_view"), #corputils - url(r'^corp_utils/$', 'corputils.views.corp_member_view', name='auth_corp_member_view'), + url(r'^corputils/$', 'corputils.views.corp_member_view', name='auth_corp_member_view'), + url(r'corputils_search/', 'corputils.views.corputils_search', + name="auth_corputils_search"), # FLEET FITTINGS url(r'^fits/$', 'services.views.fleet_fits', name='auth_fleet_fits'), diff --git a/corputils/forms.py b/corputils/forms.py new file mode 100644 index 00000000..1d1ba9a2 --- /dev/null +++ b/corputils/forms.py @@ -0,0 +1,5 @@ +from django import forms + + +class CorputilsSearchForm(forms.Form): + search_string = forms.CharField(max_length=254, required=True, label="Search String") diff --git a/corputils/views.py b/corputils/views.py index 0bbd083b..a148bc38 100644 --- a/corputils/views.py +++ b/corputils/views.py @@ -3,12 +3,16 @@ from django.shortcuts import render_to_response from django.template import RequestContext from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import permission_required +from django.shortcuts import HttpResponseRedirect + +from collections import namedtuple from authentication.managers import AuthServicesInfoManager from services.managers.eve_api_manager import EveApiManager from eveonline.models import EveCorporationInfo from eveonline.models import EveCharacter from authentication.models import AuthServicesInfo +from forms import CorputilsSearchForm import logging @@ -30,7 +34,7 @@ def corp_member_view(request): member_list = EveApiManager.get_corp_membertracking() characters_with_api = {} characters_without_api = {} - for char_id, member_data in member_list.iteritems(): + for char_id, member_data in member_list.items(): try: char = EveCharacter.objects.get(character_id=char_id) user = char.user @@ -43,10 +47,60 @@ def corp_member_view(request): context = {"corp": corp, "characters_with_api": sorted(characters_with_api.items()), - "characters_without_api": sorted(characters_without_api.items())} + "characters_without_api": sorted(characters_without_api.items()), + "search_form": CorputilsSearchForm()} return render_to_response('registered/corputils.html',context, context_instance=RequestContext(request) ) else: logger.error("Not running in corporation mode. Cannot provide corp member tracking data." % (request.user, auth_info.main_char_id)) return render_to_response('registered/corputils.html', None, context_instance=RequestContext(request)) + +@login_required +@permission_required('auth.corp_stats') +def corputils_search(request): + logger.debug("corputils_search called by user %s" % request.user) + 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)) + + member_list = EveApiManager.get_corp_membertracking() + + 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 = {'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 = {'applications': None, 'search_form': form} + 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/") + diff --git a/stock/templates/public/base.html b/stock/templates/public/base.html index c2067ca1..f015fcf8 100755 --- a/stock/templates/public/base.html +++ b/stock/templates/public/base.html @@ -123,7 +123,7 @@ {% if IS_CORP %}
Unregistered characters: {{characters_without_api|length}}
Character | +Main Character | +
---|---|
{{ member.name }} | ++ {% if member.api_registered%} + {{ member.main }} + {% else %} + No API registered! + {% endif %} + | +