]> git.ipfire.org Git - thirdparty/patchwork.git/commitdiff
REST: Show 'comments' in '/patches', '/comments'
authorStephen Finucane <stephen@that.guru>
Fri, 27 Apr 2018 15:33:21 +0000 (16:33 +0100)
committerStephen Finucane <stephen@that.guru>
Fri, 27 Apr 2018 16:32:16 +0000 (17:32 +0100)
This link is only shown for individual resources at the moment. Modify
this behavior.

Signed-off-by: Stephen Finucane <stephen@that.guru>
Acked-by: Veronika Kabatova <vkabatov@redhat.com>
patchwork/api/cover.py
patchwork/api/patch.py
patchwork/tests/api/test_cover.py
patchwork/tests/api/test_patch.py

index 01c9fbb660dde98da3d879330e631467ad7b7a73..7c80064c8df0aa142fc90229dbde10f093cddd35 100644 (file)
@@ -38,18 +38,23 @@ class CoverLetterListSerializer(BaseHyperlinkedModelSerializer):
     submitter = PersonSerializer(read_only=True)
     mbox = SerializerMethodField()
     series = SeriesSerializer(many=True, read_only=True)
+    comments = SerializerMethodField()
 
     def get_mbox(self, instance):
         request = self.context.get('request')
         return request.build_absolute_uri(instance.get_mbox_url())
 
+    def get_comments(self, cover):
+        return self.context.get('request').build_absolute_uri(
+            reverse('api-comment-list', kwargs={'pk': cover.id}))
+
     class Meta:
         model = CoverLetter
         fields = ('id', 'url', 'project', 'msgid', 'date', 'name', 'submitter',
-                  'mbox', 'series')
+                  'mbox', 'series', 'comments')
         read_only_fields = fields
         versioned_fields = {
-            '1.1': ('mbox', ),
+            '1.1': ('mbox', 'comments'),
         }
         extra_kwargs = {
             'url': {'view_name': 'api-cover-detail'},
@@ -59,11 +64,6 @@ class CoverLetterListSerializer(BaseHyperlinkedModelSerializer):
 class CoverLetterDetailSerializer(CoverLetterListSerializer):
 
     headers = SerializerMethodField()
-    comments = SerializerMethodField()
-
-    def get_comments(self, cover):
-        return self.context.get('request').build_absolute_uri(
-            reverse('api-comment-list', kwargs={'pk': cover.id}))
 
     def get_headers(self, instance):
         headers = {}
@@ -82,12 +82,10 @@ class CoverLetterDetailSerializer(CoverLetterListSerializer):
     class Meta:
         model = CoverLetter
         fields = CoverLetterListSerializer.Meta.fields + (
-            'headers', 'content', 'comments')
+            'headers', 'content')
         read_only_fields = fields
         extra_kwargs = CoverLetterListSerializer.Meta.extra_kwargs
-        versioned_fields = {
-            '1.1': ('mbox', 'comments'),
-        }
+        versioned_fields = CoverLetterListSerializer.Meta.versioned_fields
 
 
 class CoverLetterList(ListAPIView):
index 8aca89153d507a5de21ff5750612263e35263236..d1931c013545d3372b9131df012a6a1bcd308e97 100644 (file)
@@ -83,6 +83,7 @@ class PatchListSerializer(BaseHyperlinkedModelSerializer):
     delegate = UserSerializer()
     mbox = SerializerMethodField()
     series = SeriesSerializer(many=True, read_only=True)
+    comments = SerializerMethodField()
     check = SerializerMethodField()
     checks = SerializerMethodField()
     tags = SerializerMethodField()
@@ -91,10 +92,9 @@ class PatchListSerializer(BaseHyperlinkedModelSerializer):
         request = self.context.get('request')
         return request.build_absolute_uri(instance.get_mbox_url())
 
-    def get_tags(self, instance):
-        # TODO(stephenfin): Make tags performant, possibly by reworking the
-        # model
-        return {}
+    def get_comments(self, patch):
+        return self.context.get('request').build_absolute_uri(
+            reverse('api-comment-list', kwargs={'pk': patch.id}))
 
     def get_check(self, instance):
         return instance.combined_check_state
@@ -103,15 +103,23 @@ class PatchListSerializer(BaseHyperlinkedModelSerializer):
         return self.context.get('request').build_absolute_uri(
             reverse('api-check-list', kwargs={'patch_id': instance.id}))
 
