mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
dev: update recent pages endpoint and return blocks on page listing (#517)
* dev: update recent pages endpoint and return blocks on page listing * fix: yesterday's pages
This commit is contained in:
parent
82b9275609
commit
28b3c999ae
@ -28,6 +28,7 @@ class PageSerializer(BaseSerializer):
|
||||
write_only=True,
|
||||
required=False,
|
||||
)
|
||||
blocks = PageBlockSerializer(read_only=True, many=True)
|
||||
|
||||
class Meta:
|
||||
model = Page
|
||||
|
@ -1,9 +1,10 @@
|
||||
# Python imports
|
||||
from datetime import timedelta
|
||||
from datetime import timedelta, datetime
|
||||
from django.utils import timezone
|
||||
|
||||
# Django imports
|
||||
from django.db import IntegrityError
|
||||
from django.db.models import Exists, OuterRef, Q
|
||||
from django.db.models import Exists, OuterRef, Q, Prefetch
|
||||
from django.utils import timezone
|
||||
|
||||
# Third party imports
|
||||
@ -59,6 +60,11 @@ class PageViewSet(BaseViewSet):
|
||||
.annotate(is_favorite=Exists(subquery))
|
||||
.order_by(self.request.GET.get("order_by", "-created_at"))
|
||||
.prefetch_related("labels")
|
||||
.prefetch_related(
|
||||
Prefetch(
|
||||
"blocks", queryset=PageBlock.objects.select_related("page", "issue")
|
||||
)
|
||||
)
|
||||
.distinct()
|
||||
)
|
||||
|
||||
@ -234,10 +240,13 @@ class RecentPagesEndpoint(BaseAPIView):
|
||||
project_id=project_id,
|
||||
workspace__slug=slug,
|
||||
)
|
||||
pages = (
|
||||
current_time = timezone.now()
|
||||
day_before = current_time - timedelta(days=1)
|
||||
|
||||
yesterday_pages = (
|
||||
(
|
||||
Page.objects.filter(
|
||||
updated_at__gte=(timezone.now() - timedelta(days=7)),
|
||||
updated_at__date=day_before.date(),
|
||||
workspace__slug=slug,
|
||||
project_id=project_id,
|
||||
)
|
||||
@ -251,8 +260,37 @@ class RecentPagesEndpoint(BaseAPIView):
|
||||
.prefetch_related("labels")
|
||||
)
|
||||
|
||||
serializer = PageSerializer(pages, many=True)
|
||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||
earlier_this_week = (
|
||||
(
|
||||
Page.objects.filter(
|
||||
updated_at__range=(
|
||||
(timezone.now() - timedelta(days=1)),
|
||||
(timezone.now() - timedelta(days=7)),
|
||||
),
|
||||
workspace__slug=slug,
|
||||
project_id=project_id,
|
||||
)
|
||||
.filter(project__project_projectmember__member=request.user)
|
||||
.annotate(is_favorite=Exists(subquery))
|
||||
.order_by("-updated_by")
|
||||
)
|
||||
.select_related("project")
|
||||
.select_related("workspace")
|
||||
.select_related("owned_by")
|
||||
.prefetch_related("labels")
|
||||
)
|
||||
|
||||
yesterday_pages_serializer = PageSerializer(yesterday_pages, many=True)
|
||||
earlier_this_week_serializer = PageBlockSerializer(
|
||||
earlier_this_week, many=True
|
||||
)
|
||||
return Response(
|
||||
{
|
||||
"yesterday": yesterday_pages_serializer.data,
|
||||
"earlier_this_week": earlier_this_week_serializer.data,
|
||||
},
|
||||
status=status.HTTP_200_OK,
|
||||
)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
return Response(
|
||||
|
Loading…
Reference in New Issue
Block a user