summaryrefslogtreecommitdiff
path: root/coip/apps/opensocial/serializer.py
diff options
context:
space:
mode:
Diffstat (limited to 'coip/apps/opensocial/serializer.py')
-rw-r--r--coip/apps/opensocial/serializer.py104
1 files changed, 0 insertions, 104 deletions
diff --git a/coip/apps/opensocial/serializer.py b/coip/apps/opensocial/serializer.py
deleted file mode 100644
index df0dcc3..0000000
--- a/coip/apps/opensocial/serializer.py
+++ /dev/null
@@ -1,104 +0,0 @@
-'''
-Created on Jun 19, 2011
-
-@author: leifj
-'''
-from tastypie.serializers import Serializer, get_type_string
-from tastypie.bundle import Bundle
-from django.utils import simplejson
-from django.utils.encoding import force_unicode
-import string
-import logging
-from pprint import pformat
-from django.core.exceptions import ImproperlyConfigured
-from django.core.serializers import json
-
-try:
- import lxml
- from lxml.etree import parse as parse_xml
- from lxml.etree import Element, tostring
-except ImportError:
- lxml = None
-
-class OpenSocialSerializer(Serializer):
-
- def __init__(self, formats=None, content_types=None, datetime_formatting=None):
- super(OpenSocialSerializer,self).__init__(formats,content_types,datetime_formatting)
-
- def name_data(self,data):
- name = 'unknown'
-
- if hasattr(data,"resource_name"):
- name = data.resource_name()
-
- if isinstance(data,Bundle):
- name = self.name_data(data.obj)
- elif hasattr(data,"__class__"):
- name = string.lower(data.__class__.__name__)
-
- return name
-
- def to_json(self, data, options=None):
- """
- Given some Python data, produces JSON output.
- """
- options = options or {}
- data = self.to_simple(data, options)
- return simplejson.dumps(data['response'], cls=json.DjangoJSONEncoder, sort_keys=True)
-
- def to_xml(self, data, options=None):
- """
- Given some Python data, produces XML output.
- """
- options = options or {}
-
- if lxml is None:
- raise ImproperlyConfigured("Usage of the XML aspects requires lxml.")
-
- etree = self.to_etree(data, options)
- etree.set("xmlns","http://ns.opensocial.org/2008/opensocial")
-
- return tostring(etree, xml_declaration=True, encoding='utf-8')
-
- def to_etree(self, data, options=None, name=None, depth=0, parent=None):
- """
- Given some data, converts that data to an ``etree.Element`` suitable
- for use in the XML output.
- """
-
- if parent is not None:
- logging.debug("+++++++++++ %d %s %s" % (depth,name,tostring(parent)))
- else:
- logging.debug("+++++++++++ %d %s <no parent>" % (depth,name))
- logging.debug(pformat(data))
-
- if parent is None:
- parent = Element(name or self.name_data(data))
-
- if isinstance(data, (list, tuple)):
- for item in data:
- element = Element(name or 'item')
- self.to_etree(item, options, depth=depth+1,parent=element)
- parent.append(element)
- elif isinstance(data, dict):
- if len(data) == 1 and depth == 0:
- for (key,value) in data.iteritems():
- parent = self.to_etree(value, options, name=key, depth=depth+1,parent=None)
- else:
- for (key,value) in data.iteritems():
- parent.append(self.to_etree(value, options, name=key, depth=depth+1,parent=parent))
- elif isinstance(data, Bundle):
- element = Element(self.name_data(data))
- for field_name, field_object in data.data.items():
- self.to_etree(field_object, options, name=field_name, depth=depth+1, parent=element)
- parent.append(element)
- else:
- element = Element(name or 'value')
- simple_data = self.to_simple(data, options)
- data_type = get_type_string(simple_data)
- #if data_type != 'string':
- # element.set('type', get_type_string(simple_data))
- if data_type != 'null':
- element.text = force_unicode(simple_data)
- parent.append(element)
- return parent \ No newline at end of file