diff --git a/taiga/projects/issues/api.py b/taiga/projects/issues/api.py index fb94912d..d23bf673 100644 --- a/taiga/projects/issues/api.py +++ b/taiga/projects/issues/api.py @@ -146,7 +146,11 @@ class IssueViewSet(OCCResourceMixin, VotedResourceMixin, HistoryResourceMixin, W def get_queryset(self): qs = super().get_queryset() qs = qs.select_related("owner", "assigned_to", "status", "project") - qs = attach_extra_info(qs, user=self.request.user) + + include_attachments = "include_attachments" in self.request.QUERY_PARAMS + qs = attach_extra_info(qs, user=self.request.user, + include_attachments=include_attachments) + return qs def pre_save(self, obj): diff --git a/taiga/projects/issues/serializers.py b/taiga/projects/issues/serializers.py index f27fb973..6255449b 100644 --- a/taiga/projects/issues/serializers.py +++ b/taiga/projects/issues/serializers.py @@ -21,6 +21,7 @@ from taiga.base.fields import Field, MethodField from taiga.base.neighbors import NeighborsSerializerMixin from taiga.mdrender.service import render as mdrender +from taiga.projects.attachments.serializers import BasicAttachmentsInfoSerializerMixin from taiga.projects.due_dates.serializers import DueDateSerializerMixin from taiga.projects.mixins.serializers import OwnerExtraInfoSerializerMixin from taiga.projects.mixins.serializers import ProjectExtraInfoSerializerMixin @@ -34,8 +35,8 @@ from taiga.projects.votes.mixins.serializers import VoteResourceSerializerMixin class IssueListSerializer(VoteResourceSerializerMixin, WatchedResourceSerializer, OwnerExtraInfoSerializerMixin, AssignedToExtraInfoSerializerMixin, StatusExtraInfoSerializerMixin, ProjectExtraInfoSerializerMixin, - DueDateSerializerMixin, TaggedInProjectResourceSerializer, - serializers.LightSerializer): + BasicAttachmentsInfoSerializerMixin, DueDateSerializerMixin, + TaggedInProjectResourceSerializer, serializers.LightSerializer): id = Field() ref = Field() severity = Field(attr="severity_id") diff --git a/taiga/projects/issues/utils.py b/taiga/projects/issues/utils.py index c2227ff6..0d0bf593 100644 --- a/taiga/projects/issues/utils.py +++ b/taiga/projects/issues/utils.py @@ -17,6 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from taiga.projects.attachments.utils import attach_basic_attachments from taiga.projects.notifications.utils import attach_watchers_to_queryset from taiga.projects.notifications.utils import attach_total_watchers_to_queryset from taiga.projects.notifications.utils import attach_is_watcher_to_queryset @@ -47,7 +48,11 @@ def attach_generated_user_stories(queryset, as_field="generated_user_stories_att return queryset -def attach_extra_info(queryset, user=None): +def attach_extra_info(queryset, user=None, include_attachments=False): + if include_attachments: + queryset = attach_basic_attachments(queryset) + queryset = queryset.extra(select={"include_attachments": "True"}) + queryset = attach_generated_user_stories(queryset) queryset = attach_total_voters_to_queryset(queryset) queryset = attach_watchers_to_queryset(queryset)