def published(self, select_related=None): """ Returns all published items.""" qs = self._get_expanded_queryset(select_related=select_related) filter_kwargs = {'status': PUBLISHED_STATE} postdate_kwarg = self.get_postdate_publish_filter_kwarg() if postdate_kwarg: now = get_current_datetime() filter_kwargs[postdate_kwarg] = now return qs.filter(**filter_kwargs)
def unpublished(self, select_related=None): """ Returns all unpublished objects.""" qs = self._get_expanded_queryset(select_related=select_related) postdate_kw = self.get_postdate_unpublish_filter_kwarg() if postdate_kw: now = get_current_datetime() return qs.filter( ~models.Q(status=PUBLISHED_STATE) | models.Q(**{postdate_kw: now}) ) return qs.exclude(status=PUBLISHED_STATE)
def is_published(self): """ Boolean property indicating if item is published.""" has_published_status = self.status == PUBLISHED_STATE if not has_published_status: return False if ENABLE_POSTDATED_PUBLISHING: date_field = self._meta.get_latest_by if date_field: date_val = getattr(self, date_field) if isinstance(date_val, datetime): now = get_current_datetime() return date_val <= now if isinstance(date_val, date): return date_val <= date.today() return True