mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-14 15:00:16 +02:00
Added search functionality to member list.
This commit is contained in:
parent
cc3d176533
commit
030a0e9a8c
@ -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'),
|
||||
|
5
corputils/forms.py
Normal file
5
corputils/forms.py
Normal file
@ -0,0 +1,5 @@
|
||||
from django import forms
|
||||
|
||||
|
||||
class CorputilsSearchForm(forms.Form):
|
||||
search_string = forms.CharField(max_length=254, required=True, label="Search String")
|
@ -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/")
|
||||
|
||||
|
@ -123,7 +123,7 @@
|
||||
</li>
|
||||
{% if IS_CORP %}
|
||||
<li>
|
||||
<a {% ifequal request.path "/corp_utils/" %} class="active" {% endifequal %}
|
||||
<a {% ifequal request.path "/corputils/" %} class="active" {% endifequal %}
|
||||
href="{% url 'auth_corp_member_view' %}"><i
|
||||
class="fa fa-chain fa-fw grayiconecolor"></i> Member Tracking</a>
|
||||
</li>
|
||||
|
@ -1,13 +1,15 @@
|
||||
{% extends "public/base.html" %}
|
||||
{% block title %}Alliance Auth{% endblock %}
|
||||
{% block page_title %}Corporation Stats{% endblock page_title %}
|
||||
{% load bootstrap %}
|
||||
{% load corputils_extras %}
|
||||
|
||||
{% block title %}Alliance Auth{% endblock %}
|
||||
{% block page_title %}Corporation Member Tracking{% endblock page_title %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header text-center">Corporation Member Data</h1>
|
||||
{% if perms.auth.member %}
|
||||
{% if perms.auth.corp_stats %}
|
||||
<div class="col-lg-12 container" id="example">
|
||||
{% if corp %}
|
||||
<div class="row">
|
||||
@ -32,6 +34,13 @@
|
||||
|
||||
<p>Unregistered characters: {{characters_without_api|length}}</p>
|
||||
</div>
|
||||
|
||||
<div class="text-right">
|
||||
<!-- Button trigger modal -->
|
||||
<button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#myModal">
|
||||
Search Members
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -93,4 +102,31 @@
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if perms.auth.corp_stats %}
|
||||
<!-- Modal -->
|
||||
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
|
||||
aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span
|
||||
class="sr-only">Close</span></button>
|
||||
<h4 class="modal-title" id="myModalLabel">Member Search</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-signin" role="form"
|
||||
action={% url 'auth_corputils_search' %} method="POST">
|
||||
{% csrf_token %}
|
||||
{{ search_form|bootstrap }}
|
||||
<br/>
|
||||
<button class="btn btn-lg btn-primary btn-block" type="submit">Search</button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock content %}
|
71
stock/templates/registered/corputilssearchview.html
Normal file
71
stock/templates/registered/corputilssearchview.html
Normal file
@ -0,0 +1,71 @@
|
||||
{% extends "public/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load corputils_extras %}
|
||||
|
||||
{% block title %}Alliance Auth{% endblock %}
|
||||
|
||||
{% block page_title %}Corporation Member Tracking{% endblock page_title %}
|
||||
{% block extra_css %}{% endblock extra_css %}
|
||||
|
||||
{% block content %}
|
||||
<div class="col-lg-12">
|
||||
{% if perms.auth.corp_stats %}
|
||||
<h1 class="page-header text-center">Member Search Results
|
||||
<div class="text-right">
|
||||
<!-- Button trigger modal -->
|
||||
<button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#myModal">
|
||||
Search Members
|
||||
</button>
|
||||
</div>
|
||||
</h1>
|
||||
<div class="container-fluid">
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th class="text-center">Character</th>
|
||||
<th class="text-center">Main Character</th>
|
||||
</tr>
|
||||
{% for member in members %}
|
||||
<tr {% if not member.api_registered%} bgcolor="#DD5500" {% endif %} >
|
||||
<td class="text-center">{{ member.name }}</td>
|
||||
<td class="text-center">
|
||||
{% if member.api_registered%}
|
||||
{{ member.main }}
|
||||
{% else %}
|
||||
No API registered!
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if perms.auth.corp_stats %}
|
||||
<!-- Modal -->
|
||||
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
|
||||
aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span
|
||||
class="sr-only">Close</span></button>
|
||||
<h4 class="modal-title" id="myModalLabel">Member Search</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-signin" role="form"
|
||||
action={% url 'auth_corputils_search' %} method="POST">
|
||||
{% csrf_token %}
|
||||
{{ search_form|bootstrap }}
|
||||
<br/>
|
||||
<button class="btn btn-lg btn-primary btn-block" type="submit">Search</button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock content %}
|
Loading…
x
Reference in New Issue
Block a user