# Episodes.Community - Community-Driven TV Show Episode Link Sharing Site # Copyright (C) 2017 Evert "Diamond" Prants , Taizo "Tsa6" Simpson # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . from django.template import RequestContext from django.shortcuts import render, get_list_or_404, get_object_or_404 from django.views import View from django.views.generic.base import TemplateView from django.contrib.auth.decorators import login_required from django.conf import settings from django.http import Http404, HttpResponseForbidden, HttpResponse, HttpResponseRedirect from django.db.models import Case, When, Value, IntegerField, Count, F, Q from django.contrib.auth.mixins import LoginRequiredMixin from django.shortcuts import render from django.core.paginator import Paginator from guardian.decorators import permission_required_or_403 from LandingPage.models import Show, DiscussionBoard, DiscussionReply, DiscussionVote class Boards(TemplateView): template_name = "boards.html" def get_context_data(self, abbr, **kwargs): ctx = super().get_context_data() show = get_object_or_404(Show, abbr=abbr) page = self.request.GET.get('page', 1) boards_list = DiscussionBoard.objects.filter(show=show) paginator = Paginator(boards_list, getattr(settings, "DISCUSSIONS_PER_PAGE", 26)) try: boards = paginator.page(page) except PageNotAnInteger: boards = paginator.page(1) except EmptyPage: boards = paginator.page(paginator.num_pages) ctx['boards'] = boards ctx['show'] = show return ctx