From 27c19e13c60f3186c3511eb2c78dd458c39d24bb Mon Sep 17 00:00:00 2001
From: Ben Adida <ben@adida.net>
Date: Mon, 17 Jan 2011 18:37:47 -0800
Subject: [PATCH] added beginning of JSON_LD serialization trigger

---
 helios/datatypes/__init__.py | 5 ++++-
 helios/view_utils.py         | 8 +++++++-
 helios/views.py              | 2 +-
 3 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/helios/datatypes/__init__.py b/helios/datatypes/__init__.py
index d3b5271..cee651e 100644
--- a/helios/datatypes/__init__.py
+++ b/helios/datatypes/__init__.py
@@ -177,7 +177,10 @@ class LDObject(object):
                 self._setattr_wrapped(f, new_val)
         
     def serialize(self):
-        return utils.to_json(self.toDict())
+        d = self.toDict()
+        if self.USE_JSON_LD:
+            d['#'] = {'_': 'http://heliosvoting.org/ns#'}
+        return utils.to_json(d)
     
     def toDict(self, alternate_fields=None):
         val = {}
diff --git a/helios/view_utils.py b/helios/view_utils.py
index 1219e9b..084a696 100644
--- a/helios/view_utils.py
+++ b/helios/view_utils.py
@@ -10,6 +10,8 @@ from django.shortcuts import render_to_response
 
 import utils
 
+from helios import datatypes
+
 # nicely update the wrapper function
 from functools import update_wrapper
 
@@ -81,7 +83,11 @@ def json(func):
     web client.
     """
     def convert_to_json(self, *args, **kwargs):
-      return render_json(utils.to_json(func(self, *args, **kwargs)))
+      return_val = func(self, *args, **kwargs)
+      if isinstance(return_val, datatypes.LDObject):
+        return render_json(return_val.serialize())
+      else:
+        return render_json(utils.to_json(return_val))
 
     return update_wrapper(convert_to_json,func)
     
diff --git a/helios/views.py b/helios/views.py
index c71bf3c..3a4f1d6 100644
--- a/helios/views.py
+++ b/helios/views.py
@@ -214,7 +214,7 @@ def one_election_schedule(request, election):
 def one_election(request, election):
   if not election:
     raise Http404
-  return election.toJSONDict()
+  return datatypes.LDObject.instantiate(election, datatype='legacy/Election')
 
 @election_view()
 def election_badge(request, election):
-- 
GitLab