+    def get_tags(self, instance):
+        # TODO(stephenfin): Make tags performant, possibly by reworking the
+        # model
+        return {}
+
     class Meta:
         model = Patch
         fields = ('id', 'url', 'project', 'msgid', 'date', 'name',
                   'commit_ref', 'pull_url', 'state', 'archived', 'hash',
-                  'submitter', 'delegate', 'mbox', 'series', 'check', 'checks',
-                  'tags')
+                  'submitter', 'delegate', 'mbox', 'series', 'comments',
+                  'check', 'checks', 'tags')
         read_only_fields = ('project', 'msgid', 'date', 'name', 'hash',
-                            'submitter', 'mbox', 'mbox', 'series', 'check',
-                            'checks', 'tags')
+                            'submitter', 'mbox', 'mbox', 'series', 'comments',
+                            'check', 'checks', 'tags')
+        versioned_fields = {
+            '1.1': ('comments', ),
+        }
         extra_kwargs = {
             'url': {'view_name': 'api-patch-detail'},
         }
@@ -121,11 +129,6 @@ class PatchDetailSerializer(PatchListSerializer):
 
     headers = SerializerMethodField()
     prefixes = SerializerMethodField()
-    comments = SerializerMethodField()
-
-    def get_comments(self, patch):
-        return self.context.get('request').build_absolute_uri(
-            reverse('api-comment-list', kwargs={'pk': patch.id}))
 
     def get_headers(self, patch):
         headers = {}
@@ -147,13 +150,11 @@ class PatchDetailSerializer(PatchListSerializer):
     class Meta:
         model = Patch
         fields = PatchListSerializer.Meta.fields + (
-            'headers', 'content', 'diff', 'prefixes', 'comments')
+            'headers', 'content', 'diff', 'prefixes')
         read_only_fields = PatchListSerializer.Meta.read_only_fields + (
-            'headers', 'content', 'diff', 'prefixes', 'comments')
+            'headers', 'content', 'diff', 'prefixes')
+        versioned_fields = PatchListSerializer.Meta.versioned_fields
         extra_kwargs = PatchListSerializer.Meta.extra_kwargs
-        versioned_fields = {
-            '1.1': ('comments', ),
-        }
 
 
 class PatchList(ListAPIView):
index b4a4dba7ebb631b9c3166e4e16d43862676638f4..15e02372a7b99a80ca3c2089034e4aba312d9a3e 100644 (file)
@@ -57,6 +57,7 @@ class TestCoverLetterAPI(APITestCase):
         self.assertEqual(cover_obj.id, cover_json['id'])
         self.assertEqual(cover_obj.name, cover_json['name'])
         self.assertIn(cover_obj.get_mbox_url(), cover_json['mbox'])
+        self.assertIn('comments', cover_json)
 
         # nested fields
 
@@ -126,10 +127,6 @@ class TestCoverLetterAPI(APITestCase):
         for key, value in parsed_headers.items():
             self.assertIn(value, resp.data['headers'][key])
 
-        # test comments
-        resp = self.client.get(self.api_url(cover_obj.id))
-        self.assertIn('comments', resp.data)
-
         # test old version of API
         resp = self.client.get(self.api_url(cover_obj.id, version='1.0'))
         self.assertNotIn('comments', resp.data)
index 58886efaa0a377b93e0dca3caff5a40bb4d6b99d..479f637c2df858aa535d2b5de24037d5f60f9810 100644 (file)
@@ -62,6 +62,7 @@ class TestPatchAPI(APITestCase):
         self.assertEqual(patch_obj.msgid, patch_json['msgid'])
         self.assertEqual(patch_obj.state.slug, patch_json['state'])
         self.assertIn(patch_obj.get_mbox_url(), patch_json['mbox'])
+        self.assertIn('comments', patch_json)
 
         # nested fields
 
@@ -144,10 +145,6 @@ class TestPatchAPI(APITestCase):
         self.assertEqual(patch.diff, resp.data['diff'])
         self.assertEqual(0, len(resp.data['tags']))
 
-        # test comments
-        resp = self.client.get(self.api_url(patch.id))
-        self.assertIn('comments', resp.data)
-
         # test old version of API
         resp = self.client.get(self.api_url(item=patch.id, version='1.0'))
         self.assertNotIn('comments', resp.data)