Message ID | 20190822071303.17395-4-ajd@linux.ibm.com |
---|---|
State | Accepted |
Headers | show |
Series | [v2,1/7] models, templates: Add project list archive URL field | expand |
On Thu, 2019-08-22 at 17:13 +1000, Andrew Donnellan wrote: > 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@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') I don't know how I missed this, but this shouldn't have been included in the embedded responses. Those are supposed to be summary views with the bare minimum fields necessary to avoid making unnecessary second requests. This doesn't really qualify :-\ Ditto for the other entries below (maybe project scrapes in, but barely). Probably a bit late to drop this now but I think we should do so in API v2.0. Stephen > 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,
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,
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@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(-)