Fix timezone support
This commit is contained in:
parent
ff48e4e37f
commit
72f001f277
7 changed files with 26 additions and 24 deletions
|
|
@ -1 +1 @@
|
||||||
__version__ = '0.2b5'
|
__version__ = '0.2c1'
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@ try:
|
||||||
from collections import Counter
|
from collections import Counter
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from .compat import Counter
|
from .compat import Counter
|
||||||
import datetime
|
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.utils.timezone import now
|
||||||
from parler.managers import TranslationManager
|
from parler.managers import TranslationManager
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -84,7 +84,7 @@ class GenericDateTaggedManager(TaggedFilterItem, TranslationManager):
|
||||||
queryset = self.published_future(queryset)
|
queryset = self.published_future(queryset)
|
||||||
if self.start_date_field:
|
if self.start_date_field:
|
||||||
return queryset.filter(
|
return queryset.filter(
|
||||||
**{"%s__lte" % self.start_date_field: datetime.datetime.now()})
|
**{"%s__lte" % self.start_date_field: now()})
|
||||||
else:
|
else:
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
@ -93,7 +93,7 @@ class GenericDateTaggedManager(TaggedFilterItem, TranslationManager):
|
||||||
queryset = self.get_queryset().all()
|
queryset = self.get_queryset().all()
|
||||||
if self.end_date_field:
|
if self.end_date_field:
|
||||||
qfilter = (
|
qfilter = (
|
||||||
models.Q(**{"%s__gte" % self.end_date_field: datetime.datetime.now()})
|
models.Q(**{"%s__gte" % self.end_date_field: now()})
|
||||||
| models.Q(**{"%s__isnull" % self.end_date_field: True})
|
| models.Q(**{"%s__isnull" % self.end_date_field: True})
|
||||||
)
|
)
|
||||||
queryset = queryset.filter(qfilter)
|
queryset = queryset.filter(qfilter)
|
||||||
|
|
@ -104,7 +104,7 @@ class GenericDateTaggedManager(TaggedFilterItem, TranslationManager):
|
||||||
queryset = self.get_queryset().all()
|
queryset = self.get_queryset().all()
|
||||||
if self.end_date_field:
|
if self.end_date_field:
|
||||||
qfilter = (
|
qfilter = (
|
||||||
models.Q(**{"%s__lte" % self.end_date_field: datetime.datetime.now()})
|
models.Q(**{"%s__lte" % self.end_date_field: now()})
|
||||||
| models.Q(**{"%s__isnull" % self.end_date_field: False})
|
| models.Q(**{"%s__isnull" % self.end_date_field: False})
|
||||||
)
|
)
|
||||||
queryset = queryset.filter(qfilter)
|
queryset = queryset.filter(qfilter)
|
||||||
|
|
@ -127,5 +127,5 @@ class GenericDateTaggedManager(TaggedFilterItem, TranslationManager):
|
||||||
date_counter = Counter(dates)
|
date_counter = Counter(dates)
|
||||||
dates = set(dates)
|
dates = set(dates)
|
||||||
dates = sorted(dates, reverse=True)
|
dates = sorted(dates, reverse=True)
|
||||||
return [{'date': datetime.date(year=year, month=month, day=1),
|
return [{'date': now().replace(year=year, month=month, day=1),
|
||||||
'count': date_counter[year, month]} for year, month in dates]
|
'count': date_counter[year, month]} for year, month in dates]
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
from cms.models import PlaceholderField, CMSPlugin
|
from cms.models import PlaceholderField, CMSPlugin
|
||||||
from cmsplugin_filer_image.models import ThumbnailOption
|
from cmsplugin_filer_image.models import ThumbnailOption
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.contrib.sites.models import Site
|
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import datetime
|
|
||||||
from django.utils.translation import get_language
|
from django.utils.translation import get_language
|
||||||
|
from django.utils.timezone import now
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.core.urlresolvers import resolve
|
from django.core.urlresolvers import resolve
|
||||||
from django.views.generic import ListView, DetailView
|
from django.views.generic import ListView, DetailView
|
||||||
|
|
@ -76,7 +76,7 @@ class PostArchiveView(BaseBlogView, ListView):
|
||||||
kwargs['month'] = int(self.kwargs.get('month')) if 'month' in self.kwargs else None
|
kwargs['month'] = int(self.kwargs.get('month')) if 'month' in self.kwargs else None
|
||||||
kwargs['year'] = int(self.kwargs.get('year')) if 'year' in self.kwargs else None
|
kwargs['year'] = int(self.kwargs.get('year')) if 'year' in self.kwargs else None
|
||||||
if kwargs['year']:
|
if kwargs['year']:
|
||||||
kwargs['archive_date'] = datetime.date(kwargs['year'], kwargs['month'] or 1, 1)
|
kwargs['archive_date'] = now().replace(kwargs['year'], kwargs['month'] or 1, 1)
|
||||||
return super(PostArchiveView, self).get_context_data(**kwargs)
|
return super(PostArchiveView, self).get_context_data(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
from cms.api import add_plugin
|
from cms.api import add_plugin
|
||||||
from cms.utils.copy_plugins import copy_plugins_to
|
from cms.utils.copy_plugins import copy_plugins_to
|
||||||
from cms.utils.plugins import downcast_plugins
|
from cms.utils.plugins import downcast_plugins
|
||||||
from datetime import date
|
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
|
from django.utils.timezone import now
|
||||||
import parler
|
import parler
|
||||||
from taggit.models import Tag
|
from taggit.models import Tag
|
||||||
|
|
||||||
|
|
@ -80,7 +80,7 @@ class ModelsTest(BaseTest):
|
||||||
# default queryset, published and unpublished posts
|
# default queryset, published and unpublished posts
|
||||||
months = Post.objects.get_months()
|
months = Post.objects.get_months()
|
||||||
for data in months:
|
for data in months:
|
||||||
self.assertEqual(data['date'], date(year=date.today().year, month=date.today().month, day=1))
|
self.assertEqual(data['date'].date(), now().replace(year=now().year, month=now().month, day=1).date())
|
||||||
self.assertEqual(data['count'], 2)
|
self.assertEqual(data['count'], 2)
|
||||||
|
|
||||||
# custom queryset, only published
|
# custom queryset, only published
|
||||||
|
|
@ -88,13 +88,13 @@ class ModelsTest(BaseTest):
|
||||||
post1.save()
|
post1.save()
|
||||||
months = Post.objects.get_months(Post.objects.published())
|
months = Post.objects.get_months(Post.objects.published())
|
||||||
for data in months:
|
for data in months:
|
||||||
self.assertEqual(data['date'], date(year=date.today().year, month=date.today().month, day=1))
|
self.assertEqual(data['date'].date(), now().replace(year=now().year, month=now().month, day=1).date())
|
||||||
self.assertEqual(data['count'], 1)
|
self.assertEqual(data['count'], 1)
|
||||||
|
|
||||||
self.assertEqual(len(Post.objects.available()), 1)
|
self.assertEqual(len(Post.objects.available()), 1)
|
||||||
|
|
||||||
# If post is published but publishing date is in the future
|
# If post is published but publishing date is in the future
|
||||||
post2.date_published = date(year=date.today().year+1, month=date.today().month, day=1)
|
post2.date_published = now().replace(year=now().year+1, month=now().month, day=1)
|
||||||
post2.publish = True
|
post2.publish = True
|
||||||
post2.save()
|
post2.save()
|
||||||
self.assertEqual(len(Post.objects.available()), 2)
|
self.assertEqual(len(Post.objects.available()), 2)
|
||||||
|
|
@ -102,8 +102,8 @@ class ModelsTest(BaseTest):
|
||||||
self.assertEqual(len(Post.objects.archived()), 0)
|
self.assertEqual(len(Post.objects.archived()), 0)
|
||||||
|
|
||||||
# If post is published but end publishing date is in the past
|
# If post is published but end publishing date is in the past
|
||||||
post2.date_published = date(year=date.today().year-2, month=date.today().month, day=1)
|
post2.date_published = now().replace(year=now().year-2, month=now().month, day=1)
|
||||||
post2.date_published_end = date(year=date.today().year-1, month=date.today().month, day=1)
|
post2.date_published_end = now().replace(year=now().year-1, month=now().month, day=1)
|
||||||
post2.save()
|
post2.save()
|
||||||
self.assertEqual(len(Post.objects.available()), 2)
|
self.assertEqual(len(Post.objects.available()), 2)
|
||||||
self.assertEqual(len(Post.objects.published()), 1)
|
self.assertEqual(len(Post.objects.published()), 1)
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from datetime import date
|
|
||||||
import re
|
import re
|
||||||
from cms.api import add_plugin
|
from cms.api import add_plugin
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.template import RequestContext
|
from django.template import RequestContext
|
||||||
|
from django.utils.timezone import now
|
||||||
from taggit.models import Tag
|
from taggit.models import Tag
|
||||||
|
|
||||||
from . import BaseTest
|
from . import BaseTest
|
||||||
|
|
@ -99,9 +99,11 @@ class PluginTest(BaseTest):
|
||||||
request = self.get_page_request(page1, self.user, r'/en/blog/', lang_code='en', edit=True)
|
request = self.get_page_request(page1, self.user, r'/en/blog/', lang_code='en', edit=True)
|
||||||
plugin_class = plugin.get_plugin_class_instance()
|
plugin_class = plugin.get_plugin_class_instance()
|
||||||
context = plugin_class.render(RequestContext(request, {}), plugin, ph)
|
context = plugin_class.render(RequestContext(request, {}), plugin, ph)
|
||||||
self.assertEqual(context['dates'][0], {'date': date(year=date.today().year, month=date.today().month, day=1), 'count': 2})
|
self.assertEqual(context['dates'][0]['date'].date(), now().replace(year=now().year, month=now().month, day=1).date())
|
||||||
|
self.assertEqual(context['dates'][0]['count'], 2)
|
||||||
|
|
||||||
post2.publish = False
|
post2.publish = False
|
||||||
post2.save()
|
post2.save()
|
||||||
context = plugin_class.render(RequestContext(request, {}), plugin, ph)
|
context = plugin_class.render(RequestContext(request, {}), plugin, ph)
|
||||||
self.assertEqual(context['dates'][0], {'date': date(year=date.today().year, month=date.today().month, day=1), 'count': 1})
|
self.assertEqual(context['dates'][0]['date'].date(), now().replace(year=now().year, month=now().month, day=1).date())
|
||||||
|
self.assertEqual(context['dates'][0]['count'], 1)
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from datetime import date
|
|
||||||
from django.contrib.auth.models import AnonymousUser
|
from django.contrib.auth.models import AnonymousUser
|
||||||
from django.http import Http404
|
from django.http import Http404
|
||||||
from django.utils.translation import activate
|
from django.utils.translation import activate
|
||||||
|
from django.utils.timezone import now
|
||||||
from djangocms_blog.feeds import LatestEntriesFeed, TagFeed
|
from djangocms_blog.feeds import LatestEntriesFeed, TagFeed
|
||||||
from djangocms_blog.sitemaps import BlogSitemap
|
from djangocms_blog.sitemaps import BlogSitemap
|
||||||
from djangocms_blog.views import PostListView, PostDetailView, PostArchiveView, \
|
from djangocms_blog.views import (PostListView, PostDetailView,
|
||||||
CategoryEntriesView, AuthorEntriesView, TaggedListView
|
PostArchiveView, CategoryEntriesView,
|
||||||
|
AuthorEntriesView, TaggedListView)
|
||||||
|
|
||||||
from . import BaseTest
|
from . import BaseTest
|
||||||
|
|
||||||
|
|
@ -89,7 +90,7 @@ class ViewTest(BaseTest):
|
||||||
activate('en')
|
activate('en')
|
||||||
view_obj = PostArchiveView()
|
view_obj = PostArchiveView()
|
||||||
view_obj.request = request
|
view_obj.request = request
|
||||||
view_obj.kwargs = {'year': date.today().year, 'month': date.today().month}
|
view_obj.kwargs = {'year': now().year, 'month': now().month}
|
||||||
|
|
||||||
# One post only, anonymous request
|
# One post only, anonymous request
|
||||||
qs = view_obj.get_queryset()
|
qs = view_obj.get_queryset()
|
||||||
|
|
@ -98,7 +99,7 @@ class ViewTest(BaseTest):
|
||||||
|
|
||||||
view_obj.object_list = qs
|
view_obj.object_list = qs
|
||||||
context = view_obj.get_context_data(object_list=view_obj.object_list)
|
context = view_obj.get_context_data(object_list=view_obj.object_list)
|
||||||
self.assertEqual(context['archive_date'], date(year=date.today().year, month=date.today().month, day=1))
|
self.assertEqual(context['archive_date'].date(), now().replace(year=now().year, month=now().month, day=1).date())
|
||||||
|
|
||||||
def test_category_entries_view(self):
|
def test_category_entries_view(self):
|
||||||
page1, page2 = self.get_pages()
|
page1, page2 = self.get_pages()
|
||||||
|
|
@ -212,4 +213,4 @@ class ViewTest(BaseTest):
|
||||||
sitemap = BlogSitemap()
|
sitemap = BlogSitemap()
|
||||||
self.assertEqual(sitemap.items().count(), 2)
|
self.assertEqual(sitemap.items().count(), 2)
|
||||||
for item in sitemap.items():
|
for item in sitemap.items():
|
||||||
self.assertTrue(sitemap.lastmod(item).date(), date.today())
|
self.assertTrue(sitemap.lastmod(item).date(), now().today())
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue