# HG changeset patch # User ymh # Date 1276161429 -7200 # Node ID 84e31387a741f6513bace3c77ab04c92f138e6b5 # Parent 67f071c743f51c23b017c6539cd08cee37274d1b correct serialization diff -r 67f071c743f5 -r 84e31387a741 .hgignore --- 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/ diff -r 67f071c743f5 -r 84e31387a741 sbin/virtualenv/create_python_env.py --- 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: diff -r 67f071c743f5 -r 84e31387a741 sbin/virtualenv/res/src/simplejson-2.1.1.tar.gz Binary file sbin/virtualenv/res/src/simplejson-2.1.1.tar.gz has changed diff -r 67f071c743f5 -r 84e31387a741 web/eulalie/templates/eulalie/workspace.html --- 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 @@ {{ content.title }} {% trans "open ldt" %} {% trans "create project" %} + {% trans "link json by externalid" %} {% endfor %} @@ -70,6 +71,7 @@ {{ project.title }} {% trans "open ldt" %} {% trans "copy project" %} + {% trans "link json by id" %} {% endfor %} diff -r 67f071c743f5 -r 84e31387a741 web/ldt/ldt_utils/admin.py --- 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) diff -r 67f071c743f5 -r 84e31387a741 web/ldt/ldt_utils/contentindexer.py --- 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(",", ";") diff -r 67f071c743f5 -r 84e31387a741 web/ldt/ldt_utils/fileimport.py --- 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 diff -r 67f071c743f5 -r 84e31387a741 web/ldt/ldt_utils/models.py --- 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 diff -r 67f071c743f5 -r 84e31387a741 web/ldt/ldt_utils/projectserializer.py --- 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, diff -r 67f071c743f5 -r 84e31387a741 web/ldt/ldt_utils/templates/admin/ldt_utils/content/upload_form.html --- 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 %}

Vous pouvez importer un fichier ldt ou un zip qui compresse un fichier .ldt et plusieurs fichiers .iri.

@@ -10,7 +11,9 @@

{{ message }}

-{% endif %} {% if form %} +{% endif %} + +{% if form %}
{% csrf_token %} diff -r 67f071c743f5 -r 84e31387a741 web/ldt/ldt_utils/templates/ldt/ldt_utils/copy_ldt.html --- 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 @@
{% trans "Copy your project" %}
-{% csrf_token %} + +
{% csrf_token %} + + +
diff -r 67f071c743f5 -r 84e31387a741 web/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.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 @@ - +
{% trans "Create your project" %}
-
{% csrf_token %} - + +{% csrf_token %} + +
{% trans "List of contents" %}
    {% for content in contents %} @@ -20,9 +20,8 @@ checked="true" />{{content.iri_id}} {% endfor %}
- - + +
diff -r 67f071c743f5 -r 84e31387a741 web/ldt/ldt_utils/templates/ldt/ldt_utils/ldt_list.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 }} -{% endblock %} {% block css_import %} {{ block.super }} - -{% endblock %} {% block breadcrumb %} +{% endblock %} + +{% block css_import %} +{{ block.super }} + +{% endblock %} + +{% block breadcrumb %}
  • -
  • {% trans -"Space" %}
  • +
  • {% trans "Space" %}
  • {% trans "Ldt Project" %}
  • -{% endblock %} {% block content_title %}{% trans "Ldt Project" %}{% -endblock %} {% block iricontent %} +{% endblock %} + +{% block content_title %}{% trans "Ldt Project" %}{%endblock %} + +{% block iricontent %}
    {% -trans 'Create new project'%} + href="{% url ldt.ldt_utils.views.create_ldt_view %}" class="create_ldt_link">{% trans 'Create new project'%}
    @@ -62,13 +70,13 @@ {% for ldt in ldtProjects %} - {% ifequal ldt.state 2%} - {% else %} - {% endifequal %} diff -r 67f071c743f5 -r 84e31387a741 web/ldt/ldt_utils/templates/ldt/ldt_utils/search_form.html --- 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 %}
    {% trans "Project" %}
    {{ ldt.title }}TrueFalse
    diff -r 67f071c743f5 -r 84e31387a741 web/ldt/ldt_utils/urls.py --- 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.*)/(?P.*)$', 'views.searchLdt'), url(r'^searchSeg/(?P.*)/(?P.*)$', 'views.searchSegments'), url(r'^index/(?P.*)$', 'views.index'), - url(r'^init/(?P.*)/(?P.*)$', 'views.init'), + url(r'^init/(?P.*)/(?P.*)$', 'views.init', name='ldt_init'), url(r'^ldt/(?P.*)$', 'views.ldt'), url(r'^search/loading/$', 'views.loading'), url(r'^create/(?P.*)$', '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.*)$', 'views.indexProject'), - url(r'^space/ldt/init/(?P.*)/(?P.+)$', 'views.init'), + url(r'^space/ldt/init/(?P.*)/(?P.+)$', 'views.init', name='space_ldt_init'), url(r'^space/ldt/project/(?P.*)$', 'views.ldtProject'), url(r'^space/ldt/create/$', 'views.create_ldt_view'), url(r'^space/ldt/created_done/$', 'views.created_ldt'), diff -r 67f071c743f5 -r 84e31387a741 web/ldt/ldt_utils/utils.py --- 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") diff -r 67f071c743f5 -r 84e31387a741 web/ldt/ldt_utils/views.py --- 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("Error : No result"); @@ -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)) diff -r 67f071c743f5 -r 84e31387a741 web/ldt/templates/admin/index.html --- 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 @@ diff -r 67f071c743f5 -r 84e31387a741 web/ldt/user/templates/ldt/user/space.html --- 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 @@
  • {% trans "Page" %}
  • {% endif %} {% if ldt %} -
  • {% trans "Projets Lignes de temps" %}
  • +
  • {% trans "Projets Lignes de temps" %}
  • {% endif %} {% endblock %}
    Import
    - Import an ldt + Import an ldt  
    - Reindex + Reindex