def published(self, for_user=None):
        from mezzanine.core.models import CONTENT_STATUS_PUBLISHED
        if for_user is not None and for_user.is_staff:
            return self.all()
        return self.filter(
            Q(publish_date__lte=now()) | Q(publish_date__isnull=True),
            Q(expiry_date__gte=now()) | Q(expiry_date__isnull=True),
            Q(status=CONTENT_STATUS_PUBLISHED))
For non-staff users, return items with a published status and
dataset/ETHPy150Open stephenmcd/mezzanine/mezzanine/core/managers.py/PublishedManager.published