71 ldtgen = LdtUtils() |
67 ldtgen = LdtUtils() |
72 |
68 |
73 doc = ldtgen.generateInit([field,query], 'ldt.ldt_utils.views.searchLdt', 'ldt.ldt_utils.views.searchSegments') |
69 doc = ldtgen.generateInit([field,query], 'ldt.ldt_utils.views.searchLdt', 'ldt.ldt_utils.views.searchSegments') |
74 |
70 |
75 resp = HttpResponse(mimetype="text/xml;charset=utf-8") |
71 resp = HttpResponse(mimetype="text/xml;charset=utf-8") |
76 xml.dom.ext.PrettyPrint(doc, resp) |
72 doc.write(resp, pretty_print=True) |
77 return resp |
73 return resp |
78 |
74 |
79 def searchLdt(request, field, query, edition=None): |
75 def searchLdt(request, field, query, edition=None): |
80 |
76 |
81 contentList = [] |
77 contentList = [] |
118 iri_ids = None |
114 iri_ids = None |
119 |
115 |
120 if edition is not None: |
116 if edition is not None: |
121 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"))) |
117 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"))) |
122 |
118 |
123 doc = xml.dom.getDOMImplementation().createDocument(None, "iri", None) |
119 iri = lxml.etree.Element('iri') |
|
120 doc = lxml.etree.ElementTree(iri) |
124 |
121 |
125 for resultMap in res: |
122 for resultMap in res: |
126 if iri_ids is None or resultMap['iri_id'] in iri_ids: |
123 if iri_ids is None or resultMap['iri_id'] in iri_ids: |
127 elem = doc.createElement('seg') |
124 seg = etree.SubElement(iri, 'seg') |
128 elem.setAttribute('idctt', resultMap['iri_id']) |
125 seg.set('idctt', resultMap['iri_id']) |
129 elem.setAttribute('idens', resultMap['ensemble_id']) |
126 seg.set('idens', resultMap['ensemble_id']) |
130 elem.setAttribute('iddec', resultMap['decoupage_id']) |
127 seg.set('iddec', resultMap['decoupage_id']) |
131 elem.setAttribute('idseg', resultMap['element_id']) |
128 seg.set('idseg', resultMap['element_id']) |
132 elem.setAttribute('idvue', "") |
129 seg.set('idvue', "") |
133 elem.setAttribute('crit', "") |
130 seg.set('crit', "") |
134 doc.documentElement.appendChild(elem) |
131 |
135 |
132 return doc |
136 return HttpResponse(doc.toprettyxml(encoding='utf-8'), mimetype="text/xml;charset=utf-8") |
133 |
137 |
134 return HttpResponse(lxml.etree.tostring(doc, pretty_print=True), mimetype="text/xml;charset=utf-8") |
|
135 |
|
136 |
|
137 |
138 @login_required |
138 @login_required |
139 def list_ldt(request): |
139 def list_ldt(request): |
140 contents = Content.objects.all() |
140 contents = Content.objects.all() |
141 try: |
141 try: |
142 owner = Owner.objects.get(user=request.user) |
142 owner = Owner.objects.get(user=request.user) |
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 xml.dom.ext.PrettyPrint(doc, resp) |
202 doc.write(resp, pretty_print=True) |
203 return resp |
203 return resp |
204 |
204 |
205 def ldtProject(request, id): |
205 def ldtProject(request, id): |
206 resp = HttpResponse(mimetype="text/xml") |
206 resp = HttpResponse(mimetype="text/xml") |
207 resp['Cache-Control']='no-cache, must-revalidate' |
207 resp['Cache-Control']='no-cache, must-revalidate' |
325 def save_ldtProject(request): |
325 def save_ldtProject(request): |
326 if request.method=="POST": |
326 if request.method=="POST": |
327 ldt = request.POST['ldt'] |
327 ldt = request.POST['ldt'] |
328 id = request.POST['id'] |
328 id = request.POST['id'] |
329 ldtproject=Project.objects.get(ldt_id=id) |
329 ldtproject=Project.objects.get(ldt_id=id) |
330 #save xml ldt |
330 |
|
331 #save xml ldt |
331 ldtproject.ldt=ldt |
332 ldtproject.ldt=ldt |
332 #get new title |
333 |
333 dom = xml.dom.minidom.parseString(ldt.encode( "utf-8" )) |
334 ldtproj = get_attrib(ldtproject) |
334 con = xml.xpath.Context.Context(dom, 1, 1, None) |
335 ldtproj.save() |
335 result = xml.xpath.Evaluate("/iri/project",context=con) |
|
336 for pnode in result: |
|
337 title=pnode.getAttribute("title") |
|
338 break |
|
339 #set new title |
|
340 ldtproject.title=title |
|
341 #get new content list |
|
342 new_contents=[] |
|
343 result = xml.xpath.Evaluate("/iri/medias/media", context=con) |
|
344 for medianode in result: |
|
345 id = medianode.attributes['id'].value |
|
346 new_contents.append(id) |
|
347 # set new content list |
|
348 for c in ldtproject.contents.all(): |
|
349 if not c.iri_id in new_contents: |
|
350 ldtproject.contents.remove(c) |
|
351 ldtproject.save() |
|
352 else: |
336 else: |
353 ldt = '' |
337 ldt = '' |
|
338 |
354 return render_to_response('ldt/ldt_utils/save_done.html', {'ldt': ldt, 'id':id, 'title':title, 'contents': new_contents}, context_instance=RequestContext(request)) |
339 return render_to_response('ldt/ldt_utils/save_done.html', {'ldt': ldt, 'id':id, 'title':title, 'contents': new_contents}, context_instance=RequestContext(request)) |
355 |
340 |
|
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 |
|
364 |
|
365 |
356 @login_required |
366 @login_required |
357 def publish(request, id, redirect=True): |
367 def publish(request, id, redirect=True): |
358 ldt = get_object_or_404(Project, ldt_id=id) |
368 ldt = get_object_or_404(Project, ldt_id=id) |
359 ldt.state = 2 #published |
369 ldt.state = 2 #published |
360 ldt.save() |
370 ldt.save() |
384 return render_to_response('ldt/ldt_utils/init_ldt.html', {'MEDIA_URL': settings.MEDIA_URL, 'colorurl': settings.MEDIA_URL+'swf/ldt/pkg/color.xml', 'i18nurl': settings.MEDIA_URL+'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.MEDIA_URL+'swf/ldt/', 'url': urlStr, 'weburl':settings.WEB_URL+settings.BASE_URL}, context_instance=RequestContext(request)) |
394 return render_to_response('ldt/ldt_utils/init_ldt.html', {'MEDIA_URL': settings.MEDIA_URL, 'colorurl': settings.MEDIA_URL+'swf/ldt/pkg/color.xml', 'i18nurl': settings.MEDIA_URL+'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.MEDIA_URL+'swf/ldt/', 'url': urlStr, 'weburl':settings.WEB_URL+settings.BASE_URL}, context_instance=RequestContext(request)) |
385 |
395 |
386 |
396 |
387 def ldt(request, url, startSegment = None): |
397 def ldt(request, url, startSegment = None): |
388 |
398 |
389 import Ft |
|
390 from Ft.Xml import MarkupWriter |
|
391 |
399 |
392 resp = HttpResponse(mimetype="text/xml; charset=utf-8") |
400 resp = HttpResponse(mimetype="text/xml; charset=utf-8") |
393 resp['Cache-Control'] = 'no-cache' |
401 resp['Cache-Control'] = 'no-cache' |
394 |
402 |
395 contentList = Content.objects.filter(iri_id=url) |
403 contentList = Content.objects.filter(iri_id=url) |