]> git.ipfire.org Git - thirdparty/patchwork.git/commitdiff
REST: Embed 'mbox' parameter in /series
authorStephen Finucane <stephen@that.guru>
Mon, 15 May 2017 23:13:31 +0000 (00:13 +0100)
committerStephen Finucane <stephen@that.guru>
Thu, 18 May 2017 20:18:37 +0000 (21:18 +0100)
This wasn't added in '6deedfb7' but it should have been.

Signed-off-by: Stephen Finucane <stephen@that.guru>
Fixes: 6deedfb7 ("views: Expose Series mbox")
patchwork/api/series.py
patchwork/models.py
patchwork/tests/test_rest_api.py

index 3d5847bef572eac6643f9b28dd6300ffa0a37133..01f1cbb1cf79b835f92e6c980466bf955f120186 100644 (file)
@@ -20,6 +20,7 @@
 from rest_framework.generics import ListAPIView
 from rest_framework.generics import RetrieveAPIView
 from rest_framework.serializers import HyperlinkedModelSerializer
+from rest_framework.serializers import SerializerMethodField
 
 from patchwork.api.base import PatchworkPermission
 from patchwork.api.filters import SeriesFilter
@@ -28,13 +29,19 @@ from patchwork.models import Series
 
 class SeriesSerializer(HyperlinkedModelSerializer):
 
+    mbox = SerializerMethodField()
+
+    def get_mbox(self, instance):
+        request = self.context.get('request')
+        return request.build_absolute_uri(instance.get_mbox_url())
+
     class Meta:
         model = Series
         fields = ('id', 'url', 'project', 'name', 'date', 'submitter',
                   'version', 'total', 'received_total', 'received_all',
-                  'cover_letter', 'patches')
+                  'mbox', 'cover_letter', 'patches')
         read_only_fields = ('date', 'submitter', 'total', 'received_total',
-                            'received_all', 'cover_letter', 'patches')
+                            'received_all', 'mbox', 'cover_letter', 'patches')
         extra_kwargs = {
             'url': {'view_name': 'api-series-detail'},
             'project': {'view_name': 'api-project-detail'},
index bb8398b40122c76e7befa7543783e60bfb99b30b..974002d5ba34ee2c37a8d331fd0c57eff817472d 100644 (file)
@@ -668,6 +668,10 @@ class Series(models.Model):
                                           patch=patch,
                                           number=number)
 
+    @models.permalink
+    def get_mbox_url(self):
+        return ('series-mbox', (), {'series_id': self.id})
+
     def __str__(self):
         return self.name if self.name else 'Untitled series #%d' % self.id
 
index 3c11bcaefdc0ad9f2a91dd350f9053902f6c4778..6aed4db9d775d7663556031133ec7eade82aa28f 100644 (file)
@@ -511,6 +511,7 @@ class TestSeriesAPI(APITestCase):
     def assertSerialized(self, series_obj, series_json):
         self.assertEqual(series_obj.id, series_json['id'])
         self.assertEqual(series_obj.name, series_json['name'])
+        self.assertIn(series_obj.get_mbox_url(), series_json['mbox'])
         self.assertIn(TestProjectAPI.api_url(series_obj.project.id),
                       series_json['project'])
         self.assertIn(TestPersonAPI.api_url(series_obj.submitter.id),