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/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/(?P<charid>\d+)/$', views.eveapi_character, name="eveapi-character"),
url(r'^character/list/$', login_required(views.EVEAPICharacterListView.as_view()), name="eveapi-characters-list"),
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<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.shortcuts import render_to_response, get_object_or_404, redirect
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.contrib import messages
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]
@login_required
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 """
class EVEAPICharacterDetailView(DetailView):
if charid:
character = get_object_or_404(EVEPlayerCharacter.objects.select_related('corporation', 'corporation__aliance'), id=charid)
model = EVEPlayerCharacter
template_name = 'eve_api/character.html'
#Check if the user has permission to see the character profile
if not request.user.has_perm('eve_api.can_view_all_characters') and (not character.account or not request.user == character.account.user):
raise Http404
def get(self, request, *args, **kwargs):
self.object = self.get_object()
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:
current_training = character.eveplayercharacterskill_set.get(in_training__gt=0)
current_training = self.object.eveplayercharacterskill_set.get(in_training__gt=0)
except:
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 = []
currentSkillGroup = 0
@@ -182,24 +185,29 @@ def eveapi_character(request, charid=None, template='eve_api/character.html', li
if not skill.skill.group.id == currentSkillGroup:
currentSkillGroup = skill.skill.group.id
skillTree.append([0, skill.skill.group.name, [], skill.skill.group.id])
skillTree[-1][0] += skill.skillpoints
skillTree[-1][2].append(skill)
context = {
'character': character,
ctx.update({
'character': self.object,
'current_training': current_training,
'skills': skills,
'skillTree': skillTree,
'employmenthistory': character.employmenthistory.all().order_by('-record_id'),
}
return render_to_response(template, context, context_instance=RequestContext(request))
'employmenthistory': self.object.employmenthistory.all().order_by('-record_id'),
})
return ctx
context = {
'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'),
}
return render_to_response(list_template, context, context_instance=RequestContext(request))
class EVEAPICharacterListView(TemplateView):
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 ctx
class EVEAPICorporationView(DetailPaginationMixin, DetailView):

View File

@@ -53,7 +53,7 @@
<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 %}
<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 "hr"|installed %}
<li><a href="{% url hr-index %}">HR</a></li>