fix news ordering
This commit is contained in:
parent
5ef58b8202
commit
1a6828b53e
|
|
@ -144,6 +144,16 @@ class NewsQuerySet(TranslationQuerysetMixin):
|
||||||
def by_locale(self, locale):
|
def by_locale(self, locale):
|
||||||
return self.filter(title__icontains=locale)
|
return self.filter(title__icontains=locale)
|
||||||
|
|
||||||
|
def annotate_is_null_publication(self):
|
||||||
|
return self.annotate(
|
||||||
|
is_null_publication=Case(
|
||||||
|
When(publication_date__isnull=True, then=True),
|
||||||
|
When(publication_time__isnull=True, then=True),
|
||||||
|
default=False,
|
||||||
|
output_field=models.BooleanField(default=False),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class News(GalleryMixin, BaseAttributes, TranslatedFieldsMixin, HasTagsMixin,
|
class News(GalleryMixin, BaseAttributes, TranslatedFieldsMixin, HasTagsMixin,
|
||||||
FavoritesMixin):
|
FavoritesMixin):
|
||||||
|
|
|
||||||
|
|
@ -126,15 +126,15 @@ class NewsBackOfficeLCView(NewsBackOfficeMixinView,
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
"""Override get_queryset method."""
|
"""Override get_queryset method."""
|
||||||
qs = super().get_queryset().with_extended_related()
|
qs = super().get_queryset().with_extended_related().annotate_is_null_publication()
|
||||||
if 'ordering' in self.request.query_params:
|
if 'ordering' in self.request.query_params:
|
||||||
self.request.GET._mutable = True
|
self.request.GET._mutable = True
|
||||||
if '-publication_datetime' in self.request.query_params['ordering']:
|
if '-publication_datetime' in self.request.query_params['ordering']:
|
||||||
self.request.query_params['ordering'] = self.request.query_params['ordering']\
|
self.request.query_params['ordering'] = self.request.query_params['ordering']\
|
||||||
.replace('-publication_datetime', '-publication_date,-publication_time')
|
.replace('-publication_datetime', 'is_null_publication,-publication_date,-publication_time')
|
||||||
elif 'publication_datetime' in self.request.query_params['ordering']:
|
elif 'publication_datetime' in self.request.query_params['ordering']:
|
||||||
self.request.query_params['ordering'] = self.request.query_params['ordering']\
|
self.request.query_params['ordering'] = self.request.query_params['ordering']\
|
||||||
.replace('publication_datetime', 'publication_date,publication_time')
|
.replace('publication_datetime', 'is_null_publication,publication_date,publication_time')
|
||||||
self.request.GET._mutable = False
|
self.request.GET._mutable = False
|
||||||
if self.request.country_code:
|
if self.request.country_code:
|
||||||
qs = qs.by_country_code(self.request.country_code)
|
qs = qs.by_country_code(self.request.country_code)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user