aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsebpiq2011-03-10 16:03:46 +0200
committersebpiq2011-03-10 16:03:46 +0200
commit26e10d0e3fadf1ff87da1650e30c1de34392b0d4 (patch)
tree04868060b498696afa9467e8014de5fcd2e3c43a
parent899233bf99bfb07e820e4c636bfabc62cfea981e (diff)
downloaddjango-rest-framework-26e10d0e3fadf1ff87da1650e30c1de34392b0d4.tar.bz2
removed useless stuff, request.POST and FILES not used + some doc
-rw-r--r--djangorestframework/content.py35
-rw-r--r--djangorestframework/parsers.py19
-rw-r--r--djangorestframework/utils.py38
3 files changed, 8 insertions, 84 deletions
diff --git a/djangorestframework/content.py b/djangorestframework/content.py
index fe1a56d9..96050029 100644
--- a/djangorestframework/content.py
+++ b/djangorestframework/content.py
@@ -24,42 +24,18 @@ class StandardContentMixin(ContentMixin):
return None
return (request.META.get('CONTENT_TYPE', None), request.raw_post_data)
-from django.core.files.base import File
-class SocketFile(File):
- # Only forward access is allowed
- def __init__(self, socket, size):
- super(SocketFile, self).__init__(socket)
- self._size = int(size)
- self._pos = 0
-
- def read(self, num_bytes=None):
- if num_bytes is None:
- num_bytes = self._size - self._pos
- else:
- num_bytes = min(num_bytes, self._size - self._pos)
- self._pos += num_bytes
- return self.file.read(num_bytes)
-
- def tell(self):
- return self._pos
-
- def seek(self, position):
- pass
class OverloadedContentMixin(ContentMixin):
"""HTTP request content behaviour that also allows arbitrary content to be tunneled in form data."""
-
- #TODO: test PUT
- #TODO: rewrite cleaner
- """The name to use for the content override field in the POST form."""
+ """The name to use for the content override field in the POST form. Set this to *None* to desactivate content overloading."""
CONTENT_PARAM = '_content'
- """The name to use for the content-type override field in the POST form."""
+ """The name to use for the content-type override field in the POST form. Taken into account only if content overloading is activated."""
CONTENTTYPE_PARAM = '_contenttype'
def determine_content(self, request):
- """If the request contains content return a tuple of (content_type, content) otherwise return None.
+ """If the request contains content, returns a tuple of (content_type, content) otherwise returns None.
Note that content_type may be None if it is unset."""
if not request.META.get('CONTENT_LENGTH', None) and not request.META.get('TRANSFER_ENCODING', None):
return None # TODO : Breaks, because determine_content should return a tuple.
@@ -68,14 +44,11 @@ class OverloadedContentMixin(ContentMixin):
if (request.method == 'POST' and self.CONTENT_PARAM and
request.POST.get(self.CONTENT_PARAM, None) is not None):
- # Set content type if form contains a none empty FORM_PARAM_CONTENTTYPE field
+ # Set content type if form contains a non-empty CONTENTTYPE_PARAM field
content_type = None
if self.CONTENTTYPE_PARAM and request.POST.get(self.CONTENTTYPE_PARAM, None):
content_type = request.POST.get(self.CONTENTTYPE_PARAM, None)
return (content_type, request.POST[self.CONTENT_PARAM])
- elif request.method == 'PUT':
- f = SocketFile(request.environ['wsgi.input'], request.META['CONTENT_LENGTH'])
- return (content_type, f.read())
else:
return (content_type, request.raw_post_data)
diff --git a/djangorestframework/parsers.py b/djangorestframework/parsers.py
index b7b73408..4659f24b 100644
--- a/djangorestframework/parsers.py
+++ b/djangorestframework/parsers.py
@@ -114,13 +114,7 @@ class FormParser(BaseParser, DataFlatener):
EMPTY_VALUE = 'EMPTY'
def parse(self, input):
- request = self.resource.request
-
- if request.method == 'PUT':
- data = parse_qs(input)
- elif request.method == 'POST':
- # Django has already done the form parsing for us.
- data = dict(request.POST.iterlists())
+ data = parse_qs(input)
# Flatening data and removing EMPTY_VALUEs from the lists
data = self.flatten_data(data)
@@ -150,14 +144,9 @@ class MultipartParser(BaseParser, DataFlatener):
def parse(self, input):
request = self.resource.request
- if request.method == 'PUT':
- upload_handlers = request._get_upload_handlers()
- django_mpp = DjangoMPParser(request.META, StringIO(input), upload_handlers)
- data, files = django_mpp.parse()
- elif request.method == 'POST':
- # Django has already done the form parsing for us.
- data = request.POST
- files = request.FILES
+ upload_handlers = request._get_upload_handlers()
+ django_mpp = DjangoMPParser(request.META, StringIO(input), upload_handlers)
+ data, files = django_mpp.parse()
# Flatening data, files and combining them
data = self.flatten_data(data)
diff --git a/djangorestframework/utils.py b/djangorestframework/utils.py
index 266d1ca6..d45e5acf 100644
--- a/djangorestframework/utils.py
+++ b/djangorestframework/utils.py
@@ -34,44 +34,6 @@ def url_resolves(url):
return False
return True
-# From piston
-def coerce_put_post(request):
- """
- Django doesn't particularly understand REST.
- In case we send data over PUT, Django won't
- actually look at the data and load it. We need
- to twist its arm here.
-
- The try/except abominiation here is due to a bug
- in mod_python. This should fix it.
- """
- if request.method != 'PUT':
- return
-
- # Bug fix: if _load_post_and_files has already been called, for
- # example by middleware accessing request.POST, the below code to
- # pretend the request is a POST instead of a PUT will be too late
- # to make a difference. Also calling _load_post_and_files will result
- # in the following exception:
- # AttributeError: You cannot set the upload handlers after the upload has been processed.
- # The fix is to check for the presence of the _post field which is set
- # the first time _load_post_and_files is called (both by wsgi.py and
- # modpython.py). If it's set, the request has to be 'reset' to redo
- # the query value parsing in POST mode.
- if hasattr(request, '_post'):
- del request._post
- del request._files
-
- try:
- request.method = "POST"
- request._load_post_and_files()
- request.method = "PUT"
- except AttributeError:
- request.META['REQUEST_METHOD'] = 'POST'
- request._load_post_and_files()
- request.META['REQUEST_METHOD'] = 'PUT'
-
- request.PUT = request.POST
# From http://www.koders.com/python/fidB6E125C586A6F49EAC38992CF3AFDAAE35651975.aspx?s=mdef:xml
#class object_dict(dict):