Added PostListViewUngleichTest, Added PostDetailViewUngleich, Converted detail ungleich post view into Class Based Django view, Added translations to ungleich landing page
This commit is contained in:
parent
48650f33ce
commit
7cd5244fdc
11 changed files with 217 additions and 35 deletions
|
|
@ -17,13 +17,13 @@
|
|||
Posted
|
||||
{% if post.author %}
|
||||
by
|
||||
<a href="{% url 'djangocms_blog:posts-author' post.author.get_username %}">
|
||||
<!-- <a href="{% url 'djangocms_blog:posts-author' post.author.get_username %}"> -->
|
||||
{% if post.author.get_full_name %}
|
||||
{{ post.author.get_full_name }}
|
||||
{% else %}
|
||||
{{ post.author }}
|
||||
{% endif %}
|
||||
</a>
|
||||
<!-- </a> -->
|
||||
{% endif %}
|
||||
on {{ post.date_published|date:"DATE_FORMAT" }}
|
||||
</p>
|
||||
|
|
|
|||
114
ungleich/test_views.py
Normal file
114
ungleich/test_views.py
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
from utils.tests import BaseTestCase
|
||||
from django.conf import settings
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.core.urlresolvers import resolve
|
||||
from django.utils.translation import get_language
|
||||
from django.utils.translation import activate
|
||||
from djangocms_blog.settings import get_setting
|
||||
from djangocms_blog.models import Post
|
||||
|
||||
from model_mommy import mommy
|
||||
|
||||
from .views import PostListViewUngleich, PostDetailViewUngleich
|
||||
|
||||
|
||||
class PostListViewUngleichTest(BaseTestCase):
|
||||
|
||||
DE_LANGUAGE_CODE = 'de'
|
||||
EN_LANGUAGE_CODE = 'en-us'
|
||||
|
||||
def setUp(self):
|
||||
super(PostListViewUngleichTest, self).setUp()
|
||||
self.url = reverse('ungleich:post-list')
|
||||
self.view = PostListViewUngleich
|
||||
self.expected_template = 'djangocms_blog/post_list_ungleich.html'
|
||||
en_post_titles = ['post-title-1', 'post-title-2']
|
||||
self.en_posts = [mommy.make(Post, title=x, publish=True) for x in en_post_titles]
|
||||
# activate DE language in order to create DE POSTS
|
||||
activate(self.DE_LANGUAGE_CODE)
|
||||
de_post_titles = ['post-title-3', 'post-title-4']
|
||||
self.de_posts = [mommy.make(Post, title=x, publish=True) for x in de_post_titles]
|
||||
|
||||
self.expected_context = {
|
||||
'TRUNCWORDS_COUNT': get_setting('POSTS_LIST_TRUNCWORDS_COUNT'),
|
||||
'languages': settings.LANGUAGES,
|
||||
'current_language': get_language()
|
||||
|
||||
}
|
||||
|
||||
def test_url_resolve_to_view_correctly(self):
|
||||
found = resolve(self.url)
|
||||
self.assertEqual(found.func.__name__, self.view.__name__)
|
||||
|
||||
def test_queryset(self):
|
||||
# testing EN-US Post queryset
|
||||
activate(self.EN_LANGUAGE_CODE)
|
||||
view = self.setup_view(self.view())
|
||||
queryset = view.get_queryset()
|
||||
self.assertEqual(self.en_posts, list(queryset.order_by('id')))
|
||||
|
||||
# testing DE Post queryset
|
||||
activate(self.DE_LANGUAGE_CODE)
|
||||
view = self.setup_view(self.view())
|
||||
queryset = view.get_queryset()
|
||||
self.assertEqual(self.de_posts, list(queryset.order_by('id')))
|
||||
|
||||
def test_get_context(self):
|
||||
view = self.setup_view(self.view())
|
||||
queryset = view.get_queryset()
|
||||
view.object_list = queryset
|
||||
context = view.get_context_data()
|
||||
self.assertEqual(self.expected_context.get('current_language'),
|
||||
context['current_language'])
|
||||
|
||||
|
||||
class DetailsViewTest(BaseTestCase):
|
||||
|
||||
DE_LANGUAGE_CODE = 'de'
|
||||
EN_LANGUAGE_CODE = 'en-us'
|
||||
|
||||
def setUp(self):
|
||||
super(DetailsViewTest, self).setUp()
|
||||
self.url = reverse('ungleich:post-list')
|
||||
self.view = PostDetailViewUngleich
|
||||
self.expected_template = 'djangocms_blog/post_detail.html'
|
||||
self.en_post = mommy.make(Post, publish=True, title='post-title-en')
|
||||
# activate DE language in order to create DE POSTS
|
||||
activate(self.DE_LANGUAGE_CODE)
|
||||
self.de_post = mommy.make(Post, publish=True, title='post-title-de')
|
||||
|
||||
self.en_post_kwargs = {
|
||||
'slug': self.en_post.slug,
|
||||
'year': self.en_post.date_created.year,
|
||||
'month': self.en_post.date_created.month,
|
||||
'day': self.en_post.date_created.day
|
||||
}
|
||||
self.en_post_url = reverse('ungleich:post-detail', kwargs=self.en_post_kwargs)
|
||||
|
||||
self.de_post_kwargs = {
|
||||
'slug': self.de_post.slug,
|
||||
'year': self.de_post.date_created.year,
|
||||
'month': self.de_post.date_created.month,
|
||||
'day': self.de_post.date_created.day
|
||||
}
|
||||
self.de_post_url = reverse('ungleich:post-detail', kwargs=self.de_post_kwargs)
|
||||
|
||||
def test_url_resolve_to_view_correctly(self):
|
||||
found = resolve(self.en_post_url)
|
||||
self.assertEqual(found.func.__name__, self.view.__name__)
|
||||
|
||||
found = resolve(self.de_post_url)
|
||||
self.assertEqual(found.func.__name__, self.view.__name__)
|
||||
|
||||
def test_get_object(self):
|
||||
# Testing get_object view method on an EN Post instance
|
||||
activate(self.EN_LANGUAGE_CODE)
|
||||
view = self.setup_view(self.view(), **self.en_post_kwargs)
|
||||
obj = view.get_object()
|
||||
self.assertEqual(self.en_post, obj)
|
||||
|
||||
# Testing get_object view method on an DE Post instance
|
||||
activate(self.DE_LANGUAGE_CODE)
|
||||
view = self.setup_view(self.view(), **self.de_post_kwargs)
|
||||
obj = view.get_object()
|
||||
self.assertEqual(self.de_post, obj)
|
||||
|
|
@ -1,9 +1,10 @@
|
|||
from django.conf.urls import url
|
||||
from . import views
|
||||
from .views import PostDetailViewUngleich
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^$', views.PostListViewUngleich.as_view()),
|
||||
url(r'^$', views.PostListViewUngleich.as_view(), name="post-list"),
|
||||
# url(r'^$',views.PostListView.as_view()),
|
||||
url(r'^(?P<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})/(?P<slug>\w[-\w]*)/$',
|
||||
views.details)
|
||||
PostDetailViewUngleich.as_view(), name="post-detail")
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
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
|
||||
|
||||
|
||||
|
||||
def blog(request):
|
||||
posts = Post.objects.all()
|
||||
context = {
|
||||
|
|
@ -41,12 +42,39 @@ class PostListViewUngleich(PostListView):
|
|||
return queryset
|
||||
|
||||
|
||||
def details(request, year, month, day, slug):
|
||||
#should be this way
|
||||
language = get_language()
|
||||
#but currently the posts are not trasnlated
|
||||
# language = 'en-us'
|
||||
post = Post.objects.translated(language, slug=slug).first()
|
||||
context = {'post': post}
|
||||
return render(request, 'ungleich/djangocms_blog/post_detail.html', context=context)
|
||||
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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue