[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