[PATCH v2 4/7] api: Add list archive fields

Andrew Donnellan ajd at linux.ibm.com
Thu Aug 22 17:13:00 AEST 2019


Add the new list archive fields to the API. As this is a
backwards-compatible change, this requires only a minor version increment
to v1.2.

Signed-off-by: Andrew Donnellan <ajd at linux.ibm.com>
---
v1->v2:
- switch to using format string (Daniel)
---
 patchwork/api/comment.py  |  5 +++--
 patchwork/api/cover.py    |  6 ++++--
 patchwork/api/embedded.py | 14 +++++++++++---
 patchwork/api/patch.py    | 15 ++++++++-------
 patchwork/api/project.py  |  7 +++++--
 patchwork/urls.py         |  4 ++--
 6 files changed, 33 insertions(+), 18 deletions(-)

diff --git a/patchwork/api/comment.py b/patchwork/api/comment.py
index 57b37111c30b..290b9cd3f3ce 100644
--- a/patchwork/api/comment.py
+++ b/patchwork/api/comment.py
@@ -47,11 +47,12 @@ class CommentListSerializer(BaseHyperlinkedModelSerializer):
 
     class Meta:
         model = Comment
-        fields = ('id', 'web_url', 'msgid', 'date', 'subject', 'submitter',
-                  'content', 'headers')
+        fields = ('id', 'web_url', 'msgid', 'list_archive_url', 'date',
+                  'subject', 'submitter', 'content', 'headers')
         read_only_fields = fields
         versioned_fields = {
             '1.1': ('web_url', ),
+            '1.2': ('list_archive_url',),
         }
 
 
diff --git a/patchwork/api/cover.py b/patchwork/api/cover.py
index 7a663226ade8..caf9a386efa5 100644
--- a/patchwork/api/cover.py
+++ b/patchwork/api/cover.py
@@ -50,11 +50,13 @@ class CoverLetterListSerializer(BaseHyperlinkedModelSerializer):
 
     class Meta:
         model = CoverLetter
