--- a/.pydevproject Thu Jun 10 20:49:13 2010 +0200
+++ b/.pydevproject Fri Jun 11 00:17:30 2010 +0200
@@ -4,4 +4,7 @@
<pydev_project>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">python_eulalie</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.6</pydev_property>
+<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
+<path>/eulalie/web</path>
+</pydev_pathproperty>
</pydev_project>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/eulalie/templates/eulalie/partial/embed.html Fri Jun 11 00:17:30 2010 +0200
@@ -0,0 +1,5 @@
+<div id="{{ player_id }}">
+</div>
+<script type="text/javascript">
+ playerLdt(550,310, "{{ json_url }}","{{ player_id }}");
+</script>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/eulalie/templates/eulalie/partial/embed_popup.html Fri Jun 11 00:17:30 2010 +0200
@@ -0,0 +1,3 @@
+<div class="player_ldt">
+{% include "embed.html" %}
+</div>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/eulalie/templatetags/render_partial.py Fri Jun 11 00:17:30 2010 +0200
@@ -0,0 +1,36 @@
+from django import template
+
+register = template.Library()
+
+class PartialNode(template.Node):
+ def __init__(self, partial, params):
+ self.partial = partial
+ self.params = params
+
+ def render(self, context):
+ context_params = {}
+ for k, v in self.params.items():
+ try:
+ context_params[k] = eval(v)
+ except:
+ context_params[k] = template.Variable(v).resolve(context)
+
+ t = template.loader.get_template('partials/%s' % self.partial)
+ return t.render(template.Context(context_params))
+
+@register.tag
+def render_partial(parser, token):
+ parts = token.split_contents()
+ params = {}
+ try:
+ tag_name, partial = parts[:2]
+ if partial.startswith('"'): partial = partial[1:-1]
+ for p in parts[2:]:
+ k, v = p.split(':')
+ params[k] = v
+
+ except ValueError:
+ raise template.TemplateSyntaxError, '%r tag requires at least a single argument and no ' \
+ 'spaces in name:value list' % parts[0]
+
+ return PartialNode(partial, params)
\ No newline at end of file
--- a/web/eulalie/urls.py Thu Jun 10 20:49:13 2010 +0200
+++ b/web/eulalie/urls.py Fri Jun 11 00:17:30 2010 +0200
@@ -1,6 +1,7 @@
-from django.conf.urls.defaults import patterns,include
+from django.conf.urls.defaults import patterns ,include
from django.contrib import admin
+
# Uncomment the next two lines to enable the admin:
admin.autodiscover()
--- a/web/ldt/ldt_utils/projectserializer.py Thu Jun 10 20:49:13 2010 +0200
+++ b/web/ldt/ldt_utils/projectserializer.py Fri Jun 11 00:17:30 2010 +0200
@@ -47,7 +47,6 @@
}
}
- self.lists.append(new_list)
for decoupage_node in ensemble_node.childNodes:
if decoupage_node.nodeType != xml.dom.Node.ELEMENT_NODE or decoupage_node.tagName != "decoupage" :
@@ -159,6 +158,9 @@
self.tags[tag_id] = new_tag
element_tags.append({"id-ref":tag_id})
+ if not element_tags:
+ element_tags = None
+
new_annotation = {
"begin": element_begin,
"end": int(element_begin) + int(element_duration),
@@ -175,6 +177,7 @@
"href": element_audio_href
},
},
+ "tags": element_tags,
"meta": {
"id-ref": decoupage_id,
"dc:creator": decoupage_creator,
@@ -186,8 +189,11 @@
self.annotations.append(new_annotation)
+ if not list_items:
+ new_list["items"] = None
+ self.lists.append(new_list)
-
+
def __parse_ldt(self):
doc = xml.dom.minidom.parseString(self.project.ldt.encode("utf-8"))
@@ -300,11 +306,32 @@
'main_media': {"id-ref":project_main_media}
}
+ if not self.medias:
+ self.medias = None
+
+ if not self.annotation_types:
+ self.annotation_types = None
+
+ if len(self.tags) == 0:
+ tags = None
+ else:
+ tags = self.tags.values()
+
+ if not self.lists:
+ self.lists = None
+
+ if not self.views:
+ self.views = None
+
+ if not self.annotations:
+ self.annotations = None
+
res['medias'] = self.medias
res['annotation-types'] = self.annotation_types
res['annotations'] = self.annotations
res['lists'] = self.lists
- res['tags'] = self.tags.values()
+ res['tags'] = tags
res['views'] = self.views # ignored for the moment
- return res
\ No newline at end of file
+ return res
+
--- a/web/ldt/ldt_utils/views.py Thu Jun 10 20:49:13 2010 +0200
+++ b/web/ldt/ldt_utils/views.py Fri Jun 11 00:17:30 2010 +0200
@@ -207,7 +207,9 @@
if mimetype is None:
mimetype = "application/json; charset=utf-8"
else:
- mimetype.encode("utf-8")
+ mimetype = mimetype.encode("utf-8")
+ if "charset" not in mimetype:
+ mimetype += "; charset=utf-8"
resp = HttpResponse(mimetype=mimetype)
resp['Cache-Control']='no-cache, must-revalidate'
resp['Pragma']='no-cache'