diff options
| author | Tom Christie | 2014-08-19 10:11:10 +0100 | 
|---|---|---|
| committer | Tom Christie | 2014-08-19 10:11:10 +0100 | 
| commit | e385a7b8eb6e538698f28128e43fe8bfaefd4e97 (patch) | |
| tree | 3f1cac50c40ec77a0bc5537f1a04628901a4d2ce /rest_framework/request.py | |
| parent | 2aad8e4b35c3552a065347d7eccad8bd51938783 (diff) | |
| parent | 48b66ec2a2b744f170034adbdaaa1588e6c14e11 (diff) | |
| download | django-rest-framework-e385a7b8eb6e538698f28128e43fe8bfaefd4e97.tar.bz2 | |
Merge master
Diffstat (limited to 'rest_framework/request.py')
| -rw-r--r-- | rest_framework/request.py | 11 | 
1 files changed, 9 insertions, 2 deletions
| diff --git a/rest_framework/request.py b/rest_framework/request.py index 40467c03..d508f9b4 100644 --- a/rest_framework/request.py +++ b/rest_framework/request.py @@ -42,13 +42,20 @@ class override_method(object):          self.view = view          self.request = request          self.method = method +        self.action = getattr(view, 'action', None)      def __enter__(self):          self.view.request = clone_request(self.request, self.method) +        if self.action is not None: +            # For viewsets we also set the `.action` attribute. +            action_map = getattr(self.view, 'action_map', {}) +            self.view.action = action_map.get(self.method.lower())          return self.view.request      def __exit__(self, *args, **kwarg):          self.view.request = self.request +        if self.action is not None: +            self.view.action = self.action  class Empty(object): @@ -280,8 +287,8 @@ class Request(object):              self._method = self._request.method              # Allow X-HTTP-METHOD-OVERRIDE header -            self._method = self.META.get('HTTP_X_HTTP_METHOD_OVERRIDE', -                                         self._method) +            if 'HTTP_X_HTTP_METHOD_OVERRIDE' in self.META: +                self._method = self.META['HTTP_X_HTTP_METHOD_OVERRIDE'].upper()      def _load_stream(self):          """ | 
