Commit ecd3733c by Tom Christie

Added serializers and fields

parent 9ea12d14
...@@ -57,7 +57,7 @@ class BaseParser(object): ...@@ -57,7 +57,7 @@ class BaseParser(object):
""" """
return media_type_matches(self.media_type, content_type) return media_type_matches(self.media_type, content_type)
def parse(self, stream, meta, upload_handlers): def parse(self, stream, **opts):
""" """
Given a *stream* to read from, return the deserialized output. Given a *stream* to read from, return the deserialized output.
Should return a 2-tuple of (data, files). Should return a 2-tuple of (data, files).
...@@ -72,7 +72,7 @@ class JSONParser(BaseParser): ...@@ -72,7 +72,7 @@ class JSONParser(BaseParser):
media_type = 'application/json' media_type = 'application/json'
def parse(self, stream, meta, upload_handlers): def parse(self, stream, **opts):
""" """
Returns a 2-tuple of `(data, files)`. Returns a 2-tuple of `(data, files)`.
...@@ -92,7 +92,7 @@ class YAMLParser(BaseParser): ...@@ -92,7 +92,7 @@ class YAMLParser(BaseParser):
media_type = 'application/yaml' media_type = 'application/yaml'
def parse(self, stream, meta, upload_handlers): def parse(self, stream, **opts):
""" """
Returns a 2-tuple of `(data, files)`. Returns a 2-tuple of `(data, files)`.
...@@ -112,7 +112,7 @@ class PlainTextParser(BaseParser): ...@@ -112,7 +112,7 @@ class PlainTextParser(BaseParser):
media_type = 'text/plain' media_type = 'text/plain'
def parse(self, stream, meta, upload_handlers): def parse(self, stream, **opts):
""" """
Returns a 2-tuple of `(data, files)`. Returns a 2-tuple of `(data, files)`.
...@@ -129,7 +129,7 @@ class FormParser(BaseParser): ...@@ -129,7 +129,7 @@ class FormParser(BaseParser):
media_type = 'application/x-www-form-urlencoded' media_type = 'application/x-www-form-urlencoded'
def parse(self, stream, meta, upload_handlers): def parse(self, stream, **opts):
""" """
Returns a 2-tuple of `(data, files)`. Returns a 2-tuple of `(data, files)`.
...@@ -147,13 +147,15 @@ class MultiPartParser(BaseParser): ...@@ -147,13 +147,15 @@ class MultiPartParser(BaseParser):
media_type = 'multipart/form-data' media_type = 'multipart/form-data'
def parse(self, stream, meta, upload_handlers): def parse(self, stream, **opts):
""" """
Returns a 2-tuple of `(data, files)`. Returns a 2-tuple of `(data, files)`.
`data` will be a :class:`QueryDict` containing all the form parameters. `data` will be a :class:`QueryDict` containing all the form parameters.
`files` will be a :class:`QueryDict` containing all the form files. `files` will be a :class:`QueryDict` containing all the form files.
""" """
meta = opts['meta']
upload_handlers = opts['upload_handlers']
try: try:
parser = DjangoMultiPartParser(meta, stream, upload_handlers) parser = DjangoMultiPartParser(meta, stream, upload_handlers)
return parser.parse() return parser.parse()
...@@ -168,7 +170,7 @@ class XMLParser(BaseParser): ...@@ -168,7 +170,7 @@ class XMLParser(BaseParser):
media_type = 'application/xml' media_type = 'application/xml'
def parse(self, stream, meta, upload_handlers): def parse(self, stream, **opts):
""" """
Returns a 2-tuple of `(data, files)`. Returns a 2-tuple of `(data, files)`.
......
...@@ -214,7 +214,8 @@ class Request(object): ...@@ -214,7 +214,8 @@ class Request(object):
for parser in self.get_parsers(): for parser in self.get_parsers():
if parser.can_handle_request(self.content_type): if parser.can_handle_request(self.content_type):
return parser.parse(self.stream, self.META, self.upload_handlers) return parser.parse(self.stream, meta=self.META,
upload_handlers=self.upload_handlers)
raise UnsupportedMediaType(self._content_type) raise UnsupportedMediaType(self._content_type)
......
...@@ -153,7 +153,7 @@ class TestFormParser(TestCase): ...@@ -153,7 +153,7 @@ class TestFormParser(TestCase):
parser = FormParser() parser = FormParser()
stream = StringIO(self.string) stream = StringIO(self.string)
(data, files) = parser.parse(stream, {}, []) (data, files) = parser.parse(stream)
self.assertEqual(Form(data).is_valid(), True) self.assertEqual(Form(data).is_valid(), True)
...@@ -203,10 +203,10 @@ class TestXMLParser(TestCase): ...@@ -203,10 +203,10 @@ class TestXMLParser(TestCase):
def test_parse(self): def test_parse(self):
parser = XMLParser() parser = XMLParser()
(data, files) = parser.parse(self._input, {}, []) (data, files) = parser.parse(self._input)
self.assertEqual(data, self._data) self.assertEqual(data, self._data)
def test_complex_data_parse(self): def test_complex_data_parse(self):
parser = XMLParser() parser = XMLParser()
(data, files) = parser.parse(self._complex_data_input, {}, []) (data, files) = parser.parse(self._complex_data_input)
self.assertEqual(data, self._complex_data) self.assertEqual(data, self._complex_data)
...@@ -380,7 +380,7 @@ class XMLRendererTestCase(TestCase): ...@@ -380,7 +380,7 @@ class XMLRendererTestCase(TestCase):
content = StringIO(renderer.render(self._complex_data, 'application/xml')) content = StringIO(renderer.render(self._complex_data, 'application/xml'))
parser = XMLParser() parser = XMLParser()
complex_data_out, dummy = parser.parse(content, {}, []) complex_data_out, dummy = parser.parse(content)
error_msg = "complex data differs!IN:\n %s \n\n OUT:\n %s" % (repr(self._complex_data), repr(complex_data_out)) error_msg = "complex data differs!IN:\n %s \n\n OUT:\n %s" % (repr(self._complex_data), repr(complex_data_out))
self.assertEqual(self._complex_data, complex_data_out, error_msg) self.assertEqual(self._complex_data, complex_data_out, error_msg)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment