neue Verzeichnissstruktur

This commit is contained in:
Christian Berg
2014-11-26 13:13:07 +01:00
parent daa35f5913
commit f34281089d
3372 changed files with 168 additions and 2544 deletions

View File

@@ -1,216 +0,0 @@
# Create your views here.
from . import models, forms
from aggregator.models import Feed
from django.conf import settings
from django.contrib import comments
from django.http import HttpResponse, Http404
from django.utils.translation import ugettext as _
from django.views import generic
from utils.mixins import PermissionRequiredMixin
import events.models
import os
from django.shortcuts import get_object_or_404
class ArticleArchiveMixin(object):
def get_context_data(self, **kwargs):
context = super(ArticleArchiveMixin, self).get_context_data(**kwargs)
context['categories'] = models.Category.objects.all()
context['active_category'] = self.category
context['feeds'] = Feed.objects.active()
return context
class ArticleArchiveIndex(ArticleArchiveMixin, generic.ArchiveIndexView):
queryset = models.Article.objects.filter(status=models.STATUS_PUBLISHED)
date_field = 'date_created'
paginate_by = 5
context_object_name = 'article_list'
allow_empty = True
def get_queryset(self):
queryset = generic.ArchiveIndexView.get_queryset(self)
self.category = self.kwargs.get('category')
if self.category:
try:
self.category = models.Category.objects.get(slug=self.category)
queryset = queryset.filter(category=self.category)
except models.Category.DoesNotExist:
raise Http404(_("This Category does not exist."))
return queryset
class ArticleYearArchive(ArticleArchiveMixin, generic.YearArchiveView):
queryset = models.Article.objects.filter(status=models.STATUS_PUBLISHED)
date_field = 'date_created'
paginate_by = 5
year_format = '%Y'
make_object_list = True
allow_empty = True
def get_queryset(self):
queryset = generic.YearArchiveView.get_queryset(self)
self.category = self.kwargs.get('category')
if self.category:
self.category = get_object_or_404(models.Category, slug=self.category)
queryset = queryset.filter(category=self.category)
return queryset
class ArticleMonthArchive(ArticleArchiveMixin, generic.MonthArchiveView):
queryset = models.Article.objects.filter(status=models.STATUS_PUBLISHED)
date_field = 'date_created'
month_format = '%m'
paginate_by = 5
make_object_list = True
allow_empty = True
def get_queryset(self):
queryset = generic.MonthArchiveView.get_queryset(self)
self.category = self.kwargs.get('category')
if self.category:
self.category = models.Category.objects.get(slug=self.category)
queryset = queryset.filter(category=self.category)
return queryset
class ArticleDetail(generic.DetailView):
queryset = models.Article.objects.filter(status=models.STATUS_PUBLISHED)
class ArticleForm(PermissionRequiredMixin, generic.UpdateView):
model = models.Article
form_class = forms.ArticleForm
permission_required = 'content.change_article'
def get_object(self):
if self.kwargs.get('pk', None):
return models.Article.objects.get(pk=self.kwargs['pk'])
else:
return models.Article(author=self.request.user)
class ImageList(generic.View):
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):
form_class = forms.PageForm
template_name = 'content/page_form.html'
permission_required = 'content.add_page'
def get_initial(self):
path = os.path.splitext(self.kwargs['path'])[0]
if path.startswith('/'):
path = path[1:]
if path.endswith('/'):
path = path[:-1]
parent = models.Page.objects.get(path=path)
return {'parent': parent}
class PageEditForm(PermissionRequiredMixin, generic.UpdateView):
form_class = forms.PageForm
permission_required = 'content.change_page'
def get_object(self, queryset=None):
path = os.path.splitext(self.kwargs['path'])[0]
if path.startswith('/'):
path = path[1:]
if path.endswith('/'):
path = path[:-1]
return models.Page.objects.get(path=path)
class PageHtml(generic.DetailView):
def get_object(self, queryset=None):
try:
return models.Page.objects.get(path=self.kwargs['path'],
content_type=1)
except models.Page.DoesNotExist:
raise Http404(
_("No Page found matching the Path %s") % self.request.path
)
def get_template_names(self):
return self.object.template
class PagePdf(generic.DeleteView):
def get_object(self, queryset=None):
try:
return models.Page.objects.get(path=self.kwargs['path'],
content_type=2)
except models.Page.DoesNotExist:
raise Http404(
_("No PDF Document found matching the Path %s") %
self.request.path
)
def render_to_response(self, context, **response_kwargs):
try:
pdf_file = open(self.object.pdf_file.path, 'rb')
response = HttpResponse(pdf_file.read(),
content_type='application/pdf')
pdf_file.close()
return response
except:
raise Http404('File not Found %s.pdf' % self.kwargs['path'])
class PageList(generic.View):
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'
def get_context_data(self, **kwargs):
page = models.Page.objects.get(slug='index')
random_photo = events.models.Photo.objects.get_random(startpage=True)
recent_comment_list = comments.get_model().objects.filter(
site__pk=settings.SITE_ID,
is_public=True,
is_removed=False,
)
recent_comment_list = recent_comment_list.order_by('-submit_date')[:10]
context = {
'title': page.title,
'content': page.content,
'random_photo': random_photo.callout,
'current_event': events.models.Event.objects.current_event(),
'next_event': events.models.Event.objects.next_event(),
'upcoming_events': events.models.Event.objects.upcoming(),
'recent_article_list': models.Article.objects.published()[:3],
'recent_comment_list': recent_comment_list,
}
return context
queryset = models.Article.objects.filter(status=models.STATUS_PUBLISHED)