Fix timezone support

This commit is contained in:
Iacopo Spalletti 2014-08-13 23:59:08 +02:00
commit 72f001f277
7 changed files with 26 additions and 24 deletions

View file

@ -1 +1 @@
__version__ = '0.2b5' __version__ = '0.2c1'

View file

@ -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]

View file

@ -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

View file

@ -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)

View file

@ -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)

View file

@ -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)

View file

@ -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())