[PATCH v4 07/10] REST: Add Patch Checks to the API
Andy Doan
andy.doan at linaro.org
Fri May 27 11:12:31 AEST 2016
On 05/25/2016 07:49 AM, Finucane, Stephen wrote:
> On 20 May 14:17, Andy Doan wrote:
>> This exports patch checks via the REST API.
>>
>> The drf-nested-routers package is used to handle the fact Checks are
>> nested under a Patch.
>>
>> Security Constraints:
>> * Anyone (logged in or not) can read all objects.
>> * No one can update/delete objects.
>> * Project maintainers and patch owners may create objects.
>>
>> Signed-off-by: Andy Doan <andy.doan at linaro.org>
>
> One request, then we're done.
>
>> ---
>> patchwork/rest_serializers.py | 35 ++++++++++++++-
>> patchwork/tests/test_rest_api.py | 92 +++++++++++++++++++++++++++++++++++++++-
>> patchwork/urls.py | 6 +--
>> patchwork/views/rest_api.py | 40 ++++++++++++++++-
>> requirements-test.txt | 1 +
>> 5 files changed, 166 insertions(+), 8 deletions(-)
>>
>> diff --git a/patchwork/rest_serializers.py b/patchwork/rest_serializers.py
>> +class ChecksSerializer(ModelSerializer):
>> + class Meta:
>> + model = Check
>> + user = PrimaryKeyRelatedField(read_only=True, default=CurrentUserDefault())
>> + patch = HiddenField(default=CurrentPatchDefault())
>> +
>> + def run_validation(self, data):
>> + for val, label in Check.STATE_CHOICES:
>> + if label == data['state']:
>> + data['state'] = val
>> + break
>> + return super(ChecksSerializer, self).run_validation(data)
>> +
>> + def to_representation(self, instance):
>> + data = super(ChecksSerializer, self).to_representation(instance)
>> + data['state'] = instance.get_state_display()
>> + data['user'] = instance.user.username
>
> nit: s/user/username/. Also, should we add a 'user_url' link, as
> suggested for 'people' endpoint?
I actually just made it "user" but show the URL to the user endpoint.
This should be consistent with how things are elsewhere in this patch-set.
>> diff --git a/requirements-test.txt b/requirements-test.txt
>> index b5f976c..cfc242f 100644
>> --- a/requirements-test.txt
>> +++ b/requirements-test.txt
>> @@ -3,3 +3,4 @@ django-debug-toolbar==1.4
>> python-dateutil>2.0,<3.0
>> selenium>2.0,<3.0
>> djangorestframework>=3.3,<3.4
>> +drf-nested-routers>=0.11.1,<0.12
>
> s/0.11.1/0.11/?
I thought about that, but 0.11.1 is current and tested against. I'm not
sure we should advertise an older untested version?
More information about the Patchwork
mailing list