Eine Menge Aufräumarbeiten.
* Eine Testsuite um Mahrjong Ranking Berechnungen zu testen * Erste Arbeiten um die Workarounds aus dem "utils" Paket los zu werden. * Vieles am Code umformatiert für PEP8 conformität
This commit is contained in:
@@ -1,31 +1,48 @@
|
||||
# Create your views here.
|
||||
import os
|
||||
|
||||
import django_comments as comments
|
||||
import os
|
||||
from csp.decorators import csp_update
|
||||
from django.conf import settings
|
||||
from django.http import HttpResponse, Http404
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.views import generic
|
||||
|
||||
from . import models, forms
|
||||
from events.models import Photo
|
||||
from utils.mixins import PermissionRequiredMixin
|
||||
from . import models, forms
|
||||
|
||||
|
||||
class ArticleArchiveMixin(object):
|
||||
"""
|
||||
Mixin View to add common context data to Views of the news article archive.
|
||||
"""
|
||||
|
||||
def get_category(self, queryset):
|
||||
try:
|
||||
self.category = models.Category.objects.get(
|
||||
slug=self.kwargs['category'])
|
||||
return queryset.filter(category=self.category)
|
||||
except models.Category.DoesNotExist:
|
||||
raise Http404(_("This Category does not exist."))
|
||||
except KeyError:
|
||||
"""
|
||||
Filter the queryset by category if one has been specified in the URL
|
||||
|
||||
:param queryset: an model.Article.objects Queryset
|
||||
:return: an model.Article.objects Queryset filterd by category
|
||||
"""
|
||||
|
||||
category_slug = self.kwargs.get('category')
|
||||
if not category_slug:
|
||||
self.category = None
|
||||
return self.queryset
|
||||
try:
|
||||
self.category = models.Category.objects.get(slug=category_slug)
|
||||
except models.Category.DoesNotExist:
|
||||
raise Http404(_("This Category does not exist."))
|
||||
return queryset.filter(category=self.category)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
"""
|
||||
Adds the categories and the active category to the template context.
|
||||
|
||||
:return: an django.template.context
|
||||
"""
|
||||
|
||||
context = super(ArticleArchiveMixin, self).get_context_data(**kwargs)
|
||||
context['categories'] = models.Category.objects.all()
|
||||
context['active_category'] = self.category
|
||||
@@ -33,6 +50,10 @@ class ArticleArchiveMixin(object):
|
||||
|
||||
|
||||
class ArticleArchiveIndex(ArticleArchiveMixin, generic.ArchiveIndexView):
|
||||
"""
|
||||
Displays the latest news and the filters to browse the archives.
|
||||
"""
|
||||
|
||||
queryset = models.Article.objects.filter(status=models.STATUS_PUBLISHED)
|
||||
date_field = 'date_created'
|
||||
paginate_by = 5
|
||||
@@ -40,12 +61,21 @@ class ArticleArchiveIndex(ArticleArchiveMixin, generic.ArchiveIndexView):
|
||||
allow_empty = True
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = generic.ArchiveIndexView.get_queryset(self)
|
||||
queryset = self.get_category(queryset)
|
||||
return queryset
|
||||
"""
|
||||
Filter the Queryset by category.
|
||||
|
||||
:return: models.Article.objects queryset
|
||||
"""
|
||||
return self.get_category(
|
||||
super(ArticleArchiveIndex, self).get_queryset()
|
||||
)
|
||||
|
||||
|
||||
class ArticleYearArchive(ArticleArchiveMixin, generic.YearArchiveView):
|
||||
"""
|
||||
Displays the Articles filterd by a specific year
|
||||
"""
|
||||
|
||||
queryset = models.Article.objects.filter(status=models.STATUS_PUBLISHED)
|
||||
date_field = 'date_created'
|
||||
paginate_by = 5
|
||||
@@ -54,12 +84,21 @@ class ArticleYearArchive(ArticleArchiveMixin, generic.YearArchiveView):
|
||||
allow_empty = True
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = generic.YearArchiveView.get_queryset(self)
|
||||
queryset = self.get_category(queryset)
|
||||
return queryset
|
||||
"""
|
||||
Filter the Queryset by category.
|
||||
|
||||
:return: models.Article.objects queryset
|
||||
"""
|
||||
return self.get_category(
|
||||
super(ArticleYearArchive, self).get_queryset()
|
||||
)
|
||||
|
||||
|
||||
class ArticleMonthArchive(ArticleArchiveMixin, generic.MonthArchiveView):
|
||||
"""
|
||||
Displays the Articles filterd by a specific month
|
||||
"""
|
||||
|
||||
queryset = models.Article.objects.filter(status=models.STATUS_PUBLISHED)
|
||||
date_field = 'date_created'
|
||||
month_format = '%m'
|
||||
@@ -68,16 +107,28 @@ class ArticleMonthArchive(ArticleArchiveMixin, generic.MonthArchiveView):
|
||||
allow_empty = True
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = generic.MonthArchiveView.get_queryset(self)
|
||||
queryset = self.get_category(queryset)
|
||||
return queryset
|
||||
"""
|
||||
Filter the Queryset by category.
|
||||
|
||||
:return: models.Article.objects queryset
|
||||
"""
|
||||
return self.get_category(
|
||||
super(ArticleMonthArchive, self).get_queryset()
|
||||
)
|
||||
|
||||
|
||||
class ArticleDetail(generic.DetailView):
|
||||
"""
|
||||
Render the news Article, but only if it got published.
|
||||
"""
|
||||
|
||||
queryset = models.Article.objects.filter(status=models.STATUS_PUBLISHED)
|
||||
|
||||
|
||||
class ArticleForm(PermissionRequiredMixin, generic.UpdateView):
|
||||
"""
|
||||
View to add or edit an Article
|
||||
"""
|
||||
model = models.Article
|
||||
form_class = forms.ArticleForm
|
||||
permission_required = 'content.change_article'
|
||||
@@ -97,28 +148,11 @@ class ArticleForm(PermissionRequiredMixin, generic.UpdateView):
|
||||
return models.Article(author=self.request.user)
|
||||
|
||||
|
||||
class ImageList(generic.View):
|
||||
# noinspection PyMethodMayBeStatic
|
||||
|
||||
def get(self, kwargs):
|
||||
image_list = []
|
||||
response = HttpResponse(content_type='text/javascript')
|
||||
response.write('var tinyMCEImageList = new Array(')
|
||||
os.chdir(settings.MEDIA_ROOT)
|
||||
for dirpath, dirnames, filenames in os.walk(
|
||||
'images'): # @UnusedVariable @IgnorePep8
|
||||
filenames.sort()
|
||||
for filename in filenames:
|
||||
image_list.append('["%(name)s", "%(path)s"]' % {
|
||||
'name': os.path.join(dirpath, filename),
|
||||
'path': os.path.join(settings.MEDIA_URL, dirpath, filename)
|
||||
})
|
||||
response.write(', '.join(image_list))
|
||||
response.write(');')
|
||||
return response
|
||||
|
||||
|
||||
class PageAddForm(PermissionRequiredMixin, generic.CreateView):
|
||||
"""
|
||||
Renders an Form to create a new page for users with conforming permissions.
|
||||
"""
|
||||
|
||||
form_class = forms.PageForm
|
||||
template_name = 'content/page_form.html'
|
||||
permission_required = 'content.add_page'
|
||||
@@ -132,8 +166,16 @@ class PageAddForm(PermissionRequiredMixin, generic.CreateView):
|
||||
parent = models.Page.objects.get(path=path)
|
||||
return {'parent': parent}
|
||||
|
||||
@method_decorator(csp_update(SCRIPT_SRC="'unsafe-eval'"))
|
||||
def dispatch(self, *args, **kwargs):
|
||||
return super(PageAddForm, self).dispatch(*args, **kwargs)
|
||||
|
||||
|
||||
class PageEditForm(PermissionRequiredMixin, generic.UpdateView):
|
||||
"""
|
||||
Renders an Form to edit a page for users with conforming permissions.
|
||||
"""
|
||||
|
||||
form_class = forms.PageForm
|
||||
permission_required = 'content.change_page'
|
||||
|
||||
@@ -145,6 +187,10 @@ class PageEditForm(PermissionRequiredMixin, generic.UpdateView):
|
||||
path = path[:-1]
|
||||
return models.Page.objects.get(path=path)
|
||||
|
||||
@method_decorator(csp_update(SCRIPT_SRC="'unsafe-eval'"))
|
||||
def dispatch(self, *args, **kwargs):
|
||||
return super(PageEditForm, self).dispatch(*args, **kwargs)
|
||||
|
||||
|
||||
class PageHtml(generic.DetailView):
|
||||
|
||||
@@ -184,23 +230,6 @@ class PagePdf(generic.DeleteView):
|
||||
raise Http404('File not Found %s.pdf' % self.kwargs['path'])
|
||||
|
||||
|
||||
class PageList(generic.View):
|
||||
# noinspection PyMethodMayBeStatic
|
||||
|
||||
def get(self, kwargs):
|
||||
response = HttpResponse(content_type='text/javascript')
|
||||
response.write('var tinyMCELinkList = new Array(')
|
||||
page_list = []
|
||||
for page in models.Page.objects.filter(status=models.STATUS_PUBLISHED):
|
||||
page_list.append('["%(name)s", "%(path)s"]' % {
|
||||
'name': page.menu_name,
|
||||
'path': page.get_absolute_url()
|
||||
})
|
||||
response.write(', '.join(page_list))
|
||||
response.write(');')
|
||||
return response
|
||||
|
||||
|
||||
class StartPage(generic.TemplateView):
|
||||
template_name = 'index.html'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user