From 660d2405174519628c72ed84a69ae37531df12f3 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Sun, 5 May 2013 16:48:00 +0100 Subject: [PATCH] .action attribute on viewsets --- rest_framework/viewsets.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/rest_framework/viewsets.py b/rest_framework/viewsets.py index a54467d7e..0eb3e86dc 100644 --- a/rest_framework/viewsets.py +++ b/rest_framework/viewsets.py @@ -59,6 +59,10 @@ class ViewSetMixin(object): def view(request, *args, **kwargs): self = cls(**initkwargs) + # We also store the mapping of request methods to actions, + # so that we can later set the action attribute. + # eg. `self.action = 'list'` on an incoming GET request. + self.action_map = actions # Bind methods to actions # This is the bit that's different to a standard view @@ -87,6 +91,15 @@ class ViewSetMixin(object): view.suffix = initkwargs.get('suffix', None) return view + def initialize_request(self, request, *args, **kargs): + """ + Set the `.action` attribute on the view, + depending on the request method. + """ + request = super(ViewSetMixin, self).initialize_request(request, *args, **kargs) + self.action = self.action_map.get(request.method.lower()) + return request + class ViewSet(ViewSetMixin, views.APIView): """