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
|
queryset = self
|
||||||
if self.end_date_field:
|
if self.end_date_field:
|
||||||
qfilter = (
|
qfilter = (
|
||||||
models.Q(**{'%s__lte' % self.end_date_field: now()}) |
|
models.Q(**{'%s__lte' % self.end_date_field: now()})
|
||||||
models.Q(**{'%s__isnull' % self.end_date_field: False})
|
|
||||||
)
|
)
|
||||||
queryset = queryset.filter(qfilter)
|
queryset = queryset.filter(qfilter)
|
||||||
return queryset.filter(**{self.publish_field: True})
|
return queryset.filter(**{self.publish_field: True})
|
||||||
|
@ -143,29 +142,30 @@ class GenericDateTaggedManager(TaggedFilterItem, AppHookConfigTranslatableManage
|
||||||
def get_queryset(self, *args, **kwargs):
|
def get_queryset(self, *args, **kwargs):
|
||||||
return super(GenericDateTaggedManager, self).get_queryset(*args, **kwargs)
|
return super(GenericDateTaggedManager, self).get_queryset(*args, **kwargs)
|
||||||
|
|
||||||
def published(self):
|
def published(self, current_site=True):
|
||||||
return self.get_queryset().published()
|
return self.get_queryset().published(current_site)
|
||||||
|
|
||||||
def available(self):
|
def available(self, current_site=True):
|
||||||
return self.get_queryset().available()
|
return self.get_queryset().available(current_site)
|
||||||
|
|
||||||
def archived(self):
|
def archived(self, current_site=True):
|
||||||
return self.get_queryset().archived()
|
return self.get_queryset().archived(current_site)
|
||||||
|
|
||||||
def published_future(self):
|
def published_future(self, current_site=True):
|
||||||
return self.get_queryset().published_future()
|
return self.get_queryset().published_future(current_site)
|
||||||
|
|
||||||
def filter_by_language(self, language):
|
def filter_by_language(self, language, current_site=True):
|
||||||
return self.get_queryset().filter_by_language(language)
|
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).
|
Get months with aggregate count (how much posts is in the month).
|
||||||
Results are ordered by date.
|
Results are ordered by date.
|
||||||
"""
|
"""
|
||||||
if queryset is None:
|
if queryset is None:
|
||||||
queryset = self.get_queryset()
|
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_qs = queryset.values_list(queryset.start_date_field, queryset.fallback_date_field)
|
||||||
dates = []
|
dates = []
|
||||||
for blog_dates in dates_qs:
|
for blog_dates in dates_qs:
|
||||||
|
|
|
@ -655,6 +655,24 @@ class ModelsTest(BaseTest):
|
||||||
)
|
)
|
||||||
self.assertEqual(data['count'], 1)
|
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)
|
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
|
||||||
|
@ -665,6 +683,7 @@ class ModelsTest(BaseTest):
|
||||||
self.assertEqual(len(Post.objects.published()), 1)
|
self.assertEqual(len(Post.objects.published()), 1)
|
||||||
self.assertEqual(len(Post.objects.published_future()), 2)
|
self.assertEqual(len(Post.objects.published_future()), 2)
|
||||||
self.assertEqual(len(Post.objects.archived()), 0)
|
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
|
# 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)
|
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.available()), 2)
|
||||||
self.assertEqual(len(Post.objects.published()), 1)
|
self.assertEqual(len(Post.objects.published()), 1)
|
||||||
self.assertEqual(len(Post.objects.archived()), 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
|
# counting with language fallback enabled
|
||||||
self._get_post(self._post_data[0]['it'], post1, 'it')
|
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
|
# No fallback
|
||||||
parler.appsettings.PARLER_LANGUAGES['default']['hide_untranslated'] = True
|
parler.appsettings.PARLER_LANGUAGES['default']['hide_untranslated'] = True
|
||||||
|
|
Loading…
Add table
Reference in a new issue