web/ldt/ldt_utils/views.py
changeset 85 3b70d84e661a
parent 84 6c3162d9e632
child 88 7f2c2d9adf58
--- a/web/ldt/ldt_utils/views.py	Tue Oct 12 16:35:06 2010 +0200
+++ b/web/ldt/ldt_utils/views.py	Tue Oct 12 19:09:13 2010 +0200
@@ -199,7 +199,8 @@
     resp = HttpResponse(mimetype="text/xml")
     resp['Cache-Control']='no-cache, must-revalidate'
     resp['Pragma']='no-cache'
-    doc.write(resp, pretty_print=True) 
+    
+    resp.write( etree.tostring(doc, pretty_print=True, xml_declaration=True, encoding="utf-8")) 
     return resp
        
 def ldtProject(request, id):
@@ -216,18 +217,18 @@
     
     project = get_object_or_404(Project,ldt_id=id)
 
-    return project_json(request, project)
+    return project_json(request, project, False)
 
 
 def project_json_externalid(request, id):
         
     res_proj = get_list_or_404(Project.objects.order_by('-modification_date'),contents__external_id = id)
     
-    return project_json(request, res_proj[0])
+    return project_json(request, res_proj[0], False)
 
 
 
-def project_json(request, project):
+def project_json(request, project, serialize_contents = True):
     
     if not ldt_auth.checkAccess(request.user, project):
         return HttpResponseForbidden(_("You can not access this project"))
@@ -256,7 +257,7 @@
         escape_bool = {'true': True, 'false': False, "0": False, "1": True}.get(escape_str.lower())
         
         
-    ps = ProjectSerializer(project)
+    ps = ProjectSerializer(project, serialize_contents)
     project_dict = ps.serialize_to_cinelab()
     
     json_str = simplejson.dumps(project_dict, ensure_ascii=False, indent=indent)
@@ -331,35 +332,31 @@
 	    #save xml ldt
         ldtproject.ldt=ldt
 
-        ldtproj = get_attrib(ldtproject)
-        ldtproj.save()
+
+        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)
+    
+        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))
-
+        new_contents=[]
     
-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
+    return render_to_response('ldt/ldt_utils/save_done.html', {'ldt': ldt, 'id':id, 'title':ldtproject.title, 'contents': new_contents}, context_instance=RequestContext(request))