[PATCHv2 10/10] REST: Allow projects to be retrieved by linkname

Finucane, Stephen stephen.finucane at intel.com
Thu May 19 16:33:38 AEST 2016


On 18 May 22:25, Andy Doan wrote:
> On 05/17/2016 08:33 AM, Finucane, Stephen wrote:
> >On 10 May 17:39, Andy Doan wrote:
> >>Building a user-friendly CLI becomes difficult when project-ids are
> >>required. It also makes it almost impossible to work with the current
> >>format of the .pwclientrc file.
> >>
> >>Signed-off-by: Andy Doan <andy.doan at linaro.org>
> >
> >Some comments below but nothing blocking.
> >
> >Reviewed-by: Stephen Finucane <stephen.finucane at intel.com>
> 
> >>diff --git a/patchwork/views/rest_api.py b/patchwork/views/rest_api.py
> >>index e5a642a..e125bc1 100644
> >>--- a/patchwork/views/rest_api.py
> >>+++ b/patchwork/views/rest_api.py
> >>@@ -113,6 +113,22 @@ class ProjectViewSet(PatchworkViewSet):
> >>      permission_classes = (PatchworkPermission,)
> >>      serializer_class = ProjectSerializer
> >>
> >>+    def retrieve(self, request, pk=None):
> >>+        try:
> >>+            int(pk)
> >>+        except ValueError:
> >>+            self.kwargs = {'linkname': pk}  # try and lookup by linkname
> >>+            self.lookup_field = 'linkname'
> >>+        return super(ProjectViewSet, self).retrieve(request, pk)
> >>+
> >>+    def partial_update(self, request, pk=None):
> >>+        try:
> >>+            int(pk)
> >
> >I really hope users don't do this, but are integer-only linknames
> >possible? :) Maybe we should just rule this out...
> 
> The difficulty I'm hitting is choosing the precedence. Suppose we have:
> 
>  {'id': 1, linkname: 'project-1'}
>  {'id': 2, linkname: '1'}
> 
> and get a request "/api/1.0/project/1/". Which do we prefer? v3 will
> give precedence to the project ID and return:
> 
>   {'id': 1, linkname: 'project-1'}
> 
> but its a tad confusing.

I'm fine with this as it's very much a corner case. A comment in the
relevant code might be beneficial for anyone who does encounter this
issue and goes looking for answers.

Stephen


More information about the Patchwork mailing list