-        fields = ('id', 'url', 'web_url', 'project', 'msgid', 'date', 'name',
-                  'submitter', 'mbox', 'series', 'comments')
+        fields = ('id', 'url', 'web_url', 'project', 'msgid',
+                  'list_archive_url', 'date', 'name', 'submitter', 'mbox',
+                  'series', 'comments')
         read_only_fields = fields
         versioned_fields = {
             '1.1': ('web_url', 'mbox', 'comments'),
+            '1.2': ('list_archive_url',),
         }
         extra_kwargs = {
             'url': {'view_name': 'api-cover-detail'},
diff --git a/patchwork/api/embedded.py b/patchwork/api/embedded.py
index 60fb9a4e9701..968cb7f91f10 100644
--- a/patchwork/api/embedded.py
+++ b/patchwork/api/embedded.py
@@ -108,10 +108,12 @@ class CoverLetterSerializer(SerializedRelatedField):
 
         class Meta:
             model = models.CoverLetter
-            fields = ('id', 'url', 'web_url', 'msgid', 'date', 'name', 'mbox')
+            fields = ('id', 'url', 'web_url', 'msgid', 'list_archive_url',
+                      'date', 'name', 'mbox')
             read_only_fields = fields
             versioned_fields = {
                 '1.1': ('web_url', 'mbox', ),
+                '1.2': ('list_archive_url',),
             }
             extra_kwargs = {
                 'url': {'view_name': 'api-cover-detail'},
@@ -124,10 +126,12 @@ class PatchSerializer(SerializedRelatedField):
 
         class Meta:
             model = models.Patch
-            fields = ('id', 'url', 'web_url', 'msgid', 'date', 'name', 'mbox')
+            fields = ('id', 'url', 'web_url', 'msgid', 'list_archive_url',
+                      'date', 'name', 'mbox')
             read_only_fields = fields
             versioned_fields = {
                 '1.1': ('web_url', ),
+                '1.2': ('list_archive_url',),
             }
             extra_kwargs = {
                 'url': {'view_name': 'api-patch-detail'},
@@ -158,11 +162,15 @@ class ProjectSerializer(SerializedRelatedField):
         class Meta:
             model = models.Project
             fields = ('id', 'url', 'name', 'link_name', 'list_id',
-                      'list_email', 'web_url', 'scm_url', 'webscm_url')
+                      'list_email', 'web_url', 'scm_url', 'webscm_url',
+                      'list_archive_url', 'list_archive_url_format')
             read_only_fields = fields
             extra_kwargs = {
                 'url': {'view_name': 'api-project-detail'},
             }
+            versioned_fields = {
+                '1.2': ('list_archive_url', 'list_archive_url_format'),
+            }
 
 
 class SeriesSerializer(SerializedRelatedField):
diff --git a/patchwork/api/patch.py b/patchwork/api/patch.py
index 05f6cea84c45..c9360308a56a 100644
--- a/patchwork/api/patch.py
+++ b/patchwork/api/patch.py
@@ -121,15 +121,16 @@ class PatchListSerializer(BaseHyperlinkedModelSerializer):
 
     class Meta:
         model = Patch
-        fields = ('id', 'url', 'web_url', 'project', 'msgid', 'date', 'name',
-                  'commit_ref', 'pull_url', 'state', 'archived', 'hash',
-                  'submitter', 'delegate', 'mbox', 'series', 'comments',
-                  'check', 'checks', 'tags')
-        read_only_fields = ('web_url', 'project', 'msgid', 'date', 'name',
-                            'hash', 'submitter', 'mbox', 'series', 'comments',
-                            'check', 'checks', 'tags')
+        fields = ('id', 'url', 'web_url', 'project', 'msgid',
+                  'list_archive_url', 'date', 'name', 'commit_ref', 'pull_url',
+                  'state', 'archived', 'hash', 'submitter', 'delegate', 'mbox',
+                  'series', 'comments', 'check', 'checks', 'tags')
+        read_only_fields = ('web_url', 'project', 'msgid', 'list_archive_url',
+                            'date', 'name', 'hash', 'submitter', 'mbox',
+                            'series', 'comments', 'check', 'checks', 'tags')
         versioned_fields = {
             '1.1': ('comments', 'web_url'),
+            '1.2': ('list_archive_url',),
         }
         extra_kwargs = {
             'url': {'view_name': 'api-patch-detail'},
diff --git a/patchwork/api/project.py b/patchwork/api/project.py
index d7bb1f21cd09..62a8c3e73efe 100644
--- a/patchwork/api/project.py
+++ b/patchwork/api/project.py
@@ -26,11 +26,13 @@ class ProjectSerializer(BaseHyperlinkedModelSerializer):
         model = Project
         fields = ('id', 'url', 'name', 'link_name', 'list_id', 'list_email',
                   'web_url', 'scm_url', 'webscm_url', 'maintainers',
-                  'subject_match')
+                  'subject_match', 'list_archive_url',
+                  'list_archive_url_format')
         read_only_fields = ('name', 'link_name', 'list_id', 'list_email',
                             'maintainers', 'subject_match')
         versioned_fields = {
             '1.1': ('subject_match', ),
+            '1.2': ('list_archive_url', 'list_archive_url_format'),
         }
         extra_kwargs = {
             'url': {'view_name': 'api-project-detail'},
@@ -68,7 +70,8 @@ class ProjectList(ProjectMixin, ListAPIView):
     """List projects."""
 
     search_fields = ('link_name', 'list_id', 'list_email', 'web_url',
-                     'scm_url', 'webscm_url')
+                     'scm_url', 'webscm_url', 'list_archive_url',
+                     'list_archive_url_format')
     ordering_fields = ('id', 'name', 'link_name', 'list_id')
     ordering = 'id'
 
diff --git a/patchwork/urls.py b/patchwork/urls.py
index cfcf04dc3b71..c24bf55ee83f 100644
--- a/patchwork/urls.py
+++ b/patchwork/urls.py
@@ -234,8 +234,8 @@ if settings.ENABLE_REST_API:
     ]
 
     urlpatterns += [
-        url(r'^api/(?:(?P<version>(1.0|1.1))/)?', include(api_patterns)),
-        url(r'^api/(?:(?P<version>1.1)/)?', include(api_1_1_patterns)),
+        url(r'^api/(?:(?P<version>(1.0|1.1|1.2))/)?', include(api_patterns)),
+        url(r'^api/(?:(?P<version>(1.1|1.2))/)?', include(api_1_1_patterns)),
 
         # token change
         url(r'^user/generate-token/$', user_views.generate_token,
-- 
2.20.1



More information about the Patchwork mailing list