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
 |