web/ldt/ldt_utils/views.py
changeset 85 3b70d84e661a
parent 84 6c3162d9e632
child 88 7f2c2d9adf58
equal deleted inserted replaced
84:6c3162d9e632 85:3b70d84e661a
   197     doc = ldtgen.generateInit([url], 'ldt.ldt_utils.views.'+method, None)
   197     doc = ldtgen.generateInit([url], 'ldt.ldt_utils.views.'+method, None)
   198 
   198 
   199     resp = HttpResponse(mimetype="text/xml")
   199     resp = HttpResponse(mimetype="text/xml")
   200     resp['Cache-Control']='no-cache, must-revalidate'
   200     resp['Cache-Control']='no-cache, must-revalidate'
   201     resp['Pragma']='no-cache'
   201     resp['Pragma']='no-cache'
   202     doc.write(resp, pretty_print=True) 
   202     
       
   203     resp.write( etree.tostring(doc, pretty_print=True, xml_declaration=True, encoding="utf-8")) 
   203     return resp
   204     return resp
   204        
   205        
   205 def ldtProject(request, id):
   206 def ldtProject(request, id):
   206     resp = HttpResponse(mimetype="text/xml")
   207     resp = HttpResponse(mimetype="text/xml")
   207     resp['Cache-Control']='no-cache, must-revalidate'
   208     resp['Cache-Control']='no-cache, must-revalidate'
   214 
   215 
   215 def project_json_id(request, id):
   216 def project_json_id(request, id):
   216     
   217     
   217     project = get_object_or_404(Project,ldt_id=id)
   218     project = get_object_or_404(Project,ldt_id=id)
   218 
   219 
   219     return project_json(request, project)
   220     return project_json(request, project, False)
   220 
   221 
   221 
   222 
   222 def project_json_externalid(request, id):
   223 def project_json_externalid(request, id):
   223         
   224         
   224     res_proj = get_list_or_404(Project.objects.order_by('-modification_date'),contents__external_id = id)
   225     res_proj = get_list_or_404(Project.objects.order_by('-modification_date'),contents__external_id = id)
   225     
   226     
   226     return project_json(request, res_proj[0])
   227     return project_json(request, res_proj[0], False)
   227 
   228 
   228 
   229 
   229 
   230 
   230 def project_json(request, project):
   231 def project_json(request, project, serialize_contents = True):
   231     
   232     
   232     if not ldt_auth.checkAccess(request.user, project):
   233     if not ldt_auth.checkAccess(request.user, project):
   233         return HttpResponseForbidden(_("You can not access this project"))
   234         return HttpResponseForbidden(_("You can not access this project"))
   234         
   235         
   235     mimetype = request.REQUEST.get("mimetype")
   236     mimetype = request.REQUEST.get("mimetype")
   254     escape_bool = False
   255     escape_bool = False
   255     if escape_str:
   256     if escape_str:
   256         escape_bool = {'true': True, 'false': False, "0": False, "1": True}.get(escape_str.lower())
   257         escape_bool = {'true': True, 'false': False, "0": False, "1": True}.get(escape_str.lower())
   257         
   258         
   258         
   259         
   259     ps = ProjectSerializer(project)
   260     ps = ProjectSerializer(project, serialize_contents)
   260     project_dict = ps.serialize_to_cinelab()
   261     project_dict = ps.serialize_to_cinelab()
   261     
   262     
   262     json_str = simplejson.dumps(project_dict, ensure_ascii=False, indent=indent)
   263     json_str = simplejson.dumps(project_dict, ensure_ascii=False, indent=indent)
   263     
   264     
   264     if callback is not None:
   265     if callback is not None:
   329         ldtproject=Project.objects.get(ldt_id=id)
   330         ldtproject=Project.objects.get(ldt_id=id)
   330 
   331 
   331 	    #save xml ldt
   332 	    #save xml ldt
   332         ldtproject.ldt=ldt
   333         ldtproject.ldt=ldt
   333 
   334 
   334         ldtproj = get_attrib(ldtproject)
   335 
   335         ldtproj.save()
   336         doc = lxml.etree.fromstring(ldtproject.ldt.encode( "utf-8" ))
       
   337         result = doc.xpath("/iri/project")
       
   338         
       
   339         #set new title
       
   340         ldtproject.title = result[0].get("title")
       
   341         
       
   342         #get new content list
       
   343         new_contents=[]
       
   344         result = doc.xpath("/iri/medias/media")
       
   345         for medianode in result:
       
   346             id = medianode.get("id")
       
   347             new_contents.append(id)
       
   348     
       
   349         #set new content list
       
   350         for c in ldtproject.contents.all():
       
   351             if not c.iri_id in new_contents:
       
   352                 ldtproject.contents.remove(c)
       
   353     
       
   354         ldtproject.save()
   336     else:
   355     else:
   337         ldt = ''
   356         ldt = ''
   338     
   357         new_contents=[]
   339     return render_to_response('ldt/ldt_utils/save_done.html', {'ldt': ldt, 'id':id, 'title':title, 'contents': new_contents}, context_instance=RequestContext(request))
   358     
   340 
   359     return render_to_response('ldt/ldt_utils/save_done.html', {'ldt': ldt, 'id':id, 'title':ldtproject.title, 'contents': new_contents}, context_instance=RequestContext(request))
   341     
       
   342 def get_attrib(ldtproject):
       
   343 
       
   344     doc = lxml.etree.fromstring(ldtproject.ldt.encode( "utf-8" ))
       
   345     result = doc.xpath("/iri/project")
       
   346 	
       
   347 	#set new title
       
   348     ldtproject.title = result[0].get("title")
       
   349 	
       
   350 	#get new content list
       
   351     new_contents=[]
       
   352     result = doc.xpath("/iri/medias/media")
       
   353     for medianode in result:
       
   354         id = medianode.get("id")
       
   355         new_contents.append(id)
       
   356 
       
   357     #set new content list
       
   358     for c in ldtproject.contents.all():
       
   359         if not c.iri_id in new_contents:
       
   360             ldtproject.contents.remove(c)
       
   361 
       
   362 	return ldtproject
       
   363 
   360 
   364 
   361 
   365 
   362 
   366 @login_required    
   363 @login_required    
   367 def publish(request, id, redirect=True):
   364 def publish(request, id, redirect=True):