[PATCH v5 07/10] REST: Add Patch Checks to the API

Finucane, Stephen stephen.finucane at intel.com
Fri Jun 3 00:22:40 AEST 2016


On 26 May 20:12, 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>

Turns out there was more than one request :/ Let's see if they all make
sense.

Stephen

>  class UserSerializer(HyperlinkedModelSerializer):
> @@ -74,9 +77,43 @@ class PatchSerializer(HyperlinkedModelSerializer):
>  
>      def to_representation(self, instance):
>          data = super(PatchSerializer, self).to_representation(instance)
> +        data['checks'] = data['url'] + 'checks/'

Thinking this should be 'checks_url', to help distinguish URLs across
the board.

> +class ChecksSerializer(ModelSerializer):
> +    class Meta:
> +        model = Check
> +    user = HyperlinkedRelatedField(
> +        'user-detail', read_only=True, default=CurrentUserDefault())

s/user/user_url/

> +    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)

Here's one I missed earlier: I don't think we should set 'date'
manually. Instead, it should be a read-only field that's automatically
set when we create a new status, using the latest time. I don't know if
the XML-RPC API works like this, but it should.


More information about the Patchwork mailing list