--- a/web/ldt/ldt_utils/views.py Tue Oct 12 16:11:15 2010 +0200
+++ b/web/ldt/ldt_utils/views.py Tue Oct 12 16:35:06 2010 +0200
@@ -34,10 +34,6 @@
import tempfile
import urllib2
import uuid
-import xml.dom
-import xml.dom.ext
-import xml.dom.minidom
-
def searchForm(request):
form = SearchForm()
@@ -73,7 +69,7 @@
doc = ldtgen.generateInit([field,query], 'ldt.ldt_utils.views.searchLdt', 'ldt.ldt_utils.views.searchSegments')
resp = HttpResponse(mimetype="text/xml;charset=utf-8")
- xml.dom.ext.PrettyPrint(doc, resp)
+ doc.write(resp, pretty_print=True)
return resp
def searchLdt(request, field, query, edition=None):
@@ -120,21 +116,25 @@
if edition is not None:
iri_ids = map(lambda t:t[0], filter(lambda id: id[0] is not None, Speak.objects.filter(session__day__edition=edition).order_by("session__start_ts", "order").values_list("content__iri_id")))
- doc = xml.dom.getDOMImplementation().createDocument(None, "iri", None)
+ iri = lxml.etree.Element('iri')
+ doc = lxml.etree.ElementTree(iri)
for resultMap in res:
if iri_ids is None or resultMap['iri_id'] in iri_ids:
- elem = doc.createElement('seg')
- elem.setAttribute('idctt', resultMap['iri_id'])
- elem.setAttribute('idens', resultMap['ensemble_id'])
- elem.setAttribute('iddec', resultMap['decoupage_id'])
- elem.setAttribute('idseg', resultMap['element_id'])
- elem.setAttribute('idvue', "")
- elem.setAttribute('crit', "")
- doc.documentElement.appendChild(elem)
+ seg = etree.SubElement(iri, 'seg')
+ seg.set('idctt', resultMap['iri_id'])
+ seg.set('idens', resultMap['ensemble_id'])
+ seg.set('iddec', resultMap['decoupage_id'])
+ seg.set('idseg', resultMap['element_id'])
+ seg.set('idvue', "")
+ seg.set('crit', "")
- return HttpResponse(doc.toprettyxml(encoding='utf-8'), mimetype="text/xml;charset=utf-8")
-
+ return doc
+
+ return HttpResponse(lxml.etree.tostring(doc, pretty_print=True), mimetype="text/xml;charset=utf-8")
+
+
+
@login_required
def list_ldt(request):
contents = Content.objects.all()
@@ -199,7 +199,7 @@
resp = HttpResponse(mimetype="text/xml")
resp['Cache-Control']='no-cache, must-revalidate'
resp['Pragma']='no-cache'
- xml.dom.ext.PrettyPrint(doc, resp)
+ doc.write(resp, pretty_print=True)
return resp
def ldtProject(request, id):
@@ -215,7 +215,7 @@
def project_json_id(request, id):
project = get_object_or_404(Project,ldt_id=id)
-
+
return project_json(request, project)
@@ -327,32 +327,42 @@
ldt = request.POST['ldt']
id = request.POST['id']
ldtproject=Project.objects.get(ldt_id=id)
- #save xml ldt
+
+ #save xml ldt
ldtproject.ldt=ldt
- #get new title
- dom = xml.dom.minidom.parseString(ldt.encode( "utf-8" ))
- con = xml.xpath.Context.Context(dom, 1, 1, None)
- result = xml.xpath.Evaluate("/iri/project",context=con)
- for pnode in result:
- title=pnode.getAttribute("title")
- break
- #set new title
- ldtproject.title=title
- #get new content list
- new_contents=[]
- result = xml.xpath.Evaluate("/iri/medias/media", context=con)
- for medianode in result:
- id = medianode.attributes['id'].value
- new_contents.append(id)
- # set new content list
- for c in ldtproject.contents.all():
- if not c.iri_id in new_contents:
- ldtproject.contents.remove(c)
- ldtproject.save()
+
+ ldtproj = get_attrib(ldtproject)
+ ldtproj.save()
else:
ldt = ''
+
return render_to_response('ldt/ldt_utils/save_done.html', {'ldt': ldt, 'id':id, 'title':title, 'contents': new_contents}, context_instance=RequestContext(request))
+
+def get_attrib(ldtproject):
+
+ doc = lxml.etree.fromstring(ldtproject.ldt.encode( "utf-8" ))
+ result = doc.xpath("/iri/project")
+
+ #set new title
+ ldtproject.title = result[0].get("title")
+
+ #get new content list
+ new_contents=[]
+ result = doc.xpath("/iri/medias/media")
+ for medianode in result:
+ id = medianode.get("id")
+ new_contents.append(id)
+
+ #set new content list
+ for c in ldtproject.contents.all():
+ if not c.iri_id in new_contents:
+ ldtproject.contents.remove(c)
+
+ return ldtproject
+
+
+
@login_required
def publish(request, id, redirect=True):
ldt = get_object_or_404(Project, ldt_id=id)
@@ -386,8 +396,6 @@
def ldt(request, url, startSegment = None):
- import Ft
- from Ft.Xml import MarkupWriter
resp = HttpResponse(mimetype="text/xml; charset=utf-8")
resp['Cache-Control'] = 'no-cache'