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

Andy Doan andy.doan at linaro.org
Thu May 19 13:25:21 AEST 2016


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.


More information about the Patchwork mailing list