diff -r 6c3162d9e632 -r 3b70d84e661a web/ldt/ldt_utils/views.py --- 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))