More manager tests
This commit is contained in:
parent
7cdfc0e7c7
commit
096e1d48f7
2 changed files with 56 additions and 15 deletions
|
@ -116,8 +116,7 @@ class GenericDateQuerySet(AppHookConfigTranslatableQueryset):
|
|||
queryset = self
|
||||
if self.end_date_field:
|
||||
qfilter = (
|
||||
models.Q(**{'%s__lte' % self.end_date_field: now()}) |
|
||||
models.Q(**{'%s__isnull' % self.end_date_field: False})
|
||||
models.Q(**{'%s__lte' % self.end_date_field: now()})
|
||||
)
|
||||
queryset = queryset.filter(qfilter)
|
||||
return queryset.filter(**{self.publish_field: True})
|
||||
|
@ -143,29 +142,30 @@ class GenericDateTaggedManager(TaggedFilterItem, AppHookConfigTranslatableManage
|
|||
def get_queryset(self, *args, **kwargs):
|
||||
return super(GenericDateTaggedManager, self).get_queryset(*args, **kwargs)
|
||||
|
||||
def published(self):
|
||||
return self.get_queryset().published()
|
||||
def published(self, current_site=True):
|
||||
return self.get_queryset().published(current_site)
|
||||
|
||||
def available(self):
|
||||
return self.get_queryset().available()
|
||||
def available(self, current_site=True):
|
||||
return self.get_queryset().available(current_site)
|
||||
|
||||
def archived(self):
|
||||
return self.get_queryset().archived()
|
||||
def archived(self, current_site=True):
|
||||
return self.get_queryset().archived(current_site)
|
||||
|
||||
def published_future(self):
|
||||
return self.get_queryset().published_future()
|
||||
def published_future(self, current_site=True):
|
||||
return self.get_queryset().published_future(current_site)
|
||||
|
||||
def filter_by_language(self, language):
|
||||
return self.get_queryset().filter_by_language(language)
|
||||
def filter_by_language(self, language, current_site=True):
|
||||
return self.get_queryset().filter_by_language(language, current_site)
|
||||
|
||||
def get_months(self, queryset=None):
|
||||
def get_months(self, queryset=None, current_site=True):
|
||||
"""
|
||||
Get months with aggregate count (how much posts is in the month).
|
||||
Results are ordered by date.
|
||||
"""
|
||||
if queryset is None:
|
||||
queryset = self.get_queryset()
|
||||
queryset = queryset.on_site()
|
||||
if current_site:
|
||||
queryset = queryset.on_site()
|
||||
dates_qs = queryset.values_list(queryset.start_date_field, queryset.fallback_date_field)
|
||||
dates = []
|
||||
for blog_dates in dates_qs:
|
||||
|
|
|
@ -655,6 +655,24 @@ class ModelsTest(BaseTest):
|
|||
)
|
||||
self.assertEqual(data['count'], 1)
|
||||
|
||||
# Move post to different site to filter it out
|
||||
post2.sites.add(self.site_2)
|
||||
months = Post.objects.get_months()
|
||||
for data in months:
|
||||
self.assertEqual(
|
||||
data['date'].date(),
|
||||
now().replace(year=now().year, month=now().month, day=1).date()
|
||||
)
|
||||
self.assertEqual(data['count'], 1)
|
||||
months = Post.objects.get_months(current_site=False)
|
||||
for data in months:
|
||||
self.assertEqual(
|
||||
data['date'].date(),
|
||||
now().replace(year=now().year, month=now().month, day=1).date()
|
||||
)
|
||||
self.assertEqual(data['count'], 2)
|
||||
post2.sites.clear()
|
||||
|
||||
self.assertEqual(len(Post.objects.available()), 1)
|
||||
|
||||
# If post is published but publishing date is in the future
|
||||
|
@ -665,6 +683,7 @@ class ModelsTest(BaseTest):
|
|||
self.assertEqual(len(Post.objects.published()), 1)
|
||||
self.assertEqual(len(Post.objects.published_future()), 2)
|
||||
self.assertEqual(len(Post.objects.archived()), 0)
|
||||
self.assertEqual(len(Post.objects.archived(current_site=False)), 0)
|
||||
|
||||
# If post is published but end publishing date is in the past
|
||||
post2.date_published = now().replace(year=now().year - 2, month=now().month, day=1)
|
||||
|
@ -673,10 +692,32 @@ class ModelsTest(BaseTest):
|
|||
self.assertEqual(len(Post.objects.available()), 2)
|
||||
self.assertEqual(len(Post.objects.published()), 1)
|
||||
self.assertEqual(len(Post.objects.archived()), 1)
|
||||
self.assertEqual(len(Post.objects.archived(current_site=False)), 1)
|
||||
|
||||
# Move post to different site to filter it out
|
||||
post2.sites.add(self.site_2)
|
||||
self.assertEqual(len(Post.objects.archived()), 0)
|
||||
self.assertEqual(len(Post.objects.archived(current_site=False)), 1)
|
||||
self.assertEqual(len(Post.objects.available()), 1)
|
||||
self.assertEqual(len(Post.objects.available(current_site=False)), 2)
|
||||
self.assertEqual(len(Post.objects.published()), 1)
|
||||
|
||||
# publish post
|
||||
post2.date_published = now() - timedelta(days=1)
|
||||
post2.date_published_end = now() + timedelta(days=10)
|
||||
post2.save()
|
||||
self.assertEqual(len(Post.objects.archived()), 0)
|
||||
self.assertEqual(len(Post.objects.archived(current_site=False)), 0)
|
||||
self.assertEqual(len(Post.objects.available()), 1)
|
||||
self.assertEqual(len(Post.objects.available(current_site=False)), 2)
|
||||
self.assertEqual(len(Post.objects.published()), 1)
|
||||
self.assertEqual(len(Post.objects.published(current_site=False)), 2)
|
||||
|
||||
# counting with language fallback enabled
|
||||
self._get_post(self._post_data[0]['it'], post1, 'it')
|
||||
self.assertEqual(len(Post.objects.filter_by_language('it')), 2)
|
||||
self.assertEqual(len(Post.objects.filter_by_language('it')), 1)
|
||||
self.assertEqual(len(Post.objects.filter_by_language('it', current_site=False)), 2)
|
||||
post2.sites.clear()
|
||||
|
||||
# No fallback
|
||||
parler.appsettings.PARLER_LANGUAGES['default']['hide_untranslated'] = True
|
||||
|
|
Loading…
Add table
Reference in a new issue