from django.views.generic.base import TemplateView from django.views.generic.list import ListView from django.core.paginator import Paginator from django.conf import settings from pyi2phosts.lib.utils import get_b32 from pyi2phosts.extsources.models import ExternalSource from pyi2phosts.postkey.models import i2phost from pyi2phosts.postkey.templatetags import paginator class LocalTemplateView(TemplateView): """ Renders some template with passing some local config variables """ def get_context_data(self, **kwargs): context = super(LocalTemplateView, self).get_context_data(**kwargs) context.update({ 'title': settings.SITE_NAME, 'domain': settings.DOMAIN, 'b64': settings.MY_B64, 'b32': get_b32(settings.MY_B64) }) return context class LocalObjectList(ListView): """ Renders some list of objects """ def get_context_data(self, **kwargs): context = super(LocalObjectList, self).get_context_data(**kwargs) context.update({ 'title': settings.SITE_NAME, }) return context class FaqView(LocalObjectList): """ Renders list of external sources for hosts.txt """ queryset = ExternalSource.objects.filter(active=True) template_name = 'faq.html' context_object_name = 'sources_list' class HostsListsView(LocalObjectList): """ Renders list of active hosts """ def get_queryset(self): allowed_orders = ['name', 'last_seen', 'date_added'] self.order_by = self.request.GET.get('order', 'name') if self.order_by not in allowed_orders: self.order_by = 'name' qs = super(HostsListsView, self).get_queryset() return qs.order_by(self.order_by) def get_context_data(self, **kwargs): """ we should pass order_by to template to not lose it while paginating """ context = super(LocalObjectList, self).get_context_data(**kwargs) context.update({ 'order': self.order_by, }) return context queryset = i2phost.objects.filter(activated=True) template_name = 'browse.html' context_object_name = 'host_list' paginate_by = 40