Include attachments in issue view when necessary

remotes/origin/3.4.0rc
Daniel García 2018-07-17 15:41:01 +02:00 committed by Alex Hermida
parent bda6e7b927
commit 552421bc49
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):
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):

View File

@ -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")

View File

@ -17,6 +17,7 @@
# 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/>.
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)