diff --git a/app/eve_api/templates/eve_api/log.html b/app/eve_api/templates/eve_api/log.html index 6d0f77c..fd30e1d 100644 --- a/app/eve_api/templates/eve_api/log.html +++ b/app/eve_api/templates/eve_api/log.html @@ -12,7 +12,7 @@ Service IDDate / TimeAPI - {% for log in logs %} + {% for log in object_list %} {{ log.service }} {{ log.time_access }} diff --git a/app/eve_api/urls.py b/app/eve_api/urls.py index 58ab64e..f314aac 100644 --- a/app/eve_api/urls.py +++ b/app/eve_api/urls.py @@ -9,7 +9,7 @@ urlpatterns = patterns('', url(r'^eveapi/update/(?P\d+)/$', views.eveapi_update, name="eveapi-update"), url(r'^eveapi/delete/(?P\d+)/$', views.eveapi_del, name="eveapi-delete"), url(r'^eveapi/refresh/(?P\d+)/$', views.eveapi_refresh, name="eveapi-refresh"), - url(r'^eveapi/log/(?P\d+)/$', views.eveapi_log, name="eveapi-log"), + url(r'^eveapi/log/(?P\d+)/$', login_required(views.EVEAPILogView.as_view()), name="eveapi-log"), url(r'^eveapi/access/(?P\d+)/$', login_required(views.EVEAPIAccessView.as_view()), name="eveapi-accessview"), url(r'^character/list/$', views.eveapi_character, name="eveapi-characters-list"), diff --git a/app/eve_api/views/base.py b/app/eve_api/views/base.py index 0b260a5..3de88fe 100644 --- a/app/eve_api/views/base.py +++ b/app/eve_api/views/base.py @@ -5,7 +5,7 @@ from django.core.urlresolvers import reverse from django.http import HttpResponse, Http404 from django.shortcuts import render_to_response, get_object_or_404, redirect from django.template import RequestContext -from django.views.generic import DetailView +from django.views.generic import DetailView, ListView from django.contrib import messages from django.contrib.auth.decorators import login_required @@ -132,19 +132,27 @@ def eveapi_refresh(request, userid, post_save_redirect='/'): return redirect(post_save_redirect) -@login_required -def eveapi_log(request, userid, template='eve_api/log.html'): - """ Provides a list of access logs for a specific EVE API key """ +class EVEAPILogView(ListView): - acc = get_object_or_404(EVEAccount, pk=userid) - if acc and (acc.user == request.user or request.user.is_staff): - context = { - 'userid': userid, - 'logs': ApiAccessLog.objects.filter(userid=userid).order_by('-time_access')[:50], - } - return render_to_response(template, context, context_instance=RequestContext(request)) - else: - raise Http404 + model = ApiAccessLog + template_name = 'eve_api/log.html' + + def dispatch(self, request, *args, **kwargs): + self.userid = kwargs.pop('userid') + if not (get_object_or_404(EVEAccount, pk=self.userid).user == request.user or request.user.is_superuser): + raise Http404 + return super(EVEAPILogView, self).dispatch(request, *args, **kwargs) + + def get_context_data(self, **kwargs): + ctx = super(EVEAPILogView, self).get_context_data(**kwargs) + ctx.update({ + 'userid': self.userid, + }) + return ctx + + def get_queryset(self): + limit = getattr(self, 'limit', 50) + return self.model.objects.filter(userid=self.userid).order_by('-time_access')[:limit] @login_required diff --git a/app/sso/templates/sso/profile.html b/app/sso/templates/sso/profile.html index 500858e..a270b7a 100644 --- a/app/sso/templates/sso/profile.html +++ b/app/sso/templates/sso/profile.html @@ -100,7 +100,7 @@ {{ acc.api_last_updated|naturaltimediff }} {% ifswitch api-disableprocessing %}{% else %}RefreshUpdate Key, {% endifswitch %} - Logs{% ifswitch eve-keydelete %},  + Logs{% ifswitch eve-keydelete %},  Delete{% endifswitch %} {% endfor %}