diff options
| author | sebpiq | 2011-03-10 16:03:46 +0200 | 
|---|---|---|
| committer | sebpiq | 2011-03-10 16:03:46 +0200 | 
| commit | 26e10d0e3fadf1ff87da1650e30c1de34392b0d4 (patch) | |
| tree | 04868060b498696afa9467e8014de5fcd2e3c43a | |
| parent | 899233bf99bfb07e820e4c636bfabc62cfea981e (diff) | |
| download | django-rest-framework-26e10d0e3fadf1ff87da1650e30c1de34392b0d4.tar.bz2 | |
removed useless stuff, request.POST and FILES not used + some doc
| -rw-r--r-- | djangorestframework/content.py | 35 | ||||
| -rw-r--r-- | djangorestframework/parsers.py | 19 | ||||
| -rw-r--r-- | djangorestframework/utils.py | 38 | 
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): | 
