web/ldt/ldt_utils/views.py
changeset 80 1e7732f40eee
parent 71 fc1210bbb854
child 84 6c3162d9e632
child 91 9c83809fda01
--- a/web/ldt/ldt_utils/views.py	Thu Sep 23 18:39:40 2010 +0200
+++ b/web/ldt/ldt_utils/views.py	Tue Sep 28 18:24:14 2010 +0200
@@ -16,19 +16,15 @@
 from contentindexer import *
 from projectserializer import *
 from string import Template
-from Ft.Xml import MarkupWriter
 import cgi
 import uuid
 import base64
 import lucene
-import xml.dom
-import xml.dom.ext
-import xml.dom.minidom
 import tempfile
 import urllib2
 from urllib2 import urlparse
 from jogging import logging
-
+import lxml.etree
 
     
 def searchForm(request):
@@ -65,7 +61,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):
@@ -112,21 +108,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()
@@ -187,7 +187,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):
@@ -262,32 +262,46 @@
         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")
+
+	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")
+	 
+	for pnode in result:
+	    title = pnode.get("title")
             break
-        #set new title
+
+	#set new title
         ldtproject.title=title
-        #get new content list
+	
+	#get new content list
         new_contents=[]
-        result = xml.xpath.Evaluate("/iri/medias/media", context=con)
+	result = doc.xpath("/iri/medias/media")
         for medianode in result:
-            id = medianode.attributes['id'].value
+	    id = medianode.get("id")
             new_contents.append(id)
-        # set new content list
+
+        #set new content list
         for c in ldtproject.contents.all():
             if not c.iri_id in new_contents:
-                ldtproject.contents.remove(c)           
-        ldtproject.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))
-    
+                ldtproject.contents.remove(c)
+
+	return ldtproject
+
+
+
 @login_required    
 def publish(request, id, redirect=True):
     ldt = get_object_or_404(Project, ldt_id=id)
@@ -321,8 +335,8 @@
 
 def ldt(request, url, startSegment = None):
 
-    import Ft
-    from Ft.Xml import MarkupWriter
+    ##import Ft
+    ##from Ft.Xml import MarkupWriter ## ?
     
     resp = HttpResponse(mimetype="text/xml; charset=utf-8")
     resp['Cache-Control'] = 'no-cache'
@@ -515,4 +529,4 @@
     return render_to_response('ldt/ldt_utils/create_content.html', {'content_form': content_form, 'media_form': media_form,'form_status': form_status,'create_content_action': create_content_action}, context_instance=RequestContext(request))
 
 
-    
\ No newline at end of file
+