diff -r 6c3162d9e632 -r 3b70d84e661a web/ldt/ldt_utils/utils.py --- a/web/ldt/ldt_utils/utils.py Tue Oct 12 16:35:06 2010 +0200 +++ b/web/ldt/ldt_utils/utils.py Tue Oct 12 19:09:13 2010 +0200 @@ -36,7 +36,7 @@ queryParser.setDefaultOperator(lucene.QueryParser.Operator.AND) queryObj = queryParser.parse(query) hits = indexSearcher.search(queryObj, settings.LDT_MAX_SEARCH_NUMBER) - + res = [] for hit in hits.scoreDocs: doc = indexSearcher.doc(hit.doc) @@ -44,146 +44,146 @@ indexSearcher.close() return res - def queryAll(self, query): + def queryAll(self, query): return self.query("all", query) class LdtUtils(object): def generateLdt(self, contentList, file, title = u"", author=u"IRI Web", web_url=u"", media_url="", startSegment = None, contributions=None): - iri = lxml.etree.Element(u'iri') - doc = lxml.etree.ElementTree(iri) - - project = lxml.etree.SubElement(iri, u'project') - project.set(u"id",unicode(str(uuid.uuid1()))) + iri = lxml.etree.Element(u'iri') + doc = lxml.etree.ElementTree(iri) + + project = lxml.etree.SubElement(iri, u'project') + project.set(u"id",unicode(str(uuid.uuid1()))) project.set(u"title",unicode(title)) - project.set(u"user",author) - project.set(u"abstract",u"") - - medias = lxml.etree.SubElement(iri, u"medias") - for content in contentList: - videopath = unicode(settings.STREAM_URL) - if content.videopath : - videopath = unicode(content.videopath) - media = lxml.etree.SubElement(medias, "media") - media.set(u"id",content.iri_id) - media.set(u"src",content.iri_url(web_url)) - media.set(u"video",videopath) + project.set(u"user",author) + project.set(u"abstract",u"") + + medias = lxml.etree.SubElement(iri, u"medias") + for content in contentList: + videopath = unicode(settings.STREAM_URL) + if content.videopath : + videopath = unicode(content.videopath) + media = lxml.etree.SubElement(medias, "media") + media.set(u"id",content.iri_id) + media.set(u"src",content.iri_url(web_url)) + media.set(u"video",videopath) media.set(u"pict",u"") media.set(u"extra",u"") - - if contributions is None: - contributions = [] - annotations_nodes = {} - for contrib in contributions: - ldtdoc = lxml.etree.fromstring(contrib.ldtproject.ldt.encode("utf-8")) - res = ldtdoc.xpath("/iri/annotations/content") - - for content in res: - contentid = content.get("id") - if annotations_nodes.has_key(contentid): - contentnode = annotations_nodes[contentid] - else: - contentnode = {"id":contentid, "ensembles":[]} - annotations_nodes[contentid]=contentnode - for ens in content.childNodes: - if ens.tag.endswith("ensemble"): - contentnode["ensembles"].append(ens.tag) - - - if len(annotations_nodes) > 0: - annotations = lxml.etree.SubElement(iri, "annotations") + + if contributions is None: + contributions = [] + annotations_nodes = {} + for contrib in contributions: + ldtdoc = lxml.etree.fromstring(contrib.ldtproject.ldt.encode("utf-8")) + res = ldtdoc.xpath("/iri/annotations/content") + + for content in res: + contentid = content.get("id") + if annotations_nodes.has_key(contentid): + contentnode = annotations_nodes[contentid] + else: + contentnode = {"id":contentid, "ensembles":[]} + annotations_nodes[contentid]=contentnode + for ens in content.childNodes: + if ens.tag.endswith("ensemble"): + contentnode["ensembles"].append(ens.tag) + + + if len(annotations_nodes) > 0: + annotations = lxml.etree.SubElement(iri, "annotations") + for content in contentList: + if content.content_base.iri_id in annotations_nodes: + contentnode = annotations_nodes[content.content_base.iri_id] + if contentnode is not None: + if len(contentnode["ensembles"])>0: + content = lxml.etree.SubElement(annotation, "content") + content.set("id",contentnode["id"]) + content.text = u"" + else: + content = lxml.etree.SubElement(annotation, "content") + content.set("id",contentnode["id"]) + + else: + annotations = lxml.etree.SubElement(iri, "annotations") + + + displays = lxml.etree.SubElement(iri, "displays") + if len(contentList) > 0: + display = lxml.etree.SubElement(displays, "display") + display.set(u"id",u"0") + display.set(u"title",u"generated") + display.set(u"idsel",contentList[0].iri_id) + display.set(u"tc",u"0") for content in contentList: - if content.content_base.iri_id in annotations_nodes: - contentnode = annotations_nodes[content.content_base.iri_id] - if contentnode is not None: - if len(contentnode["ensembles"])>0: - content = lxml.etree.SubElement(annotation, "content") - content.set("id",contentnode["id"]) - content.text = u"" - else: - content = lxml.etree.SubElement(annotation, "content") - content.set("id",contentnode["id"]) - - else: - annotations = lxml.etree.SubElement(iri, "annotations") - - - displays = lxml.etree.SubElement(iri, "displays") - if len(contentList) > 0: - display = lxml.etree.SubElement(displays, "display") - display.set(u"id",u"0") - display.set(u"title",u"generated") - display.set(u"idsel",contentList[0].iri_id) - display.set(u"tc",u"0") - for content in contentList: - contentd = lxml.etree.SubElement(display,"content") - contentd.set(u"id",content.iri_id) + contentd = lxml.etree.SubElement(display,"content") + contentd.set(u"id",content.iri_id) filepath = urllib.urlopen(content.iri_url()) - - udoc = lxml.etree.parse(filepath) - res = udoc.xpath("/iri/body/ensembles/ensemble/decoupage") + + udoc = lxml.etree.parse(filepath) + res = udoc.xpath("/iri/body/ensembles/ensemble/decoupage") for decoupagenode in res: - decoupage_id = decoupagenode.getAttribute(u"id") - ensemble_id = decoupagenode.parentNode.getAttribute(u"id") - decoupage_id = decoupagenode.get(u"id") - ensemble_id = decoupagenode.getparent().get(u"id") - decoupage = lxml.etree.SubElement(content,"decoupage") - decoupage.set(u"id",decoupage_id) - decoupage.set(u"idens",ensemble_id) + decoupage_id = decoupagenode.get(u"id") + ensemble_id = decoupagenode.getparent().get(u"id") + decoupage_id = decoupagenode.get(u"id") + ensemble_id = decoupagenode.getparent().get(u"id") + decoupage = lxml.etree.SubElement(contentd,"decoupage") + decoupage.set(u"id",decoupage_id) + decoupage.set(u"idens",ensemble_id) if startSegment is not None: - activeSegment = lxml.etree.SubElement(display,"activeSegment") - idas = lxml.etree.SubElement(activeSegment,"id") - idas.set(u"idctt",startSegment["idcontent"]) + activeSegment = lxml.etree.SubElement(display,"activeSegment") + idas = lxml.etree.SubElement(activeSegment,"id") + idas.set(u"idctt",startSegment["idcontent"]) idas.set(u"idens" ,startSegment["idgroup"]) idas.set(u"idcut",startSegment["idcutting"]) idas.set(u"idseg",startSegment["idsegment"]) - - edits = lxml.etree.SubElement(iri, "edits") - - doc.write(file, pretty_print=True) + + edits = lxml.etree.SubElement(iri, "edits") + + doc.write(file, pretty_print=True) def generateInit(self, url, method, search=None): - - iri = lxml.etree.Element('iri') - impl = lxml.etree.ElementTree(iri) + + iri = lxml.etree.Element('iri') + impl = lxml.etree.ElementTree(iri) - elementFiles = lxml.etree.SubElement(iri,'files') - elementInit = lxml.etree.SubElement(elementFiles, 'init') - elementfile = lxml.etree.SubElement(elementInit, 'file') + elementFiles = lxml.etree.SubElement(iri,'files') + elementInit = lxml.etree.SubElement(elementFiles, 'init') + elementfile = lxml.etree.SubElement(elementInit, 'file') - elementfile.set('src',settings.WEB_URL + django.core.urlresolvers.reverse(method, args=url)) - elementfile.set('display', '1') - if(search): - elementfile.set("segsel",settings.WEB_URL + django.core.urlresolvers.reverse(search, args=url)) + elementfile.set('src',settings.WEB_URL + django.core.urlresolvers.reverse(method, args=url)) + elementfile.set('display', '1') + if(search): + elementfile.set("segsel",settings.WEB_URL + django.core.urlresolvers.reverse(search, args=url)) # /*chemin video : tant que le serveur de media n'est pas up, */ - elementfile.set('video', settings.STREAM_URL) - elementfile.set('pict', "") - elementfile.set('extra', "") + elementfile.set('video', settings.STREAM_URL) + elementfile.set('pict', "") + elementfile.set('extra', "") - elementRecent = lxml.etree.SubElement(elementFiles, 'recent') - elementLibrary = lxml.etree.SubElement(elementFiles, 'library') + elementRecent = lxml.etree.SubElement(elementFiles, 'recent') + elementLibrary = lxml.etree.SubElement(elementFiles, 'library') username = '' id = '' - elementUser = lxml.etree.SubElement(iri, 'user') - elementUser.set('name', username) - elementUser.set('id', id) + elementUser = lxml.etree.SubElement(iri, 'user') + elementUser.set('name', username) + elementUser.set('id', id) return iri def create_ldt(project, user): + """create xml""" + contentList = project.contents.all() - """create xml""" - # create a dom iri = lxml.etree.Element('iri') doc = lxml.etree.ElementTree(iri) @@ -203,16 +203,16 @@ for content in contentList: if not idsel: idsel = content.iri_id - elementMedia = lxml.etree.SubElement(elementMedias, 'media') - elementMedia.set('id', content.iri_id) - elementMedia.set('src', content.iri_url()) + elementMedia = lxml.etree.SubElement(elementMedias, 'media') + elementMedia.set('id', content.iri_id) + elementMedia.set('src', content.iri_url()) if content.videopath and content.videopath !="": - elementMedia.set('video', content.videopath) + elementMedia.set('video', content.videopath) else: - elementMedia.set('video', settings.STREAM_URL) - elementMedia.set('pict', "") - elementMedia.set('extra', "") + elementMedia.set('video', settings.STREAM_URL) + elementMedia.set('pict', "") + elementMedia.set('extra', "") if not idsel: idsel = "" @@ -234,8 +234,8 @@ #node content for content in contentList: - elementContent = lxml.etree.SubElement(elementDisplay, 'content') - elementContent.set('id', content.iri_id) + elementContent = lxml.etree.SubElement(elementDisplay, 'content') + elementContent.set('id', content.iri_id) if not 'http' in content.iriurl: #eg: "iiiielizabethrosse/ENMI08-III_elizabethrosse.iri" @@ -243,18 +243,17 @@ else: url =content.iriurl file = urllib.urlopen(url) - doc = lxml.etree.parse(file) - res = doc.xpath("/iri/body/ensembles/ensemble/decoupage") + doc = lxml.etree.parse(file) + res = doc.xpath("/iri/body/ensembles/ensemble/decoupage") - - #node decoupage + #node decoupage for decoupagenode in res: - decoupage_id = decoupagenode.attrib(u"id") - parent= decoupagenode.getparent() - ensemble_id = parent.attrib(u"id") - elementDecoupage = etree.SubElement(elementContent, 'decoupage') - elementDecoupage.set('idens', ensemble_id) - elementDecoupage.set('id', decoupage_id) + decoupage_id = decoupagenode.get(u"id") + parent= decoupagenode.getparent() + ensemble_id = parent.get(u"id") + elementDecoupage = lxml.etree.SubElement(elementContent, 'decoupage') + elementDecoupage.set('idens', ensemble_id) + elementDecoupage.set('id', decoupage_id) #node edits elementEdits = lxml.etree.SubElement(iri, 'edits') @@ -280,10 +279,10 @@ ldt = lxml.etree.fromstring(project.ldt.encode("utf-8")) res = ldt.xpath("/iri/project") for elementProject in res: - elementProject.set('abstract', "") - elementProject.set('title', new_project.title) - elementProject.set('user', user.username) - elementProject.set('id', new_project.ldt_id) + elementProject.set('abstract', "") + elementProject.set('title', new_project.title) + elementProject.set('user', user.username) + elementProject.set('id', new_project.ldt_id) new_project.ldt = lxml.etree.tostring(ldt, pretty_print=True)