81 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from django.conf import settings
 | 
						|
from django.http import Http404
 | 
						|
from django.shortcuts import render
 | 
						|
from django.views.generic import DetailView
 | 
						|
from django.utils.translation import get_language
 | 
						|
from djangocms_blog.models import Post
 | 
						|
from djangocms_blog.views import PostListView
 | 
						|
from djangocms_blog.settings import get_setting
 | 
						|
from django.utils.translation import ugettext_lazy as _
 | 
						|
 | 
						|
 | 
						|
def blog(request):
 | 
						|
    posts = Post.objects.all()
 | 
						|
    context = {
 | 
						|
        'post_list': posts
 | 
						|
    }
 | 
						|
 | 
						|
    # PostListView.base_template_name='post_list.html'
 | 
						|
    return render(request, 'ungleich/djangocms_blog/post_list_ungleich.html', context=context)
 | 
						|
 | 
						|
 | 
						|
class PostListViewUngleich(PostListView):
 | 
						|
    model = Post
 | 
						|
    context_object_name = 'post_list'
 | 
						|
    base_template_name = 'post_list_ungleich.html'
 | 
						|
    paginate_by = 5
 | 
						|
 | 
						|
    def get_context_data(self, **kwargs):
 | 
						|
        context = super(PostListView, self).get_context_data(**kwargs)
 | 
						|
        context['TRUNCWORDS_COUNT'] = get_setting('POSTS_LIST_TRUNCWORDS_COUNT')
 | 
						|
        context['languages'] = settings.LANGUAGES
 | 
						|
        context['current_language'] = get_language()
 | 
						|
 | 
						|
        return context
 | 
						|
 | 
						|
    def get_paginate_by(self, queryset):
 | 
						|
        return get_setting('PAGINATION')
 | 
						|
 | 
						|
    def get_queryset(self):
 | 
						|
        language = get_language()
 | 
						|
        queryset = self.model.objects.filter(publish=True).translated(language)
 | 
						|
        setattr(self.request, get_setting('CURRENT_NAMESPACE'), self.config)
 | 
						|
        return queryset
 | 
						|
 | 
						|
 | 
						|
class PostDetailViewUngleich(DetailView):
 | 
						|
    model = Post
 | 
						|
    template_name = 'ungleich/djangocms_blog/post_detail.html'
 | 
						|
    context_object_name = 'post'
 | 
						|
    slug_field = 'slug'
 | 
						|
    slug_url_kwarg = 'slug'
 | 
						|
 | 
						|
    def get_object(self, queryset=None):
 | 
						|
 | 
						|
        # Use a custom queryset if provided; this is required for subclasses
 | 
						|
        # like DateDetailView
 | 
						|
 | 
						|
        language = get_language()
 | 
						|
        if queryset is None:
 | 
						|
            queryset = self.get_queryset()
 | 
						|
        # Next, try looking up by primary key.
 | 
						|
        pk = self.kwargs.get(self.pk_url_kwarg)
 | 
						|
        slug = self.kwargs.get(self.slug_url_kwarg)
 | 
						|
        if pk is not None:
 | 
						|
            queryset = queryset.filter(pk=pk)
 | 
						|
        # Next, try looking up by slug.
 | 
						|
        if slug is not None and (pk is None or self.query_pk_and_slug):
 | 
						|
            slug_field = self.get_slug_field()
 | 
						|
            queryset = queryset.translated(language, **{slug_field: slug})
 | 
						|
        # If none of those are defined, it's an error.
 | 
						|
        if pk is None and slug is None:
 | 
						|
            raise AttributeError("Generic detail view %s must be called with "
 | 
						|
                                 "either an object pk or a slug."
 | 
						|
                                 % self.__class__.__name__)
 | 
						|
        try:
 | 
						|
            # Get the single item from the filtered queryset
 | 
						|
            obj = queryset.first()
 | 
						|
        except queryset.model.DoesNotExist:
 | 
						|
            raise Http404(_("No %(verbose_name)s found matching the query") %
 | 
						|
                          {'verbose_name': queryset.model._meta.verbose_name})
 | 
						|
        return obj
 |