Rewrite Feed get_queryset
This commit is contained in:
+10
-14
@@ -9,7 +9,7 @@ from django.http import HttpResponse, JsonResponse
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.views.decorators.http import require_http_methods
|
||||
from django_filters import rest_framework as filters
|
||||
from django.db.models import Prefetch
|
||||
from django.db.models import Prefetch, Q
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from rest_framework import routers
|
||||
from rest_framework.response import Response
|
||||
@@ -61,23 +61,19 @@ class FeedViewSet(ModelViewSet):
|
||||
search_fields = ("id", "tags", "isPublished")
|
||||
|
||||
def get_queryset(self):
|
||||
# If admin page...
|
||||
if self.request.user.is_authenticated:
|
||||
# Return all objects expect those that are (soft) deleted
|
||||
# Soft deleted objects can be edited (and completely deleted) via Django admin (for superadmins)
|
||||
return Feed.objects.filter(deleted=False).order_by("-publishAt")
|
||||
else:
|
||||
objs = Feed.objects.filter(deleted=False, isPublished=True).order_by(
|
||||
"-publishAt"
|
||||
)
|
||||
|
||||
# TODO: Bad filtering. Rewrite!
|
||||
result_ids = []
|
||||
for obj in objs:
|
||||
if obj.autoUnpublish:
|
||||
if obj.unpublishAt > timezone.now():
|
||||
result_ids.append(obj.id)
|
||||
else:
|
||||
result_ids.append(obj.id)
|
||||
# Hide deleted and unpublished objects...
|
||||
query = Q(deleted=False, isPublished=True)
|
||||
# and hide objects that are automatically unpublished
|
||||
hideQuery = Q(autoUnpublish=False) | Q(unpublishAt__gt=timezone.now())
|
||||
query.add(hideQuery, Q.AND)
|
||||
|
||||
return Feed.objects.filter(id__in=result_ids).order_by("-publishAt")
|
||||
return Feed.objects.filter(query).order_by("-publishAt")
|
||||
|
||||
def destroy(self, request, pk=None, *args, **kwargs):
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user