Convert character views to CBV

This commit is contained in:
2012-06-06 18:28:28 +01:00
parent 9086590a28
commit 604124439d
3 changed files with 33 additions and 25 deletions

View File

@@ -12,8 +12,8 @@ urlpatterns = patterns('',
url(r'^eveapi/log/(?P<userid>\d+)/$', login_required(views.EVEAPILogView.as_view()), name="eveapi-log"), url(r'^eveapi/log/(?P<userid>\d+)/$', login_required(views.EVEAPILogView.as_view()), name="eveapi-log"),
url(r'^eveapi/access/(?P<slug>\d+)/$', login_required(views.EVEAPIAccessView.as_view()), name="eveapi-accessview"), url(r'^eveapi/access/(?P<slug>\d+)/$', login_required(views.EVEAPIAccessView.as_view()), name="eveapi-accessview"),
url(r'^character/list/$', views.eveapi_character, name="eveapi-characters-list"), url(r'^character/list/$', login_required(views.EVEAPICharacterListView.as_view()), name="eveapi-characters-list"),
url(r'^character/(?P<charid>\d+)/$', views.eveapi_character, name="eveapi-character"), url(r'^character/(?P<pk>\d+)/$', login_required(views.EVEAPICharacterDetailView.as_view()), name="eveapi-character"),
url(r'^corporation/(?P<pk>\d+)/$', login_required(views.EVEAPICorporationView.as_view()), name="eveapi-corporation"), url(r'^corporation/(?P<pk>\d+)/$', login_required(views.EVEAPICorporationView.as_view()), name="eveapi-corporation"),
url(r'^corporation/(?P<corporationid>\d+)/export/$', views.eveapi_corporation_members_csv, name="eveapi-corporation-members-csv"), url(r'^corporation/(?P<corporationid>\d+)/export/$', views.eveapi_corporation_members_csv, name="eveapi-corporation-members-csv"),

View File

@@ -5,7 +5,7 @@ from django.core.urlresolvers import reverse
from django.http import HttpResponse, Http404, HttpResponseForbidden, HttpResponseRedirect from django.http import HttpResponse, Http404, HttpResponseForbidden, HttpResponseRedirect
from django.shortcuts import render_to_response, get_object_or_404, redirect from django.shortcuts import render_to_response, get_object_or_404, redirect
from django.template import RequestContext from django.template import RequestContext
from django.views.generic import DetailView, ListView, View from django.views.generic import TemplateView, DetailView, ListView, View
from django.views.generic.detail import SingleObjectMixin from django.views.generic.detail import SingleObjectMixin
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
@@ -159,22 +159,25 @@ class EVEAPILogView(ListView):
return self.model.objects.filter(userid=self.userid).order_by('-time_access')[:limit] return self.model.objects.filter(userid=self.userid).order_by('-time_access')[:limit]
@login_required class EVEAPICharacterDetailView(DetailView):
def eveapi_character(request, charid=None, template='eve_api/character.html', list_template='eve_api/character_list.html'):
""" Provide a list of characters, or a indivdual character sheet """
if charid: model = EVEPlayerCharacter
character = get_object_or_404(EVEPlayerCharacter.objects.select_related('corporation', 'corporation__aliance'), id=charid) template_name = 'eve_api/character.html'
#Check if the user has permission to see the character profile def get(self, request, *args, **kwargs):
if not request.user.has_perm('eve_api.can_view_all_characters') and (not character.account or not request.user == character.account.user): self.object = self.get_object()
raise Http404 if not request.user.has_perm('eve_api.can_view_all_characters') and (not self.object.account or not request.user == self.object.account.user):
return HttpResponseForbidden()
context = self.get_context_data(object=self.object)
return self.render_to_response(context)
def get_context_data(self, **kwargs):
ctx = super(EVEAPICharacterDetailView, self).get_context_data(**kwargs)
try: try:
current_training = character.eveplayercharacterskill_set.get(in_training__gt=0) current_training = self.object.eveplayercharacterskill_set.get(in_training__gt=0)
except: except:
current_training = None current_training = None
skills = character.eveplayercharacterskill_set.all().order_by('skill__group__name', 'skill__name') skills = self.object.eveplayercharacterskill_set.all().order_by('skill__group__name', 'skill__name')
skillTree = [] skillTree = []
currentSkillGroup = 0 currentSkillGroup = 0
@@ -186,20 +189,25 @@ def eveapi_character(request, charid=None, template='eve_api/character.html', li
skillTree[-1][0] += skill.skillpoints skillTree[-1][0] += skill.skillpoints
skillTree[-1][2].append(skill) skillTree[-1][2].append(skill)
context = { ctx.update({
'character': character, 'character': self.object,
'current_training': current_training, 'current_training': current_training,
'skills': skills, 'skills': skills,
'skillTree': skillTree, 'skillTree': skillTree,
'employmenthistory': character.employmenthistory.all().order_by('-record_id'), 'employmenthistory': self.object.employmenthistory.all().order_by('-record_id'),
} })
return render_to_response(template, context, context_instance=RequestContext(request)) return ctx
context = { class EVEAPICharacterListView(TemplateView):
'accounts': EVEAccount.objects.select_related('characters__name').filter(user=request.user).exclude(api_keytype=API_KEYTYPE_CORPORATION),
'characters': EVEPlayerCharacter.objects.filter(eveaccount__user=request.user).distinct().order_by('name'), template_name = 'eve_api/character_list.html'
def get_context_data(self, **kwargs):
ctx = {
'accounts': EVEAccount.objects.select_related('characters__name').filter(user=self.request.user).exclude(api_keytype=API_KEYTYPE_CORPORATION),
'characters': EVEPlayerCharacter.objects.filter(eveaccount__user=self.request.user).distinct().order_by('name'),
} }
return render_to_response(list_template, context, context_instance=RequestContext(request)) return ctx
class EVEAPICorporationView(DetailPaginationMixin, DetailView): class EVEAPICorporationView(DetailPaginationMixin, DetailView):

View File

@@ -53,7 +53,7 @@
<li><a href="{% url sso.views.profile %}">Your Profile</a></li> <li><a href="{% url sso.views.profile %}">Your Profile</a></li>
{% if "groups"|installed %}<li><a href="{% url groups.views.group_list %}"> Your Groups</a></li>{% endif %} {% if "groups"|installed %}<li><a href="{% url groups.views.group_list %}"> Your Groups</a></li>{% endif %}
<li><a href="{% url eve_api.views.eveapi_character %}">Your Characters</a></li> <li><a href="{% url eveapi-characters-list %}">Your Characters</a></li>
{% if "api"|installed %}<li><a href="{% url oauth-list-tokens %}">3rd Party App Access</a></li>{% endif %} {% if "api"|installed %}<li><a href="{% url oauth-list-tokens %}">3rd Party App Access</a></li>{% endif %}
{% if "hr"|installed %} {% if "hr"|installed %}
<li><a href="{% url hr-index %}">HR</a></li> <li><a href="{% url hr-index %}">HR</a></li>