Reimplement request attribute access

This commit is contained in:
Ryan P Kilby 2017-11-22 01:41:44 -05:00
parent 03c581eee3
commit 6d397f7a2d

View File

@ -10,8 +10,6 @@ The wrapped request then offers a richer API, in particular :
""" """
from __future__ import unicode_literals from __future__ import unicode_literals
import sys
from django.conf import settings from django.conf import settings
from django.http import QueryDict from django.http import QueryDict
from django.http.multipartparser import parse_header from django.http.multipartparser import parse_header
@ -373,19 +371,15 @@ class Request(object):
else: else:
self.auth = None self.auth = None
def __getattribute__(self, attr): def __getattr__(self, attr):
""" """
If an attribute does not exist on this instance, then we also attempt If an attribute does not exist on this instance, then we also attempt
to proxy it to the underlying HttpRequest object. to proxy it to the underlying HttpRequest object.
""" """
try: try:
return super(Request, self).__getattribute__(attr) return getattr(self._request, attr)
except AttributeError: except AttributeError:
info = sys.exc_info() return self.__getattribute__(attr)
try:
return getattr(self._request, attr)
except AttributeError:
six.reraise(info[0], info[1], info[2].tb_next)
@property @property
def DATA(self): def DATA(self):