From e0b32366a29e851d693da406d5766a118831160f Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 8 Apr 2013 14:00:02 +0200 Subject: [PATCH] Now can filter issue attachments by issue id --- greenmine/scrum/api.py | 13 +++++++++++-- greenmine/scrum/serializers.py | 4 +++- greenmine/scrum/urls.py | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/greenmine/scrum/api.py b/greenmine/scrum/api.py index 849c8378..aad764ac 100644 --- a/greenmine/scrum/api.py +++ b/greenmine/scrum/api.py @@ -100,20 +100,29 @@ class UserStoryDetail(generics.RetrieveUpdateDestroyAPIView): permission_classes = (IsAuthenticated, UserStoryDetailPermission,) +class IssuesAttachmentFilter(django_filters.FilterSet): + issue = django_filters.NumberFilter(name="object_id", lookup_type='exact') + + class Meta: + model = Attachment + fields = ['project', 'issue'] + + class IssuesAttachmentList(generics.ListCreateAPIView): model = Attachment serializer_class = AttachmentSerializer permission_classes = (IsAuthenticated,) + filter_class = IssuesAttachmentFilter def get_queryset(self): - return super(IssueAttachmentList, self).get_queryset()\ + return super(IssuesAttachmentList, self).get_queryset()\ .filter(project__members=self.request.user) def pre_save(self, obj): obj.owner = self.request.user -class AttachmentDetail(generics.RetrieveUpdateDestroyAPIView): +class IssuesAttachmentDetail(generics.RetrieveUpdateDestroyAPIView): model = Attachment serializer_class = AttachmentSerializer permission_classes = (IsAuthenticated, AttachmentDetailPermission,) diff --git a/greenmine/scrum/serializers.py b/greenmine/scrum/serializers.py index 2f381bc7..8d2bbc31 100644 --- a/greenmine/scrum/serializers.py +++ b/greenmine/scrum/serializers.py @@ -49,9 +49,11 @@ class MilestoneSerializer(serializers.ModelSerializer): class AttachmentSerializer(serializers.ModelSerializer): + issue = serializers.Field(source='object_id') + class Meta: model = Attachment - fields = ('id', 'project', 'owner', 'attached_file', 'created_date',) + fields = ('id', 'project', 'owner', 'attached_file', 'created_date', 'issue') class TaskSerializer(serializers.ModelSerializer): diff --git a/greenmine/scrum/urls.py b/greenmine/scrum/urls.py index bd907f75..a2840cbf 100644 --- a/greenmine/scrum/urls.py +++ b/greenmine/scrum/urls.py @@ -19,7 +19,7 @@ urlpatterns = format_suffix_patterns(patterns('', url(r'^issues/$', api.IssueList.as_view(), name='issues-list'), url(r'^issues/(?P[0-9]+)/$', api.IssueDetail.as_view(), name='issues-detail'), url(r'^issues/attachments/$', api.IssuesAttachmentList.as_view(), name='issues-attachment-list'), - url(r'^issues/attachments/(?P[0-9]+)/$', api.AttachmentDetail.as_view(), name='issues-attachment-detail'), + url(r'^issues/attachments/(?P[0-9]+)/$', api.IssuesAttachmentDetail.as_view(), name='issues-attachment-detail'), url(r'^issues/statuses/$', api.IssueStatusList.as_view(), name='issues-status-list'), url(r'^issues/statuses/(?P[0-9]+)/$', api.IssueStatusDetail.as_view(), name='issues-status-detail'), url(r'^issues/types/$', api.IssueTypeList.as_view(), name='issues-type-list'),