diff options
| author | tom christie tom@tomchristie.com | 2011-01-23 23:08:44 +0000 |
|---|---|---|
| committer | tom christie tom@tomchristie.com | 2011-01-23 23:08:44 +0000 |
| commit | e95198a1c0b206bd3b565bb62d167ada71595099 (patch) | |
| tree | 65dc7f469b28f09783b732862ab9822b8528f10d /src/rest/parsers.py | |
| parent | 4100242fa2395bef8db0c5ffbab6f5d0cf95301d (diff) | |
| download | django-rest-framework-e95198a1c0b206bd3b565bb62d167ada71595099.tar.bz2 | |
Sphinx docs, examples, lots of refactoring
Diffstat (limited to 'src/rest/parsers.py')
| -rw-r--r-- | src/rest/parsers.py | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/src/rest/parsers.py b/src/rest/parsers.py deleted file mode 100644 index ac449e49..00000000 --- a/src/rest/parsers.py +++ /dev/null @@ -1,63 +0,0 @@ -import json -from rest.status import ResourceException, Status - -class BaseParser(object): - def __init__(self, resource): - self.resource = resource - - def parse(self, input): - return {} - - -class JSONParser(BaseParser): - def parse(self, input): - try: - return json.loads(input) - except ValueError, exc: - raise ResourceException(Status.HTTP_400_BAD_REQUEST, {'detail': 'JSON parse error - %s' % str(exc)}) - -class XMLParser(BaseParser): - pass - -class FormParser(BaseParser): - """The default parser for form data. - Return a dict containing a single value for each non-reserved parameter - """ - def __init__(self, resource): - - if resource.request.method == 'PUT': - # Fix from piston to force Django to give PUT requests the same - # form processing that POST requests get... - # - # 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(resource.request, '_post'): - del request._post - del request._files - - try: - resource.request.method = "POST" - resource.request._load_post_and_files() - resource.request.method = "PUT" - except AttributeError: - resource.request.META['REQUEST_METHOD'] = 'POST' - resource.request._load_post_and_files() - resource.request.META['REQUEST_METHOD'] = 'PUT' - - # - self.data = {} - for (key, val) in resource.request.POST.items(): - if key not in resource.RESERVED_PARAMS: - self.data[key] = val - - def parse(self, input): - return self.data - |
