Include attachments in issue view when necessary

remotes/origin/endpoint-for-estimation-system-new
Daniel García 2018-07-17 15:41:01 +02:00 committed by Alex Hermida
parent 16a729a078
commit 4dd525972b
3 changed files with 14 additions and 4 deletions

View File

@ -146,7 +146,11 @@ class IssueViewSet(OCCResourceMixin, VotedResourceMixin, HistoryResourceMixin, W
def get_queryset(self): def get_queryset(self):
qs = super().get_queryset() qs = super().get_queryset()
qs = qs.select_related("owner", "assigned_to", "status", "project") 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 return qs
def pre_save(self, obj): def pre_save(self, obj):

View File

@ -21,6 +21,7 @@ from taiga.base.fields import Field, MethodField
from taiga.base.neighbors import NeighborsSerializerMixin from taiga.base.neighbors import NeighborsSerializerMixin
from taiga.mdrender.service import render as mdrender 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.due_dates.serializers import DueDateSerializerMixin
from taiga.projects.mixins.serializers import OwnerExtraInfoSerializerMixin from taiga.projects.mixins.serializers import OwnerExtraInfoSerializerMixin
from taiga.projects.mixins.serializers import ProjectExtraInfoSerializerMixin from taiga.projects.mixins.serializers import ProjectExtraInfoSerializerMixin
@ -34,8 +35,8 @@ from taiga.projects.votes.mixins.serializers import VoteResourceSerializerMixin
class IssueListSerializer(VoteResourceSerializerMixin, WatchedResourceSerializer, class IssueListSerializer(VoteResourceSerializerMixin, WatchedResourceSerializer,
OwnerExtraInfoSerializerMixin, AssignedToExtraInfoSerializerMixin, OwnerExtraInfoSerializerMixin, AssignedToExtraInfoSerializerMixin,
StatusExtraInfoSerializerMixin, ProjectExtraInfoSerializerMixin, StatusExtraInfoSerializerMixin, ProjectExtraInfoSerializerMixin,
DueDateSerializerMixin, TaggedInProjectResourceSerializer, BasicAttachmentsInfoSerializerMixin, DueDateSerializerMixin,
serializers.LightSerializer): TaggedInProjectResourceSerializer, serializers.LightSerializer):
id = Field() id = Field()
ref = Field() ref = Field()
severity = Field(attr="severity_id") severity = Field(attr="severity_id")

View File

@ -17,6 +17,7 @@
# You should have received a copy of the GNU Affero General Public License # You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
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_watchers_to_queryset
from taiga.projects.notifications.utils import attach_total_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 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 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_generated_user_stories(queryset)
queryset = attach_total_voters_to_queryset(queryset) queryset = attach_total_voters_to_queryset(queryset)
queryset = attach_watchers_to_queryset(queryset) queryset = attach_watchers_to_queryset(queryset)