Rewrite Event and JobAd get_queryset

This commit is contained in:
Aarni Halinen
2022-07-28 00:28:39 +03:00
parent 7ffce4e929
commit 9b450f94a5
+23 -35
View File
@@ -95,13 +95,8 @@ class EventViewSet(ModelViewSet):
search_fields = ("id", "tags", "isPublished", "signupForm")
def get_queryset(self):
# TODO: For create and update, this return old data in signupForm field (prefetched)...
if (
self.request.user.is_authenticated
or self.request.method == "POST"
or self.request.method == "PUT"
):
# TODO: For create and update, this returns old data in signupForm field (prefetched at the start of request)...
if self.request.user.is_authenticated:
return Event.objects.filter(deleted=False).prefetch_related(
Prefetch(
"signupForm",
@@ -110,32 +105,23 @@ class EventViewSet(ModelViewSet):
)
)
# 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)
since = self.request.query_params.get("since", None)
if since:
return (
Event.objects.filter(
deleted=False, isPublished=True, end_time__gt=since
)
.order_by("start_time")
.prefetch_related(
Prefetch(
"signupForm",
queryset=SignupForm.objects.filter(deleted=False, visible=True),
to_attr="filtered_signup_forms",
)
)
)
return (
Event.objects.filter(
deleted=False, isPublished=True, end_time__gt=timezone.now()
)
.order_by("start_time")
.prefetch_related(
Prefetch(
"signupForm",
queryset=SignupForm.objects.filter(deleted=False, visible=True),
to_attr="filtered_signup_forms",
)
query.add(Q(end_time__gt=since), Q.AND)
else:
query.add(Q(end_time__gt=timezone.now()), Q.AND)
return Event.objects.filter(query).prefetch_related(
Prefetch(
"signupForm",
queryset=SignupForm.objects.filter(deleted=False, visible=True),
to_attr="filtered_signup_forms",
)
)
@@ -170,10 +156,12 @@ class JobAdViewSet(ModelViewSet):
def get_queryset(self):
if self.request.user.is_authenticated:
return JobAd.objects.filter(deleted=False)
return JobAd.objects.filter(
deleted=False, isPublished=True, unpublishAt__gt=timezone.now()
)
return JobAd.objects.filter(deleted=False).order_by("-publishAt")
query = Q(deleted=False, isPublished=True)
hideQuery = Q(autoUnpublish=False) | Q(unpublishAt__gt=timezone.now())
query.add(hideQuery, Q.AND)
return JobAd.objects.filter(query).order_by("-publishAt")
def destroy(self, request, pk=None, *args, **kwargs):
try: