--- a/.hgignore Thu Jun 10 04:16:26 2010 +0200
+++ b/.hgignore Thu Jun 10 11:17:09 2010 +0200
@@ -5,4 +5,5 @@
^web/\.htaccess$
^web/eulalie/\.htaccess$
^web/eulalie/config\.py$
+^web/static/media/
--- a/sbin/virtualenv/create_python_env.py Thu Jun 10 04:16:26 2010 +0200
+++ b/sbin/virtualenv/create_python_env.py Thu Jun 10 11:17:09 2010 +0200
@@ -46,7 +46,6 @@
EXTRA_TEXT += " 'PYLUCENE' : { 'setup': 'http://apache.crihan.fr/dist/lucene/pylucene/pylucene-3.0.1-1-src.tar.gz', 'url': 'http://apache.crihan.fr/dist/lucene/pylucene/pylucene-3.0.1-1-src.tar.gz', 'local': '"+ os.path.abspath(os.path.join(src_base,"pylucene-3.0.1-1-src.tar.gz"))+"'},\n"
EXTRA_TEXT += " 'PIL' : { 'setup': 'pil', 'url': 'http://effbot.org/downloads/Imaging-1.1.7.tar.gz', 'local': '"+ os.path.abspath(os.path.join(src_base,"Imaging-1.1.7.tar.gz"))+"'},\n"
EXTRA_TEXT += " 'PYXML' : { 'setup': 'http://sourceforge.net/projects/pyxml/files/pyxml/0.8.4/PyXML-0.8.4.tar.gz/download', 'url': 'http://sourceforge.net/projects/pyxml/files/pyxml/0.8.4/PyXML-0.8.4.tar.gz/download', 'local': '"+ os.path.abspath(os.path.join(src_base,"PyXML-0.8.4.tar.gz"))+"', 'patch': '"+os.path.join(patch_path,"pyxml.patch")+"'},\n"
-EXTRA_TEXT += " 'JSON' : { 'setup': 'simplejson', 'url': 'http://pypi.python.org/packages/source/s/simplejson/simplejson-2.1.1.tar.gz', 'local': '"+ os.path.abspath(os.path.join(src_base,"simplejson-2.1.1.tar.gz"))+"'},\n"
EXTRA_TEXT += " 'DJANGO' : { 'setup': 'django', 'url': 'http://www.djangoproject.com/download/1.2.1/tarball/', 'local': '"+ os.path.abspath(os.path.join(src_base,"Django-1.2.1.tar.gz"))+"'},\n"
EXTRA_TEXT += " 'DJANGO-EXTENSIONS' : { 'setup': 'django-extensions', 'url':'http://django-command-extensions.googlecode.com/files/django-extensions-0.4.1.tar.gz', 'local':'"+ os.path.abspath(os.path.join(src_base,"django-extensions-0.4.1.tar.gz"))+"' },\n"
EXTRA_TEXT += " 'DJANGO-REGISTRATION' : { 'setup': 'django-registration', 'url':'http://bitbucket.org/ubernostrum/django-registration/get/tip.tar.gz', 'local':'"+ os.path.abspath(os.path.join(src_base,"django-registration.tar.gz"))+"' },\n"
@@ -233,9 +232,6 @@
('DJANGO-REGISTRATION', 'easy_install', '-Z')
]
- if sys.version_info < (2,6):
- NORMAL_INSTALL.append(('JSON','pip', None))
-
for key, method, option_str in NORMAL_INSTALL:
if key not in ignore_packages:
Binary file sbin/virtualenv/res/src/simplejson-2.1.1.tar.gz has changed
--- a/web/eulalie/templates/eulalie/workspace.html Thu Jun 10 04:16:26 2010 +0200
+++ b/web/eulalie/templates/eulalie/workspace.html Thu Jun 10 11:17:09 2010 +0200
@@ -57,6 +57,7 @@
<td>{{ content.title }}</td>
<td><a href="{% url ldt.ldt_utils.views.index content.iri_id %}" class="ldt_link">{% trans "open ldt" %}</a></td>
<td><a href="{% url ldt.ldt_utils.views.create_project content.iri_id %}" class="ldt_link_create">{% trans "create project" %}</a></td>
+ <td><a href="{% url ldt.ldt_utils.views.project_json_externalid content.external_id %}" class="ldt_link">{% trans "link json by externalid" %}</a></td>
</tr>
{% endfor %}
</table>
@@ -70,6 +71,7 @@
<td>{{ project.title }}</td>
<td><a href="{% url ldt.ldt_utils.views.indexProject project.ldt_id %}" class="ldt_link">{% trans "open ldt" %}</a></td>
<td><a href="{% url ldt.ldt_utils.views.copy_project project.ldt_id %}" class="ldt_link_create">{% trans "copy project" %}</a></td>
+ <td><a href="{% url ldt.ldt_utils.views.project_json_id project.ldt_id %}" class="ldt_link">{% trans "link json by id" %}</a></td>
</tr>
{% endfor %}
</table>
--- a/web/ldt/ldt_utils/admin.py Thu Jun 10 04:16:26 2010 +0200
+++ b/web/ldt/ldt_utils/admin.py Thu Jun 10 11:17:09 2010 +0200
@@ -78,3 +78,4 @@
admin.site.register(Content, ContentAdmin)
+admin.site.register(Author)
--- a/web/ldt/ldt_utils/contentindexer.py Thu Jun 10 04:16:26 2010 +0200
+++ b/web/ldt/ldt_utils/contentindexer.py Thu Jun 10 11:17:09 2010 +0200
@@ -65,18 +65,18 @@
res = xml.xpath.Evaluate("/iri/body/ensembles/ensemble", context=con)
for ensemble in res:
- ensembleId = ensemble.getAttributeNS("id",None)
+ ensembleId = ensemble.getAttributeNS(None,u"id")
for decoupageNode in ensemble.childNodes:
- if decoupageNode.nodeType != xml.dom.Node.ELEMENT_NODE or decoupageNode.tagName != "decoupage" or decoupageNode.getAttributeNS("id",None) in self.decoupage_blacklist:
+ if decoupageNode.nodeType != xml.dom.Node.ELEMENT_NODE or decoupageNode.tagName != "decoupage" or decoupageNode.getAttributeNS(None,u"id") in self.decoupage_blacklist:
continue
- decoupId = decoupageNode.getAttributeNS("id",None)
+ decoupId = decoupageNode.getAttributeNS(None,u"id")
res = xml.xpath.Evaluate("elements/element", decoupageNode)
for elementNode in res:
doc = lucene.Document()
- elementId = elementNode.getAttributeNS("id",None)
- tags = elementNode.getAttributeNS("tags",None)
+ elementId = elementNode.getAttributeNS(None,u"id")
+ tags = elementNode.getAttributeNS(None,u"tags")
if tags is not None:
tags.replace(",", ";")
@@ -170,21 +170,21 @@
res = xml.xpath.Evaluate("/iri/annotations/content", context=con)
for content in res:
- contentId = content.getAttributeNS("id",None)
+ contentId = content.getAttributeNS(None,u"id")
ensembleId = "ens_perso"
for decoupageNode in content.childNodes:
# pocketfilms.utils.log.debug("Indexing content decoupage : "+ repr(decoupageNode.nodeType) + " in " + repr(self.decoupage_blacklist))
- if decoupageNode.nodeType != xml.dom.Node.ELEMENT_NODE or decoupageNode.tagName != "decoupage" or decoupageNode.getAttributeNS("id",None) in self.decoupage_blacklist:
+ if decoupageNode.nodeType != xml.dom.Node.ELEMENT_NODE or decoupageNode.tagName != "decoupage" or decoupageNode.getAttributeNS(None,"id") in self.decoupage_blacklist:
continue
- decoupId = decoupageNode.getAttributeNS("id",None)
+ decoupId = decoupageNode.getAttributeNS(None,u"id")
res = xml.xpath.Evaluate("elements/element", decoupageNode)
for elementNode in res:
doc = lucene.Document()
- elementId = elementNode.getAttributeNS("id",None)
- tags = elementNode.getAttributeNS("tags",None)
+ elementId = elementNode.getAttributeNS(None,u"id")
+ tags = elementNode.getAttributeNS(None,u"tags")
if tags is not None:
tags.replace(",", ";")
--- a/web/ldt/ldt_utils/fileimport.py Thu Jun 10 04:16:26 2010 +0200
+++ b/web/ldt/ldt_utils/fileimport.py Thu Jun 10 11:17:09 2010 +0200
@@ -73,7 +73,7 @@
for node in ensemblesnode.childNodes:
if node.nodeType == xml.dom.Node.ELEMENT_NODE and node.tagName == "ensemble":
- id = node.getAttributeNS("id",None)
+ id = node.getAttributeNS(None,u"id")
if id not in ensembleids:
ensembleids.append(id)
@@ -108,7 +108,7 @@
src_video = res[0].getAttribute('src')
self.videourl = os.path.basename(src_video)
res[0].setAttributeNS(None,'src', self.videourl)
- self.duration = res[0].getAttributeNS(None, 'dur')
+ self.duration = res[0].getAttributeNS(None, u'dur')
f = open(path, "w")
try:
@@ -130,7 +130,7 @@
# url = self.src
#else:
# url = self.id + u"/" + os.path.basename(self.src)
- content, self.created = Content.objects.get_or_create(iri_id=self.id, defaults = {'iriurl': self.src, 'title':self.title, 'description':self.desc, 'videopath': self.videopath})
+ content, self.created = Content.objects.get_or_create(iri_id=self.id, defaults = {'src':self.videourl, 'iriurl': self.src, 'title':self.title, 'description':self.desc, 'videopath': self.videopath})
if not self.created:
content.iriurl = self.src
content.title = self.title
@@ -266,7 +266,7 @@
#get author from file ldt
result = xml.xpath.Evaluate("/iri/project", context=con)
for pnode in result:
- author = pnode.getAttributeNS("user",None)
+ author = pnode.getAttributeNS(None,u"user")
if author:
self.author = unicode(author)
break
--- a/web/ldt/ldt_utils/models.py Thu Jun 10 04:16:26 2010 +0200
+++ b/web/ldt/ldt_utils/models.py Thu Jun 10 11:17:09 2010 +0200
@@ -6,6 +6,7 @@
import os
import os.path
import uuid
+import xml
class Author(models.Model):
@@ -20,14 +21,15 @@
class Content(models.Model):
iri_id = models.CharField(max_length=1024, unique=True)
- iriurl = models.URLField()
- videopath = models.URLField(null=True, blank=True)
+ iriurl = models.CharField(max_length=1024)
+ src = models.CharField(max_length=1024)
+ videopath = models.CharField(max_length=1024, null=True, blank=True)
creation_date = models.DateTimeField(auto_now_add=True)
update_date = models.DateTimeField(auto_now=True)
title = models.CharField(max_length=1024, null=True, blank=True)
description = models.TextField(null=True, blank=True)
external_id = models.CharField(max_length=1024, null=True, blank=True)
- authors = models.ManyToManyField(Author)
+ authors = models.ManyToManyField(Author, blank=True)
duration = models.IntegerField(null=True, blank=True)
def get_duration(self):
@@ -36,7 +38,7 @@
doc = Ft.Xml.Domlette.ConvertDocument(doc)
con = xml.xpath.Context.Context(doc, 1, 1, None)
res = xml.xpath.Evaluate("/iri/body/medias/media[@id='video']/video", context=con)
- self.duration = int(res[0].getAttributeNS(None, 'dur'))
+ self.duration = int(res[0].getAttributeNS(None, u'dur'))
self.save()
return self.duration
@@ -68,10 +70,10 @@
return unicode(web_url) + unicode(settings.MEDIA_URL)+u"media/ldt/"+unicode(self.iriurl)
def iri_file_path(self):
- return os.path.join(os.path.join(os.path.join(os.path.join(settings.MEDIA_ROOT, "media"), "ldt"), self.iri_id), os.path.basename(self.iri.path))
+ return os.path.join(os.path.join(os.path.join(os.path.join(settings.MEDIA_ROOT, "media"), "ldt"), self.iri_id), os.path.basename(self.iriurl))
def iri_url_template(self):
- return "${web_url}${media_url}media/ldt/" + unicode(self.iri_id) + "/" + os.path.basename(self.iri.path)
+ return "${web_url}${media_url}media/ldt/" + unicode(self.iri_id) + "/" + os.path.basename(self.iriurl)
class Project(Document):
@@ -104,7 +106,7 @@
con = xml.xpath.Context.Context(doc, 1, 1, None)
res = xml.xpath.Evaluate("/iri/project", context=con)
if len(res) > 0:
- return res[0].getAttributeNS(None, 'abstract')
+ return res[0].getAttributeNS(None, u'abstract')
else:
return None
--- a/web/ldt/ldt_utils/projectserializer.py Thu Jun 10 04:16:26 2010 +0200
+++ b/web/ldt/ldt_utils/projectserializer.py Thu Jun 10 11:17:09 2010 +0200
@@ -2,6 +2,9 @@
import Ft.Xml.Domlette
import xml.xpath
from datetime import datetime
+from ldt.ldt_utils.models import Content, Project
+
+DATE_FORMATS = ["%d/%m/%Y","%Y-%m-%d"]
"""
Serialize a project object to a cinelab compatible array
@@ -21,11 +24,11 @@
def __parse_ensemble(self, ensemble_node, content):
- ensemble_id = ensemble_node.getAttributeNS("id",None)
- ensemble_author = ensemble_node.getAttributeNS("author",None)
- ensemble_title = ensemble_node.getAttributeNS("title",None)
- ensemble_description = ensemble_node.getAttributeNS("abstract",None)
- ensemble_created = datetime.utcnow().iso_format()
+ ensemble_id = ensemble_node.getAttributeNS(None,u"id")
+ ensemble_author = ensemble_node.getAttributeNS(None,u"author")
+ ensemble_title = ensemble_node.getAttributeNS(None,u"title")
+ ensemble_description = ensemble_node.getAttributeNS(None,u"abstract")
+ ensemble_created = datetime.utcnow().isoformat()
ensemble_modified = ensemble_created
list_items = []
@@ -50,16 +53,22 @@
if decoupage_node.nodeType != xml.dom.Node.ELEMENT_NODE or decoupage_node.tagName != "decoupage" :
continue
- decoupage_id = decoupage_node.getAttributeNS("id",None)
- decoupage_creator = decoupage_node.getAttributeNS("author",None)
+ decoupage_id = decoupage_node.getAttributeNS(None, u"id")
+ decoupage_creator = decoupage_node.getAttributeNS(None,u"author")
if not decoupage_creator:
decoupage_creator = "IRI"
decoupage_contributor = decoupage_creator
- date_str = decoupage_node.getAttributeNS("date",None)
+ date_str = decoupage_node.getAttributeNS(None,u"date")
+ decoupage_created = None
if date_str :
- decoupage_created = datetime.strptime(date_str,"%d/%m/%Y").iso_format()
- else :
- decoupage_created = datetime.utcnow().iso_format()
+ for date_format in DATE_FORMATS:
+ try:
+ decoupage_created = datetime.strptime(date_str,date_format).isoformat()
+ break
+ except Exception:
+ decoupage_created = None
+ if decoupage_created is None:
+ decoupage_created = datetime.utcnow().isoformat()
decoupage_modified = decoupage_created
decoupage_title = ""
@@ -89,11 +98,11 @@
res = xml.xpath.Evaluate("elements/element", decoupage_node)
for element_node in res:
- element_id = element_node.getAttributeNS("id",None)
- element_begin = element_node.getAttributeNS("begin",None)
- element_duration = element_node.getAttributeNS("dur",None)
+ element_id = element_node.getAttributeNS(None,u"id")
+ element_begin = element_node.getAttributeNS(None,u"begin")
+ element_duration = element_node.getAttributeNS(None,u"dur")
element_media = content.iri_id
- element_color = element_node.getAttributeNS("color",None)
+ element_color = element_node.getAttributeNS(None,u"color")
element_title = ""
for txtRes in xml.xpath.Evaluate("title/text()", element_node):
@@ -107,15 +116,19 @@
element_audio_href = ""
res = xml.xpath.Evaluate("audio", element_node)
if len(res) > 0:
- element_audio_src = res[0].getAttributeNS(None, "source")
- element_audio_href = res[0].value
+ element_audio_src = res[0].getAttributeNS(None, u"source")
+ ltext = []
+ for n in res[0].childNodes:
+ if n.nodeType in (dom.Node.TEXT_NODE, dom.Node.CDATA_SECTION_NODE):
+ ltext.append(n.data)
+ element_audio_href = ''.join(ltext)
element_tags = []
- tags = element_node.getAttributeNS("tags",None)
+ tags = element_node.getAttributeNS(None,u"tags")
- tags_list = map(lambda s:s.trim(),tags.split(","))
+ tags_list = map(lambda s:s.strip(),tags.split(","))
#tags
if tags is None or len(tags) == 0:
@@ -130,7 +143,7 @@
for tagnode in restagnode:
tags_list.append(tagnode.data)
- tag_date = datetime.utcnow().iso_format()
+ tag_date = datetime.utcnow().isoformat()
for tag_id in tags_list:
if tag_id not in self.tags:
new_tag = {
@@ -177,20 +190,20 @@
def __parse_ldt(self):
- doc = xml.dom.minidom.parseString(self.project.ldt)
+ doc = xml.dom.minidom.parseString(self.project.ldt.encode("utf-8"))
self.ldt_doc = Ft.Xml.Domlette.ConvertDocument(doc)
con = xml.xpath.Context.Context(doc, 1, 1, None)
res = xml.xpath.Evaluate("/iri/medias/media", context=con)
for mediaNode in res:
- iri_id = mediaNode.getAttributeNS(None,"id")
+ iri_id = mediaNode.getAttributeNS(None,u"id")
content = Content.objects.get(iri_id=iri_id)
- self.__parser_content(content)
+ self.__parse_content(content)
res = xml.xpath.Evaluate("/iri/annotations/content",context=con)
for content_node in res:
- content_id = content_node.getAttributeNS(None, "id")
+ content_id = content_node.getAttributeNS(None, u"id")
content = Content.objects.get(iri_id=content_id)
for ensemble_node in content_node.childNodes:
if ensemble_node.nodeType != xml.dom.Node.ELEMENT_NODE or ensemble_node.tagName != "ensemble" :
@@ -239,9 +252,9 @@
"id" : content.iri_id,
"url" : content.videopath.rstrip('/') + "/" + content.src,
"dc:creator" : author,
- "dc:created" : content.creation_date.iso_format(),
+ "dc:created" : content.creation_date.isoformat(),
"dc:contributor" : contributor,
- "dc:modified" : content.update_date.iso_format(),
+ "dc:modified" : content.update_date.isoformat(),
"dc:creator.contents" : content_author,
"dc:created.contents" : content_date,
"dc:title" : content.title,
@@ -263,7 +276,6 @@
res = {}
self.__parse_ldt()
- self.__parse_contents()
project_main_media = ""
if len(self.medias) > 0:
@@ -271,8 +283,8 @@
res['metas'] = {
'id': self.project.ldt_id,
- 'dc:created':self.project.creation_date.iso_format(),
- 'dc:modified':self.project.modification_date.iso_format(),
+ 'dc:created':self.project.creation_date.isoformat(),
+ 'dc:modified':self.project.modification_date.isoformat(),
'dc:contributor':self.project.changed_by,
'dc:creator':self.project.created_by,
'dc:title':self.project.title,
--- a/web/ldt/ldt_utils/templates/admin/ldt_utils/content/upload_form.html Thu Jun 10 04:16:26 2010 +0200
+++ b/web/ldt/ldt_utils/templates/admin/ldt_utils/content/upload_form.html Thu Jun 10 11:17:09 2010 +0200
@@ -1,4 +1,5 @@
-{% extends "admin/ldt_utils/app_action.html" %} {# import an ldt #}
+{% extends "admin/ldt_utils/app_action.html" %}
+{# import an ldt #}
{% block content %}
<p>Vous pouvez importer un fichier ldt ou un zip qui compresse un
fichier .ldt et plusieurs fichiers .iri.</p>
@@ -10,7 +11,9 @@
<div>
<p>{{ message }}</p>
</div>
-{% endif %} {% if form %}
+{% endif %}
+
+{% if form %}
<form method="post" enctype="multipart/form-data" action="">{% csrf_token %}
<table>
--- a/web/ldt/ldt_utils/templates/ldt/ldt_utils/copy_ldt.html Thu Jun 10 04:16:26 2010 +0200
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/copy_ldt.html Thu Jun 10 11:17:09 2010 +0200
@@ -9,10 +9,11 @@
<body>
<div id="add_contribution">
<div class="title">{% trans "Copy your project" %}</div>
-<form action="" method="POST">{% csrf_token %} <label for="title">{%
-trans "Title" %}:</label> <input class="inputbox required" type="text"
- name="title" size="80" ; value="" id="title" /> <input class="button"
- id="ldt_submit" type="submit" value="{% trans 'Copy' %}" /></form>
+
+<form action="" method="POST">{% csrf_token %}
+ <label for="title">{%trans "Title" %}:</label>
+ <input class="inputbox required" type="text" name="title" size="80" value="" id="title" />
+ <input class="button" id="ldt_submit" type="submit" value="{% trans 'Copy' %}" /></form>
</div>
</body>
</html>
--- a/web/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html Thu Jun 10 04:16:26 2010 +0200
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html Thu Jun 10 11:17:09 2010 +0200
@@ -4,15 +4,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
-<link rel="stylesheet" href="{{BASE_URL}}static/ldt/css/ldt.css" />
+ <link rel="stylesheet" href="{{BASE_URL}}static/ldt/css/ldt.css" />
</head>
<body>
<div id="add_contribution">
<div class="title">{% trans "Create your project" %}</div>
-<form action="{{create_project_action}}" method="POST">{% csrf_token %} <label for="title">{% trans "Title" %}:</label> <input
- class="inputbox required" type="text" name="title" size="80" ; value=""
- id="title" />
-
+<form action="{{create_project_action}}" method="POST">
+{% csrf_token %}
+<label for="title">{% trans "Title" %}:</label>
+<input class="inputbox required" type="text" name="title" size="80" ; value="" id="title" />
<div class="title">{% trans "List of contents" %}</div>
<ul class='contentlist'>
{% for content in contents %}
@@ -20,9 +20,8 @@
checked="true" />{{content.iri_id}}</li>
{% endfor %}
</ul>
-
-<input class="button" id="ldt_submit" type="submit"
- value="{% trans 'Create' %}" /></form>
+<input class="button" id="ldt_submit" type="submit" value="{% trans 'Create' %}" />
+</form>
</div>
</body>
</html>
--- a/web/ldt/ldt_utils/templates/ldt/ldt_utils/ldt_list.html Thu Jun 10 04:16:26 2010 +0200
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/ldt_list.html Thu Jun 10 11:17:09 2010 +0200
@@ -1,5 +1,7 @@
-{% extends "ldt/user/user_base.html" %} {# list of projects ldt #} {%
-load i18n %} {% block js_import %}{{ block.super }}
+{% extends "ldt/user/user_base.html" %}
+{# list of projects ldt #}
+{%load i18n %}
+{% block js_import %}{{ block.super }}
<script type="text/javascript"
src="{{ BASE_URL }}static/js/jquery.DOMwindow.js"></script>
<script type="text/javascript">
@@ -38,19 +40,25 @@
});
});
</script>
-{% endblock %} {% block css_import %} {{ block.super }}
-<link rel="stylesheet" type="text/css"
- href="{{ BASE_URL }}static/ldt/css/ldt.css" />
-{% endblock %} {% block breadcrumb %}
+{% endblock %}
+
+{% block css_import %}
+{{ block.super }}
+ <link rel="stylesheet" type="text/css"
+ href="{{ BASE_URL }}static/ldt/css/ldt.css" />
+{% endblock %}
+
+{% block breadcrumb %}
<li></li>
-<li><a href="{% url ldt.userpanel.views.space %}">{% trans
-"Space" %}</a></li>
+<li><a href="{% url ldt.userpanel.views.space %}">{% trans "Space" %}</a></li>
<li>{% trans "Ldt Project" %}</li>
-{% endblock %} {% block content_title %}{% trans "Ldt Project" %}{%
-endblock %} {% block iricontent %}
+{% endblock %}
+
+{% block content_title %}{% trans "Ldt Project" %}{%endblock %}
+
+{% block iricontent %}
<div id='ldtlist'><a
- href="{% url ldt.ldt.views.create_ldt_view %}" class="create_ldt_link">{%
-trans 'Create new project'%}</a>
+ href="{% url ldt.ldt_utils.views.create_ldt_view %}" class="create_ldt_link">{% trans 'Create new project'%}</a>
<table>
<caption>{% trans "Project" %}</caption>
<thead>
@@ -62,13 +70,13 @@
<tbody>
{% for ldt in ldtProjects %}
<tr>
- <th><a href="{% url ldt.ldt.views.indexProject ldt.ldt_id %}"
+ <th><a href="{% url ldt.ldt_utils.views.indexProject ldt.ldt_id %}"
class="ldt_link">{{ ldt.title }}</a></th>
{% ifequal ldt.state 2%}
- <td><a href="{% url ldt.ldt.views.unpublish ldt.ldt_id%}"><img
+ <td><a href="{% url ldt.ldt_utils.views.unpublish ldt.ldt_id%}"><img
alt="True" src="{{BASE_URL}}static/admin/img/admin/icon-yes.gif" /></td>
{% else %}
- <td><a href="{% url ldt.ldt.views.publish ldt.ldt_id %}"><img
+ <td><a href="{% url ldt.ldt_utils.views.publish ldt.ldt_id %}"><img
alt="False" src="{{BASE_URL}}static/admin/img/admin/icon-no.gif" /></td>
{% endifequal %}
</tr>
--- a/web/ldt/ldt_utils/templates/ldt/ldt_utils/search_form.html Thu Jun 10 04:16:26 2010 +0200
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/search_form.html Thu Jun 10 11:17:09 2010 +0200
@@ -1,7 +1,7 @@
{% extends "base.html" %} {% block content %}
<form method="post"
- action="{{WEB_URL}}{% url ldt.ldt.views.searchIndex %}"
+ action="{{WEB_URL}}{% url ldt.ldt_utils.views.searchIndex %}"
accept-charset="utf-8">
<table>
--- a/web/ldt/ldt_utils/urls.py Thu Jun 10 04:16:26 2010 +0200
+++ b/web/ldt/ldt_utils/urls.py Thu Jun 10 11:17:09 2010 +0200
@@ -13,7 +13,7 @@
url(r'^searchLdt/(?P<field>.*)/(?P<query>.*)$', 'views.searchLdt'),
url(r'^searchSeg/(?P<field>.*)/(?P<query>.*)$', 'views.searchSegments'),
url(r'^index/(?P<url>.*)$', 'views.index'),
- url(r'^init/(?P<method>.*)/(?P<url>.*)$', 'views.init'),
+ url(r'^init/(?P<method>.*)/(?P<url>.*)$', 'views.init', name='ldt_init'),
url(r'^ldt/(?P<url>.*)$', 'views.ldt'),
url(r'^search/loading/$', 'views.loading'),
url(r'^create/(?P<iri_id>.*)$', 'views.create_project'),
@@ -26,7 +26,7 @@
urlpatterns += patterns('ldt.ldt_utils',
url(r'^space/ldt/$', 'views.list_ldt'),
url(r'^space/ldt/indexproject/(?P<id>.*)$', 'views.indexProject'),
- url(r'^space/ldt/init/(?P<method>.*)/(?P<url>.+)$', 'views.init'),
+ url(r'^space/ldt/init/(?P<method>.*)/(?P<url>.+)$', 'views.init', name='space_ldt_init'),
url(r'^space/ldt/project/(?P<id>.*)$', 'views.ldtProject'),
url(r'^space/ldt/create/$', 'views.create_ldt_view'),
url(r'^space/ldt/created_done/$', 'views.created_ldt'),
--- a/web/ldt/ldt_utils/utils.py Thu Jun 10 04:16:26 2010 +0200
+++ b/web/ldt/ldt_utils/utils.py Thu Jun 10 11:17:09 2010 +0200
@@ -275,13 +275,13 @@
writer.startElement(u"head")
- writer.simpleElement(u'meta', attributes={'name':'id', 'content':content.iri_id})
- writer.simpleElement(u'meta', attributes={'name':'title', 'content':content.title})
- writer.simpleElement(u'meta', attributes={'name':'author', 'content':username})
- writer.simpleElement(u'meta', attributes={'name':'contributor', 'content':username})
- writer.simpleElement(u'meta', attributes={'name':'date', 'content':datetime.date.utcnow().isoformat()})
- writer.simpleElement(u'meta', attributes={'name':'copyright', 'content':'IRI'})
- writer.simpleElement(u'meta', attributes={'name':'type', 'content':'video'})
+ writer.simpleElement(u'meta', attributes={u'name':u'id', 'content':unicode(content.iri_id)})
+ writer.simpleElement(u'meta', attributes={u'name':u'title', 'content':unicode(content.title)})
+ writer.simpleElement(u'meta', attributes={u'name':u'author', 'content':unicode(username)})
+ writer.simpleElement(u'meta', attributes={u'name':u'contributor', 'content':unicode(username)})
+ writer.simpleElement(u'meta', attributes={u'name':u'date', 'content':unicode(datetime.date.today().isoformat())})
+ writer.simpleElement(u'meta', attributes={u'name':u'copyright', 'content':u'IRI'})
+ writer.simpleElement(u'meta', attributes={u'name':u'type', 'content':u'video'})
writer.endElement(u"head")
@@ -291,22 +291,22 @@
ensemble_id = unicode(uuid.uuid1())
writer.startElement(u"ensemble",
attributes = {
- 'label':'undefined',
- 'date':datetime.date.utcnow().isoformat(),
- 'title':'autogenerated',
- 'abstract':'auto generated',
- 'id':ensemble_id,
- 'author':username
+ u'label':u'undefined',
+ u'date':unicode(datetime.date.today().isoformat()),
+ u'title':u'autogenerated',
+ u'abstract':u'auto generated',
+ u'id':ensemble_id,
+ u'author':unicode(username)
})
decoupage_id = unicode(uuid.uuid1())
writer.startElement(u"decoupage",
attributes = {
- 'height' : '10',
- 'dur':content.duration,
- 'type':'regular',
- 'date':datetime.date.utcnow().isoformat(),
- 'id':decoupage_id,
- 'author':username
+ u'height' : u'10',
+ u'dur':unicode(content.duration),
+ u'type':u'regular',
+ u'date':unicode(datetime.date.today().isoformat()),
+ u'id':decoupage_id,
+ u'author':unicode(username)
})
writer.startElement(u"title")
@@ -320,22 +320,22 @@
writer.endElement(u"ensemble")
writer.endElement(u"ensembles")
- writer.simpleElement('links')
+ writer.simpleElement(u'links')
writer.startElement(u"medias")
- writer.startElement(u"media", attributes={'id':'video'})
- writer.simpleElement(u'video', attributes={'src':content.videopath,'id':uuid.uuid1(),'dur':content.duration,'begin':0})
+ writer.startElement(u"media", attributes={u'id':u'video'})
+ writer.simpleElement(u'video', attributes={u'src':unicode(content.src),u'id':unicode(uuid.uuid1()),u'dur':unicode(content.duration),u'begin':u'0'})
writer.endElement(u"media")
- writer.startElement(u"media", attributes={'id':'tool'})
- writer.simpleElement('tool')
+ writer.startElement(u"media", attributes={u'id':u'tool'})
+ writer.simpleElement(u'tool')
writer.endElement(u"media")
writer.endElement(u"medias")
- writer.startElement('display')
- writer.simpleElement('decoupage', attributes={'position':'1', 'id':decoupage_id, 'idensemble':ensemble_id})
- writer.endElement('display')
+ writer.startElement(u'display')
+ writer.simpleElement(u'decoupage', attributes={u'position':u'1', u'id':decoupage_id, u'idensemble':ensemble_id})
+ writer.endElement(u'display')
writer.endElement(u"body")
--- a/web/ldt/ldt_utils/views.py Thu Jun 10 04:16:26 2010 +0200
+++ b/web/ldt/ldt_utils/views.py Thu Jun 10 11:17:09 2010 +0200
@@ -1,10 +1,12 @@
import django.core.urlresolvers
from django.http import HttpResponse, HttpResponseRedirect
-from django.shortcuts import render_to_response, get_object_or_404
+from django.shortcuts import render_to_response, get_object_or_404, get_list_or_404
from django.template import RequestContext
from django.core.urlresolvers import reverse
from django.contrib.auth.decorators import login_required
from django.conf import settings
+from django.core import serializers
+from django.utils import simplejson
from fileimport import *
from forms import LdtImportForm, LdtAddForm, SearchForm, AddProjectForm, CopyProjectForm
from ldt.core.models import Owner
@@ -26,7 +28,7 @@
def searchForm(request):
form = SearchForm()
- return render_to_response('ldt/ldt_utils/search_form.html',{'form': form} , context_instance=RequestContext(request))
+ return render_to_response('ldt/ldt_utils_utils/search_form.html',{'form': form} , context_instance=RequestContext(request))
def searchIndex(request):
@@ -40,7 +42,7 @@
language_code = request.LANGUAGE_CODE[:2]
url = settings.WEB_URL + django.core.urlresolvers.reverse("ldt.ldt_utils.views.searchInit", args=[field, queryStr])
- return render_to_response('ldt/ldt/init_ldt.html', {'MEDIA_URL': settings.MEDIA_URL, 'colorurl': settings.MEDIA_URL+'swf/ldt/pkg/color.xml', 'i18nurl': settings.MEDIA_URL+'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.MEDIA_URL+'swf/ldt/', 'url': url}, context_instance=RequestContext(request))
+ return render_to_response('ldt/ldt_utils/init_ldt.html', {'MEDIA_URL': settings.MEDIA_URL, 'colorurl': settings.MEDIA_URL+'swf/ldt/pkg/color.xml', 'i18nurl': settings.MEDIA_URL+'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.MEDIA_URL+'swf/ldt/', 'url': url}, context_instance=RequestContext(request))
else:
resp = HttpResponse()
resp.write("<html><head></head><body>Error : No result</body></html>");
@@ -132,7 +134,7 @@
'contents': contents,
'ldtProjects': ldtProjects.reverse(),
}
- return render_to_response('ldt/ldt/ldt_list.html', context, context_instance=RequestContext(request))
+ return render_to_response('ldt/ldt_utils/ldt_list.html', context, context_instance=RequestContext(request))
def create_ldt_view(request):
if request.method == "POST" :
@@ -144,14 +146,14 @@
else:
form = LdtAddForm()
contents = Content.objects.all()
- return render_to_response('ldt/ldt/create_ldt.html', {'contents': contents, 'form': form,'create_project_action':reverse(create_ldt_view)}, context_instance=RequestContext(request))
+ return render_to_response('ldt/ldt_utils/create_ldt.html', {'contents': contents, 'form': form,'create_project_action':reverse(create_ldt_view)}, context_instance=RequestContext(request))
def created_ldt(request):
- return render_to_response('ldt/ldt/done.html', context_instance=RequestContext(request))
+ return render_to_response('ldt/ldt_utils/done.html', context_instance=RequestContext(request))
def indexProject(request, id):
- urlStr = settings.WEB_URL + reverse("ldt.ldt_utils.views.init", args=['ldtProject', id])
+ urlStr = settings.WEB_URL + reverse("space_ldt_init", args=['ldtProject', id])
posturl= settings.WEB_URL + reverse("ldt.ldt_utils.views.save_ldtProject")
language_code = request.LANGUAGE_CODE[:2]
@@ -161,7 +163,7 @@
else:
readonly = 'false'
- return render_to_response('ldt/ldt/init_ldt.html', {'MEDIA_URL': settings.MEDIA_URL, 'colorurl': settings.MEDIA_URL+'swf/ldt/pkg/color.xml', 'i18nurl': settings.MEDIA_URL+'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.MEDIA_URL+'swf/ldt/', 'url': urlStr, 'posturl': posturl, 'id': id, 'readonly': readonly}, context_instance=RequestContext(request))
+ return render_to_response('ldt/ldt_utils/init_ldt.html', {'MEDIA_URL': settings.MEDIA_URL, 'colorurl': settings.MEDIA_URL+'swf/ldt/pkg/color.xml', 'i18nurl': settings.MEDIA_URL+'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.MEDIA_URL+'swf/ldt/', 'url': urlStr, 'posturl': posturl, 'id': id, 'readonly': readonly}, context_instance=RequestContext(request))
def init(request, method, url):
ldtgen = LdtUtils()
@@ -186,15 +188,16 @@
def project_json_id(request, id):
- project = Project.objects.get(ldt_id=id)
+ project = get_object_or_404(Project,ldt_id=id)
return project_json(request, project)
+
def project_json_externalid(request, id):
+
+ res_proj = get_list_or_404(Project.objects.order_by('-modification_date'),contents__external_id = id)
- project = Project.objects.get(external_id=id)
-
- return project_json(request, project)
+ return project_json(request, res_proj[0])
@@ -207,8 +210,7 @@
ps = ProjectSerializer(project)
project_dict = ps.serialize_to_cinelab()
- json_serializer = serializers.get_serializer("json")()
- json_serializer.serialize(project_array, ensure_ascii=False, stream=resp)
+ simplejson.dump(project_dict, resp, ensure_ascii=False, indent=2)
return resp
@@ -242,7 +244,7 @@
ldtproject.save()
else:
ldt = ''
- return render_to_response('ldt/ldt/save_done.html', {'ldt': ldt, 'id':id, 'title':title, 'contents': new_contents}, context_instance=RequestContext(request))
+ return render_to_response('ldt/ldt_utils/save_done.html', {'ldt': ldt, 'id':id, 'title':title, 'contents': new_contents}, context_instance=RequestContext(request))
@login_required
def publish(request, id):
@@ -261,10 +263,10 @@
def index(request, url):
- urlStr = settings.WEB_URL + django.core.urlresolvers.reverse("ldt.ldt_utils.views.init", args=['ldt',url])
+ urlStr = settings.WEB_URL + reverse("ldt_init", args=['ldt',url])
language_code = request.LANGUAGE_CODE[:2]
- return render_to_response('ldt/ldt/init_ldt.html', {'MEDIA_URL': settings.MEDIA_URL, 'colorurl': settings.MEDIA_URL+'swf/ldt/pkg/color.xml', 'i18nurl': settings.MEDIA_URL+'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.MEDIA_URL+'swf/ldt/', 'url': urlStr, 'weburl':settings.WEB_URL+settings.BASE_URL}, context_instance=RequestContext(request))
+ return render_to_response('ldt/ldt_utils/init_ldt.html', {'MEDIA_URL': settings.MEDIA_URL, 'colorurl': settings.MEDIA_URL+'swf/ldt/pkg/color.xml', 'i18nurl': settings.MEDIA_URL+'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.MEDIA_URL+'swf/ldt/', 'url': urlStr, 'weburl':settings.WEB_URL+settings.BASE_URL}, context_instance=RequestContext(request))
def ldt(request, url, startSegment = None):
@@ -284,7 +286,7 @@
def loading(request):
- return render_to_response('ldt/ldt/loading.html', context_instance=RequestContext(request))
+ return render_to_response('ldt/ldt_utils/loading.html', context_instance=RequestContext(request))
@login_required
@@ -300,7 +302,7 @@
return HttpResponseRedirect(reverse('ldt.ldt_utils.views.indexProject', args=[project.ldt_id]))
else:
form = AddProjectForm()
- return render_to_response('ldt/ldt/create_ldt.html', {'form':form, 'contents':contents, 'iri_id':iri_id, 'create_project_action':reverse("ldt.ldt_utils.views.create_project",args=[iri_id])}, context_instance=RequestContext(request))
+ return render_to_response('ldt/ldt_utils/create_ldt.html', {'form':form, 'contents':contents, 'iri_id':iri_id, 'create_project_action':reverse("ldt.ldt_utils.views.create_project",args=[iri_id])}, context_instance=RequestContext(request))
@login_required
def copy_project(request, ldt_id):
@@ -314,5 +316,5 @@
return HttpResponseRedirect(reverse('ldt.ldt_utils.views.indexProject', args=[project.ldt_id]))
else:
form = CopyProjectForm
- return render_to_response('ldt/ldt/copy_ldt.html', {'form':form, 'project':project}, context_instance=RequestContext(request))
+ return render_to_response('ldt/ldt_utils/copy_ldt.html', {'form':form, 'project':project}, context_instance=RequestContext(request))
--- a/web/ldt/templates/admin/index.html Thu Jun 10 04:16:26 2010 +0200
+++ b/web/ldt/templates/admin/index.html Thu Jun 10 11:17:09 2010 +0200
@@ -46,14 +46,14 @@
<caption>Import</caption>
<tr>
<th>
- <a href="{% url ldt.ldt.views.importFile %}">Import an ldt</a>
+ <a href="{% url ldt.ldt_utils.views.importFile %}">Import an ldt</a>
</th>
<td>
</td>
</tr>
<tr>
<th>
- <a href="{% url ldt.ldt.views.reindex %}">Reindex</a>
+ <a href="{% url ldt.ldt_utils.views.reindex %}">Reindex</a>
</th>
<td>
</td>
--- a/web/ldt/user/templates/ldt/user/space.html Thu Jun 10 04:16:26 2010 +0200
+++ b/web/ldt/user/templates/ldt/user/space.html Thu Jun 10 11:17:09 2010 +0200
@@ -13,7 +13,7 @@
<li><a href="{% url admin:page %}">{% trans "Page" %}</a></li>
{% endif %}
{% if ldt %}
- <li><a href="{% url ldt.ldt.views.list_ldt %}">{% trans "Projets Lignes de temps" %}</a></li>
+ <li><a href="{% url ldt.ldt_utils.views.list_ldt %}">{% trans "Projets Lignes de temps" %}</a></li>
{% endif %}
</ul>
{% endblock %}