[PATCH] REST: Show 'comments' in '/patches', '/comments'

Veronika Kabatova vkabatov at redhat.com
Sat Apr 28 01:58:56 AEST 2018


----- Original Message -----
> From: "Stephen Finucane" <stephen at that.guru>
> To: patchwork at lists.ozlabs.org
> Cc: "Stephen Finucane" <stephen at that.guru>, "Veronika Kabatova" <vkabatov at redhat.com>
> Sent: Friday, April 27, 2018 5:35:06 PM
> Subject: [PATCH] REST: Show 'comments' in '/patches', '/comments'
> 
> This link is only shown for individual resources at the moment. Modify
> this behavior.
> 
> Signed-off-by: Stephen Finucane <stephen at that.guru>
> Cc: Veronika Kabatova <vkabatov at redhat.com>

Acked-by: Veronika Kabatova <vkabatov at redhat.com>


Thanks,
Veronika

> ---
>  patchwork/api/cover.py | 20 +++++++++-----------
>  patchwork/api/patch.py | 37 +++++++++++++++++++------------------
>  2 files changed, 28 insertions(+), 29 deletions(-)
> 
> diff --git a/patchwork/api/cover.py b/patchwork/api/cover.py
> index 01c9fbb6..7c80064c 100644
> --- a/patchwork/api/cover.py
> +++ b/patchwork/api/cover.py
> @@ -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):
> diff --git a/patchwork/api/patch.py b/patchwork/api/patch.py
> index 8aca8915..d1931c01 100644
> --- a/patchwork/api/patch.py
> +++ b/patchwork/api/patch.py
> @@ -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):
> --
> 2.14.3
> 
> 


More information about the Patchwork mailing list