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): |