diff options
| author | Tom Christie | 2014-09-02 17:41:23 +0100 | 
|---|---|---|
| committer | Tom Christie | 2014-09-02 17:41:23 +0100 | 
| commit | f2852811f93863f2eed04d51eeb7ef27716b2409 (patch) | |
| tree | 45799932849f81d45d77edc53cb00269465ba0f1 /rest_framework/mixins.py | |
| parent | ec096a1caceff6a4f5c75a152dd1c7bea9ed281d (diff) | |
| download | django-rest-framework-f2852811f93863f2eed04d51eeb7ef27716b2409.tar.bz2 | |
Getting tests passing
Diffstat (limited to 'rest_framework/mixins.py')
| -rw-r--r-- | rest_framework/mixins.py | 41 | 
1 files changed, 4 insertions, 37 deletions
| diff --git a/rest_framework/mixins.py b/rest_framework/mixins.py index 3e9c9bb3..359740ce 100644 --- a/rest_framework/mixins.py +++ b/rest_framework/mixins.py @@ -13,23 +13,6 @@ from rest_framework.request import clone_request  from rest_framework.settings import api_settings -def _get_validation_exclusions(obj, lookup_field=None): -    """ -    Given a model instance, and an optional pk and slug field, -    return the full list of all other field names on that model. - -    For use when performing full_clean on a model instance, -    so we only clean the required fields. -    """ -    if lookup_field == 'pk': -        pk_field = obj._meta.pk -        while pk_field.rel: -            pk_field = pk_field.rel.to._meta.pk -        lookup_field = pk_field.name - -    return [field.name for field in obj._meta.fields if field.name != lookup_field] - -  class CreateModelMixin(object):      """      Create a model instance. @@ -92,15 +75,14 @@ class UpdateModelMixin(object):          if not serializer.is_valid():              return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) -        lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field -        lookup_value = self.kwargs[lookup_url_kwarg] -        extras = {self.lookup_field: lookup_value} -          if self.object is None: +            lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field +            lookup_value = self.kwargs[lookup_url_kwarg] +            extras = {self.lookup_field: lookup_value}              self.object = serializer.save(extras=extras)              return Response(serializer.data, status=status.HTTP_201_CREATED) -        self.object = serializer.save(extras=extras) +        self.object = serializer.save()          return Response(serializer.data, status=status.HTTP_200_OK)      def partial_update(self, request, *args, **kwargs): @@ -122,21 +104,6 @@ class UpdateModelMixin(object):                  # return a 404 response.                  raise -    def pre_save(self, obj): -        """ -        Set any attributes on the object that are implicit in the request. -        """ -        lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field -        lookup_value = self.kwargs[lookup_url_kwarg] - -        setattr(obj, self.lookup_field, lookup_value) - -        # Ensure we clean the attributes so that we don't eg return integer -        # pk using a string representation, as provided by the url conf kwarg. -        if hasattr(obj, 'full_clean'): -            exclude = _get_validation_exclusions(obj, self.lookup_field) -            obj.full_clean(exclude) -  class DestroyModelMixin(object):      """ | 
