mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-15 23:40:17 +02:00
More statistics features for Fatlink (#423)
* Fixed a bug with links not registering correctly when undocked. Also removed some typos. * Adding functionality to view individual members stats as an admin, to see ships flown, and paps created, if any. Also correcting a incorrectly sorted table, and a faulty link.
This commit is contained in:
parent
dbc9b584d1
commit
20fdcc5b31
@ -241,8 +241,12 @@ urlpatterns = patterns('',
|
||||
url(r'^fat/$', 'fleetactivitytracking.views.fatlink_view', name='auth_fatlink_view'),
|
||||
url(r'^fat/statistics/$', 'fleetactivitytracking.views.fatlink_statistics_view', name='auth_fatlink_view_statistics'),
|
||||
url(r'^fat/statistics/(?P<year>[0-9]+)/(?P<month>[0-9]+)/$', 'fleetactivitytracking.views.fatlink_statistics_view', name='auth_fatlink_view_statistics_month'),
|
||||
url(r'^fat/user/statistics/$', 'fleetactivitytracking.views.fatlink_personal_statistics_view'),
|
||||
url(r'^fat/user/statistics/(?P<year>[0-9]+)/$', 'fleetactivitytracking.views.fatlink_personal_statistics_view', name='auth_fatlink_view_personal_statistics'),
|
||||
url(r'^fat/user/statistics/$', 'fleetactivitytracking.views.fatlink_personal_statistics_view', name='auth_fatlink_view_personal_statistics'),
|
||||
url(r'^fat/user/statistics/(?P<year>[0-9]+)/$', 'fleetactivitytracking.views.fatlink_personal_statistics_view', name='auth_fatlink_view_personal_statistics_year'),
|
||||
url(r'^fat/user/statistics/(?P<year>[0-9]+)/(?P<month>[0-9]+)/$', 'fleetactivitytracking.views.fatlink_monthly_personal_statistics_view',
|
||||
name='auth_fatlink_view_personal_statistics_month'),
|
||||
url(r'^fat/user/(?P<char_id>[0-9]+)/statistics/(?P<year>[0-9]+)/(?P<month>[0-9]+)/$', 'fleetactivitytracking.views.fatlink_monthly_personal_statistics_view',
|
||||
name='auth_fatlink_view_user_statistics_month'),
|
||||
url(r'^fat/create/$', 'fleetactivitytracking.views.create_fatlink_view', name='auth_create_fatlink_view'),
|
||||
url(r'^fat/modify/$', 'fleetactivitytracking.views.modify_fatlink_view', name='auth_modify_fatlink_view'),
|
||||
url(r'^fat/modify/(?P<hash>[a-zA-Z0-9_-]+)/([a-z0-9_-]+)$',
|
||||
|
@ -245,22 +245,22 @@ def corputils_search(request, corpid=settings.CORP_ID):
|
||||
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
|
||||
main = EveCharacter.objects.get(character_id=mainid)
|
||||
api_registered = True
|
||||
apiinfo = EveApiKeyPair.objects.get(api_id=char.api_id)
|
||||
except EveCharacter.DoesNotExist:
|
||||
api_registered = False
|
||||
char = None
|
||||
mainname = ""
|
||||
main = ""
|
||||
apiinfo = None
|
||||
|
||||
searchresults.append(SearchResult(name=member_data["name"], id=memberid, main=mainname, api_registered=api_registered,
|
||||
searchresults.append(SearchResult(name=member_data["name"], id=memberid, main=main, 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()}
|
||||
context = {'corp': corp, 'results': searchresults, 'search_form': CorputilsSearchForm(), "year":datetime.datetime.now().year, "month":datetime.datetime.now().month}
|
||||
|
||||
return render_to_response('registered/corputilssearchview.html',
|
||||
context, context_instance=RequestContext(request))
|
||||
|
@ -114,21 +114,23 @@ def fatlink_statistics_view(request, year=datetime.date.today().year, month=date
|
||||
|
||||
|
||||
@login_required
|
||||
def fatlink_personal_statistics_view(request, year=datetime.date.today().year):
|
||||
def fatlink_personal_statistics_view(request, year=datetime.date.today().year, main_name=None):
|
||||
year = int(year)
|
||||
logger.debug("Personal statistics view for year %i called by %s" % (year, request.user))
|
||||
|
||||
user = request.user
|
||||
logger.debug("fatlink_personal_statistics_view called by user %s" % request.user)
|
||||
|
||||
personal_fats = Fat.objects.filter(user=user).order_by('id')
|
||||
|
||||
|
||||
|
||||
monthlystats = {datetime.date(year, month, 1).strftime("%h"):0 for month in range(1,13)}
|
||||
monthlystats = [0 for month in range(1,13)]
|
||||
|
||||
for fat in personal_fats:
|
||||
fatdate = fat.fatlink.fatdatetime
|
||||
if fatdate.year == year:
|
||||
monthlystats[fatdate.strftime("%h")] += 1
|
||||
monthlystats[fatdate.month-1] += 1
|
||||
|
||||
monthlystats = [(i+1, datetime.date(year, i+1, 1).strftime("%h"), monthlystats[i]) for i in range(12)]
|
||||
|
||||
if datetime.datetime.now() > datetime.datetime(year+1, 1, 1):
|
||||
context = {'user':user, 'monthlystats': monthlystats, 'year':year, 'previous_year':year-1, 'next_year':year+1}
|
||||
@ -138,6 +140,38 @@ def fatlink_personal_statistics_view(request, year=datetime.date.today().year):
|
||||
return render_to_response('registered/fatlinkpersonalstatisticsview.html', context, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
@login_required
|
||||
def fatlink_monthly_personal_statistics_view(request, year, month, char_id=None):
|
||||
year = int(year)
|
||||
month = int(month)
|
||||
start_of_month = datetime.datetime(year, month, 1)
|
||||
start_of_next_month = first_day_of_next_month(year, month)
|
||||
start_of_previous_month = first_day_of_previous_month(year, month)
|
||||
|
||||
if check_if_user_has_permission(request.user, 'fleetactivitytracking_statistics') and char_id:
|
||||
user = EveCharacter.objects.get(character_id=char_id).user
|
||||
else:
|
||||
user = request.user
|
||||
logger.debug("Personal monthly statistics view for user %s called by %s" % (user, request.user))
|
||||
|
||||
personal_fats = Fat.objects.filter(user=user).filter(fatlink__fatdatetime__gte = start_of_month).filter(fatlink__fatdatetime__lt = start_of_next_month)
|
||||
|
||||
ship_statistics = dict()
|
||||
n_fats = 0
|
||||
for fat in personal_fats:
|
||||
ship_statistics[fat.shiptype] = ship_statistics.setdefault(fat.shiptype, 0) + 1
|
||||
n_fats += 1
|
||||
context = {'user': user, 'shipStats':sorted(ship_statistics.items()), 'month':start_of_month.strftime("%h"),
|
||||
'year':year, 'n_fats': n_fats, 'char_id': char_id, 'previous_month': start_of_previous_month,
|
||||
'next_month': start_of_next_month}
|
||||
|
||||
created_fats = Fatlink.objects.filter(creator=user).filter(fatdatetime__gte = start_of_month).filter(fatdatetime__lt = start_of_next_month)
|
||||
context["created_fats"] = created_fats
|
||||
context["n_created_fats"] = len(created_fats)
|
||||
|
||||
return render_to_response('registered/fatlinkpersonalmonthlystatisticsview.html', context, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
@login_required
|
||||
def click_fatlink_view(request, hash, fatname):
|
||||
# Take IG-header data and register the fatlink if not existing already.
|
||||
@ -201,6 +235,7 @@ def create_fatlink_view(request):
|
||||
fatlink.name = slugify(form.cleaned_data["fatname"])
|
||||
fatlink.fleet = form.cleaned_data["fleet"]
|
||||
fatlink.duration = form.cleaned_data["duration"]
|
||||
fatlink.fatdatetime = timezone.now()
|
||||
fatlink.creator = request.user
|
||||
fatlink.hash = ''.join(random.choice(string.ascii_letters+string.digits) for i in range(10))
|
||||
try:
|
||||
|
@ -107,7 +107,12 @@
|
||||
<th class="col-md-2">Main corporation</th>
|
||||
<th class="col-md-2">Character list</th>
|
||||
<th class="col-md-1">Fats</th>
|
||||
{% if perms.auth.fleetactivitytracking_statistics %}
|
||||
<th class="col-md-1">Killboard</th>
|
||||
<th class="col-md-2">Fleet statistics</th>
|
||||
{% else %}
|
||||
<th class="col-md-3">Killboard</th>
|
||||
{% endif %}
|
||||
<th class="col-md-2">API JackKnife</th>
|
||||
</tr>
|
||||
{% for maincharname, player in characters_with_api %}
|
||||
@ -142,6 +147,14 @@
|
||||
<p><a href="https://zkillboard.com/character/{{ char.character_id }}/" class="label label-danger" target="_blank">Killboard</a></p>
|
||||
{% endfor %}
|
||||
</td>
|
||||
{% if perms.auth.fleetactivitytracking %}
|
||||
<td>
|
||||
<a href="{% url 'auth_fatlink_view_user_statistics_month' player.main.character_id this_month|date:"Y" this_month|date:"m" %}">
|
||||
<button type="button" class="btn btn-primary">Statistics
|
||||
</button>
|
||||
</a>
|
||||
</td>
|
||||
{% endif %}
|
||||
<td>
|
||||
{% for apiinfo in player.apilist %}
|
||||
<p>
|
||||
|
@ -37,7 +37,12 @@
|
||||
<th class="col-md-1"></th>
|
||||
<th class="col-md-2">Character</th>
|
||||
<th class="col-md-2">Main character</th>
|
||||
{% if perms.auth.fleetactivitytracking%}
|
||||
<th class="col-md-2">Killboard</th>
|
||||
<th class="col-md-2">Fleet statistics</th>
|
||||
{% else %}
|
||||
<th class="col-md-5">Killboard</th>
|
||||
{% endif %}
|
||||
<th class="col-md-2">API JackKnife</th>
|
||||
</tr>
|
||||
{% for result in results %}
|
||||
@ -48,7 +53,7 @@
|
||||
<td>{{ result.name }}</td>
|
||||
<td>
|
||||
{% if result.api_registered%}
|
||||
{{ result.main }}
|
||||
{{ result.main.character_name }}
|
||||
{% else %}
|
||||
<span class="label label-danger">No API registered!</span>
|
||||
{% endif %}
|
||||
@ -57,6 +62,19 @@
|
||||
<p><a href="https://zkillboard.com/character/{{ result.char.character_id }}/" class="label label-danger" target="_blank">Killboard</a></p>
|
||||
</td>
|
||||
|
||||
{% if perms.auth.fleetactivitytracking %}
|
||||
{% if result.main %}
|
||||
<td>
|
||||
<a href="{% url 'auth_fatlink_view_user_statistics_month' result.main.character_id year month%}">
|
||||
<button type="button" class="btn btn-primary">Statistics
|
||||
</button>
|
||||
</a>
|
||||
</td>
|
||||
{% else %}
|
||||
<td></td>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<td>
|
||||
{% if result.api_registered %}
|
||||
<a href="{{ JACK_KNIFE_URL }}?usid={{ result.apiinfo.api_id }}&apik={{ result.apiinfo.api_key }}"
|
||||
|
@ -0,0 +1,69 @@
|
||||
{% extends "public/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
|
||||
{% block title %}Alliance Auth{% endblock %}
|
||||
{% block page_title %}Personal fatlink statistics{% endblock page_title %}
|
||||
|
||||
{% block content %}
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header text-center">Participation data statistics for {{ month }}, {{ year }}
|
||||
{% if char_id %}
|
||||
<div class="text-right">
|
||||
<a href="{% url 'auth_fatlink_view_user_statistics_month' char_id previous_month|date:"Y" previous_month|date:"m" %}">
|
||||
<button type="button" class="btn btn-info">Previous month</button>
|
||||
</a>
|
||||
<a href="{% url 'auth_fatlink_view_user_statistics_month' char_id next_month|date:"Y" next_month|date:"m" %}">
|
||||
<button type="button" class="btn btn-info">Next month</button>
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</h1>
|
||||
<h2>{{ user }} has collected {{ n_fats }} links this month.</h2>
|
||||
<table class="table table-responsive table-bordered">
|
||||
<tr>
|
||||
<th class="col-md-2 text-center">Ship</th>
|
||||
<th class="col-md-2 text-center">Times used</th>
|
||||
</tr>
|
||||
{% for ship, n_fats in shipStats %}
|
||||
<tr>
|
||||
<td class="text-center">{{ ship }}</td>
|
||||
<td class="text-center">{{ n_fats }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% if created_fats %}
|
||||
<h2>{{ user }} has created {{ n_created_fats }} links this month.</h2>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th class="text-center">Name</th>
|
||||
<th class="text-center">Creator</th>
|
||||
<th class="text-center">Fleet</th>
|
||||
<th class="text-center">Eve Time</th>
|
||||
<th class="text-center">Duration</th>
|
||||
<th class="text-center">Edit</th>
|
||||
</tr>
|
||||
{% for link in created_fats %}
|
||||
<tr>
|
||||
<td class="text-center"><a href="{% url 'auth_click_fatlink_view' %}{{ link.hash }}/{{ link.name }}">{{ link.name }}</a></td>
|
||||
<td class="text-center">{{ link.creator.username }}</td>
|
||||
<td class="text-center">{{ link.fleet }}</td>
|
||||
<td class="text-center">{{ link.fatdatetime }}</td>
|
||||
<td class="text-center">{{ link.duration }}</td>
|
||||
<td class="text-center">
|
||||
<a href="{% url 'auth_modify_fatlink_view' %}{{ link.hash }}/{{ link.name }}">
|
||||
<button type="button" class="btn btn-info"><span
|
||||
class="glyphicon glyphicon-edit"></span></button>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
</table>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
|
||||
<script src="/static/js/dateformat.js"></script>
|
||||
|
||||
{% endblock content %}
|
@ -9,11 +9,11 @@
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header text-center">Participation data statistics for {{ year }}
|
||||
<div class="text-right">
|
||||
<a href="{% url 'auth_fatlink_view_personal_statistics' previous_year %}">
|
||||
<a href="{% url 'auth_fatlink_view_personal_statistics_year' previous_year %}">
|
||||
<button type="button" class="btn btn-info">Previous year</button>
|
||||
</a>
|
||||
{% if next_year %}
|
||||
<a href="{% url 'auth_fatlink_view_personal_statistics' next_year %}">
|
||||
<a href="{% url 'auth_fatlink_view_personal_statistics_year' next_year %}">
|
||||
<button type="button" class="btn btn-info">Next year</button>
|
||||
</a>
|
||||
{% endif %}
|
||||
@ -24,9 +24,13 @@
|
||||
<th class="col-md-2 text-center">Month</th>
|
||||
<th class="col-md-2 text-center">Fats</th>
|
||||
</tr>
|
||||
{% for month, n_fats in monthlystats.items %}
|
||||
{% for monthnr, month, n_fats in monthlystats %}
|
||||
<tr>
|
||||
<td class="text-center">{{ month }}</td>
|
||||
<td class="text-center">
|
||||
<a href="{% url 'auth_fatlink_view_personal_statistics_month' year monthnr %}">
|
||||
{{ month }}
|
||||
</a>
|
||||
</td>
|
||||
<td class="text-center">{{ n_fats }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
@ -15,7 +15,7 @@
|
||||
</h4>
|
||||
</th>
|
||||
<th class="col-md-1">
|
||||
<a href="{% url 'auth_fatlink_view_statistics' %}">
|
||||
<a href="{% url 'auth_fatlink_view_personal_statistics' %}">
|
||||
<button type="button" class="btn btn-info">Personal statistics</button>
|
||||
</a>
|
||||
</th>
|
||||
|
Loading…
x
Reference in New Issue
Block a user