Source code for star_wars_explorer.views

# -*- coding: utf-8 -*-
from django.http import Http404, HttpResponseRedirect
from django.shortcuts import resolve_url
from django.views import View
from django.views.generic import CreateView, DetailView, ListView

from swdata import SWPeople
from . import models


[docs]class PeopleReportList(ListView): model = models.PeopleReport ordering = '-when_saved' paginate_by = 10
[docs]class PeopleReportCreate(View):
[docs] @staticmethod def post(request, *args, **kwargs): report = models.PeopleReport.create_new_report() url = resolve_url("star_wars_explorer:PeopleReportDetail", report.pk) return HttpResponseRedirect(url)
[docs]class PeopleReportDetail(DetailView): model = models.PeopleReport
[docs] def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) limit = int(self.request.GET.get('limit', 10)) exists = self.object.exists() if not exists: context["gone"] = True return context data = self.object.data(start=0, stop=limit) context["header"] = data[0] context["people"] = data[1:] context["limit"] = limit + 10 return context
[docs]class PeopleReportDistinct(DetailView): model = models.PeopleReport template_name = 'star_wars_explorer/peoplereport_distinct.html'
[docs] def get_object(self, queryset=None): obj = super().get_object(queryset) if not obj.exists(): raise Http404("Report file is gone") return obj
[docs] def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) header = self.object.data(0, 1)[0] context["header"] = header columns = self.request.GET.keys() or ['homeworld'] # remove unsupported column names columns = set(header).intersection(columns) context["columns"] = columns context["data"] = self.object.distinct(columns) return context