MCPcopy Index your code
hub / github.com/encode/django-rest-framework / override_method

Class override_method

rest_framework/request.py:34–60  ·  view source on GitHub ↗

A context manager that temporarily overrides the method on a request, additionally setting the `view.request` attribute. Usage: with override_method(view, request, 'POST') as request: ... # Do stuff with `view` and `request`

Source from the content-addressed store, hash-verified

32
33
34class override_method:
35 """
36 A context manager that temporarily overrides the method on a request,
37 additionally setting the `view.request` attribute.
38
39 Usage:
40
41 with override_method(view, request, 'POST') as request:
42 ... # Do stuff with `view` and `request`
43 """
44
45 def __init__(self, view, request, method):
46 self.view = view
47 self.request = request
48 self.method = method
49 self.action = getattr(view, 'action', None)
50
51 def __enter__(self):
52 self.view.request = clone_request(self.request, self.method)
53 # For viewsets we also set the `.action` attribute.
54 action_map = getattr(self.view, 'action_map', {})
55 self.view.action = action_map.get(self.method.lower())
56 return self.view.request
57
58 def __exit__(self, *args, **kwarg):
59 self.view.request = self.request
60 self.view.action = self.action
61
62
63class WrappedAttributeError(Exception):

Callers 3

get_raw_data_formMethod · 0.90
renderMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected