[PATCH v4 2/7] api: Add fields to series detail view
Aaron Conole
aconole at redhat.com
Sat Feb 8 01:58:37 AEDT 2025
Adam Hassick <ahassick at iol.unh.edu> writes:
> * Add the "dependencies" and "dependents" fields to the series detail
> view.
> * Add "parse_dependencies" to the project detail view.
>
> Signed-off-by: Adam Hassick <ahassick at iol.unh.edu>
> ---
Acked-by: Aaron Conole <aconole at redhat.com>
> patchwork/api/project.py | 2 ++
> patchwork/api/series.py | 26 ++++++++++++++++++++++++--
> 2 files changed, 26 insertions(+), 2 deletions(-)
>
> diff --git a/patchwork/api/project.py b/patchwork/api/project.py
> index 2f0b478..9193633 100644
> --- a/patchwork/api/project.py
> +++ b/patchwork/api/project.py
> @@ -39,6 +39,7 @@ class ProjectSerializer(BaseHyperlinkedModelSerializer):
> 'list_archive_url',
> 'list_archive_url_format',
> 'commit_url_format',
> + 'parse_dependencies',
> )
> read_only_fields = (
> 'name',
> @@ -55,6 +56,7 @@ class ProjectSerializer(BaseHyperlinkedModelSerializer):
> 'list_archive_url_format',
> 'commit_url_format',
> ),
> + '1.4': ('parse_dependencies',),
> }
> extra_kwargs = {
> 'url': {'view_name': 'api-project-detail'},
> diff --git a/patchwork/api/series.py b/patchwork/api/series.py
> index b88ed1f..2b23e48 100644
> --- a/patchwork/api/series.py
> +++ b/patchwork/api/series.py
> @@ -5,7 +5,10 @@
>
> from rest_framework.generics import ListAPIView
> from rest_framework.generics import RetrieveAPIView
> -from rest_framework.serializers import SerializerMethodField
> +from rest_framework.serializers import (
> + SerializerMethodField,
> + HyperlinkedRelatedField,
> +)
>
> from patchwork.api.base import BaseHyperlinkedModelSerializer
> from patchwork.api.base import PatchworkPermission
> @@ -24,6 +27,12 @@ class SeriesSerializer(BaseHyperlinkedModelSerializer):
> mbox = SerializerMethodField()
> cover_letter = CoverSerializer(read_only=True)
> patches = PatchSerializer(read_only=True, many=True)
> + dependencies = HyperlinkedRelatedField(
> + read_only=True, view_name='api-series-detail', many=True
> + )
> + dependents = HyperlinkedRelatedField(
> + read_only=True, view_name='api-series-detail', many=True
> + )
>
> def get_web_url(self, instance):
> request = self.context.get('request')
> @@ -50,6 +59,8 @@ class SeriesSerializer(BaseHyperlinkedModelSerializer):
> 'mbox',
> 'cover_letter',
> 'patches',
> + 'dependencies',
> + 'dependents',
> )
> read_only_fields = (
> 'date',
> @@ -60,9 +71,15 @@ class SeriesSerializer(BaseHyperlinkedModelSerializer):
> 'mbox',
> 'cover_letter',
> 'patches',
> + 'dependencies',
> + 'dependents',
> )
> versioned_fields = {
> '1.1': ('web_url',),
> + '1.4': (
> + 'dependencies',
> + 'dependents',
> + ),
> }
> extra_kwargs = {
> 'url': {'view_name': 'api-series-detail'},
> @@ -76,7 +93,12 @@ class SeriesMixin(object):
> def get_queryset(self):
> return (
> Series.objects.all()
> - .prefetch_related('patches__project', 'cover_letter__project')
> + .prefetch_related(
> + 'patches__project',
> + 'cover_letter__project',
> + 'dependencies',
> + 'dependents',
> + )
> .select_related('submitter', 'project')
> )
More information about the Patchwork
mailing list