Skip to content

Commit 532ffbe

Browse files
committed
Feature - Get related user stories info with project details
1 parent 5d7d323 commit 532ffbe

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

Diff for: taiga/projects/api.py

+4
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
import uuid
99
import functools
10+
11+
from django.db.models import Prefetch
1012
from easy_thumbnails.source_generators import pil_image
1113
from dateutil.relativedelta import relativedelta
1214

@@ -101,6 +103,8 @@ def _get_order_by_field_name(self):
101103
def get_queryset(self):
102104
qs = super().get_queryset()
103105
qs = qs.select_related("owner")
106+
user_stories_qs = UserStory.objects.all().select_related("status", "assigned_to")
107+
qs = qs.prefetch_related(Prefetch("user_stories", queryset=user_stories_qs))
104108
if self.request.QUERY_PARAMS.get('discover_mode', False):
105109
qs = project_utils.attach_members(qs)
106110
qs = project_utils.attach_notify_policies(qs)

Diff for: taiga/projects/serializers.py

+7
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
from . import services
2222
from .notifications.choices import NotifyLevel
23+
from .userstories.serializers import UserStoryLightSerializer, UserStoryListSerializer
2324

2425

2526
######################################################
@@ -441,6 +442,9 @@ class ProjectDetailSerializer(ProjectSerializer):
441442
transfer_token = Field()
442443
milestones = MethodField()
443444

445+
# User stories related to the project
446+
user_stories = MethodField()
447+
444448
def get_milestones(self, obj):
445449
assert hasattr(obj, "milestones_attr"), "instance must have a milestones_attr attribute"
446450
if obj.milestones_attr is None:
@@ -509,6 +513,9 @@ def get_is_private_extra_info(self, obj):
509513
def get_max_memberships(self, obj):
510514
return services.get_max_memberships_for_project(obj)
511515

516+
def get_user_stories(self, obj):
517+
return UserStoryLightSerializer(obj.user_stories.all(), many=True).data
518+
512519

513520
class ProjectLightSerializer(serializers.LightSerializer):
514521
id = Field()

0 commit comments

Comments
 (0)