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
except ImportError:
from .compat import Counter
import datetime
from django.db import models
from django.utils.timezone import now
from parler.managers import TranslationManager
@ -84,7 +84,7 @@ class GenericDateTaggedManager(TaggedFilterItem, TranslationManager):
queryset = self.published_future(queryset)
if self.start_date_field:
return queryset.filter(
**{"%s__lte" % self.start_date_field: datetime.datetime.now()})
**{"%s__lte" % self.start_date_field: now()})
else:
return queryset
@ -93,7 +93,7 @@ class GenericDateTaggedManager(TaggedFilterItem, TranslationManager):
queryset = self.get_queryset().all()
if self.end_date_field:
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})
)
queryset = queryset.filter(qfilter)
@ -104,7 +104,7 @@ class GenericDateTaggedManager(TaggedFilterItem, TranslationManager):
queryset = self.get_queryset().all()
if self.end_date_field:
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})
)
queryset = queryset.filter(qfilter)
@ -127,5 +127,5 @@ class GenericDateTaggedManager(TaggedFilterItem, TranslationManager):
date_counter = Counter(dates)
dates = set(dates)
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]

View file

@ -2,7 +2,6 @@
from cms.models import PlaceholderField, CMSPlugin
from cmsplugin_filer_image.models import ThumbnailOption
from django.contrib.auth.models import User
from django.contrib.sites.models import Site
from django.core.urlresolvers import reverse
from django.db import models
from django.utils import timezone

View file

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
import datetime
from django.utils.translation import get_language
from django.utils.timezone import now
from django.contrib.auth.models import User
from django.core.urlresolvers import resolve
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['year'] = int(self.kwargs.get('year')) if 'year' in self.kwargs else None
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)

View file

@ -2,8 +2,8 @@
from cms.api import add_plugin
from cms.utils.copy_plugins import copy_plugins_to
from cms.utils.plugins import downcast_plugins
from datetime import date
from django.core.urlresolvers import reverse
from django.utils.timezone import now
import parler
from taggit.models import Tag
@ -80,7 +80,7 @@ class ModelsTest(BaseTest):
# default queryset, published and unpublished posts
months = Post.objects.get_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)
# custom queryset, only published
@ -88,13 +88,13 @@ class ModelsTest(BaseTest):
post1.save()
months = Post.objects.get_months(Post.objects.published())
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(len(Post.objects.available()), 1)
# 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.save()
self.assertEqual(len(Post.objects.available()), 2)
@ -102,8 +102,8 @@ class ModelsTest(BaseTest):
self.assertEqual(len(Post.objects.archived()), 0)
# 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_end = date(year=date.today().year-1, month=date.today().month, day=1)
post2.date_published = now().replace(year=now().year-2, month=now().month, day=1)
post2.date_published_end = now().replace(year=now().year-1, month=now().month, day=1)
post2.save()
self.assertEqual(len(Post.objects.available()), 2)
self.assertEqual(len(Post.objects.published()), 1)

View file

@ -1,9 +1,9 @@
# -*- coding: utf-8 -*-
from datetime import date
import re
from cms.api import add_plugin
from django.core.urlresolvers import reverse
from django.template import RequestContext
from django.utils.timezone import now
from taggit.models import Tag
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)
plugin_class = plugin.get_plugin_class_instance()
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.save()
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 -*-
from datetime import date
from django.contrib.auth.models import AnonymousUser
from django.http import Http404
from django.utils.translation import activate
from django.utils.timezone import now
from djangocms_blog.feeds import LatestEntriesFeed, TagFeed
from djangocms_blog.sitemaps import BlogSitemap
from djangocms_blog.views import PostListView, PostDetailView, PostArchiveView, \
CategoryEntriesView, AuthorEntriesView, TaggedListView
from djangocms_blog.views import (PostListView, PostDetailView,
PostArchiveView, CategoryEntriesView,
AuthorEntriesView, TaggedListView)
from . import BaseTest
@ -89,7 +90,7 @@ class ViewTest(BaseTest):
activate('en')
view_obj = PostArchiveView()
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
qs = view_obj.get_queryset()
@ -98,7 +99,7 @@ class ViewTest(BaseTest):
view_obj.object_list = qs
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):
page1, page2 = self.get_pages()
@ -212,4 +213,4 @@ class ViewTest(BaseTest):
sitemap = BlogSitemap()
self.assertEqual(sitemap.items().count(), 2)
for item in sitemap.items():
self.assertTrue(sitemap.lastmod(item).date(), date.today())
self.assertTrue(sitemap.lastmod(item).date(), now().today())