14 from models import * |
14 from models import * |
15 from utils import * |
15 from utils import * |
16 from contentindexer import * |
16 from contentindexer import * |
17 from projectserializer import * |
17 from projectserializer import * |
18 from string import Template |
18 from string import Template |
19 from Ft.Xml import MarkupWriter |
|
20 import cgi |
19 import cgi |
21 import uuid |
20 import uuid |
22 import base64 |
21 import base64 |
23 import lucene |
22 import lucene |
24 import xml.dom |
|
25 import xml.dom.ext |
|
26 import xml.dom.minidom |
|
27 import tempfile |
23 import tempfile |
28 import urllib2 |
24 import urllib2 |
29 from urllib2 import urlparse |
25 from urllib2 import urlparse |
30 from jogging import logging |
26 from jogging import logging |
31 |
27 import lxml.etree |
32 |
28 |
33 |
29 |
34 def searchForm(request): |
30 def searchForm(request): |
35 form = SearchForm() |
31 form = SearchForm() |
36 return render_to_response('ldt/ldt_utils_utils/search_form.html',{'form': form} , context_instance=RequestContext(request)) |
32 return render_to_response('ldt/ldt_utils_utils/search_form.html',{'form': form} , context_instance=RequestContext(request)) |
63 ldtgen = LdtUtils() |
59 ldtgen = LdtUtils() |
64 |
60 |
65 doc = ldtgen.generateInit([field,query], 'ldt.ldt_utils.views.searchLdt', 'ldt.ldt_utils.views.searchSegments') |
61 doc = ldtgen.generateInit([field,query], 'ldt.ldt_utils.views.searchLdt', 'ldt.ldt_utils.views.searchSegments') |
66 |
62 |
67 resp = HttpResponse(mimetype="text/xml;charset=utf-8") |
63 resp = HttpResponse(mimetype="text/xml;charset=utf-8") |
68 xml.dom.ext.PrettyPrint(doc, resp) |
64 doc.write(resp, pretty_print=True) |
69 return resp |
65 return resp |
70 |
66 |
71 def searchLdt(request, field, query, edition=None): |
67 def searchLdt(request, field, query, edition=None): |
72 |
68 |
73 contentList = [] |
69 contentList = [] |
110 iri_ids = None |
106 iri_ids = None |
111 |
107 |
112 if edition is not None: |
108 if edition is not None: |
113 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"))) |
109 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"))) |
114 |
110 |
115 doc = xml.dom.getDOMImplementation().createDocument(None, "iri", None) |
111 iri = lxml.etree.Element('iri') |
|
112 doc = lxml.etree.ElementTree(iri) |
116 |
113 |
117 for resultMap in res: |
114 for resultMap in res: |
118 if iri_ids is None or resultMap['iri_id'] in iri_ids: |
115 if iri_ids is None or resultMap['iri_id'] in iri_ids: |
119 elem = doc.createElement('seg') |
116 seg = etree.SubElement(iri, 'seg') |
120 elem.setAttribute('idctt', resultMap['iri_id']) |
117 seg.set('idctt', resultMap['iri_id']) |
121 elem.setAttribute('idens', resultMap['ensemble_id']) |
118 seg.set('idens', resultMap['ensemble_id']) |
122 elem.setAttribute('iddec', resultMap['decoupage_id']) |
119 seg.set('iddec', resultMap['decoupage_id']) |
123 elem.setAttribute('idseg', resultMap['element_id']) |
120 seg.set('idseg', resultMap['element_id']) |
124 elem.setAttribute('idvue', "") |
121 seg.set('idvue', "") |
125 elem.setAttribute('crit', "") |
122 seg.set('crit', "") |
126 doc.documentElement.appendChild(elem) |
123 |
127 |
124 return doc |
128 return HttpResponse(doc.toprettyxml(encoding='utf-8'), mimetype="text/xml;charset=utf-8") |
125 |
129 |
126 return HttpResponse(lxml.etree.tostring(doc, pretty_print=True), mimetype="text/xml;charset=utf-8") |
|
127 |
|
128 |
|
129 |
130 @login_required |
130 @login_required |
131 def list_ldt(request): |
131 def list_ldt(request): |
132 contents = Content.objects.all() |
132 contents = Content.objects.all() |
133 try: |
133 try: |
134 owner = Owner.objects.get(user=request.user) |
134 owner = Owner.objects.get(user=request.user) |
185 doc = ldtgen.generateInit([url], 'ldt.ldt_utils.views.'+method, None) |
185 doc = ldtgen.generateInit([url], 'ldt.ldt_utils.views.'+method, None) |
186 |
186 |
187 resp = HttpResponse(mimetype="text/xml") |
187 resp = HttpResponse(mimetype="text/xml") |
188 resp['Cache-Control']='no-cache, must-revalidate' |
188 resp['Cache-Control']='no-cache, must-revalidate' |
189 resp['Pragma']='no-cache' |
189 resp['Pragma']='no-cache' |
190 xml.dom.ext.PrettyPrint(doc, resp) |
190 doc.write(resp, pretty_print=True) |
191 return resp |
191 return resp |
192 |
192 |
193 def ldtProject(request, id): |
193 def ldtProject(request, id): |
194 resp = HttpResponse(mimetype="text/xml") |
194 resp = HttpResponse(mimetype="text/xml") |
195 resp['Cache-Control']='no-cache, must-revalidate' |
195 resp['Cache-Control']='no-cache, must-revalidate' |
260 def save_ldtProject(request): |
260 def save_ldtProject(request): |
261 if request.method=="POST": |
261 if request.method=="POST": |
262 ldt = request.POST['ldt'] |
262 ldt = request.POST['ldt'] |
263 id = request.POST['id'] |
263 id = request.POST['id'] |
264 ldtproject=Project.objects.get(ldt_id=id) |
264 ldtproject=Project.objects.get(ldt_id=id) |
265 #save xml ldt |
265 |
|
266 #save xml ldt |
266 ldtproject.ldt=ldt |
267 ldtproject.ldt=ldt |
267 #get new title |
268 |
268 dom = xml.dom.minidom.parseString(ldt.encode( "utf-8" )) |
269 ldtproj = get_attrib(ldtproject) |
269 con = xml.xpath.Context.Context(dom, 1, 1, None) |
270 ldtproj.save() |
270 result = xml.xpath.Evaluate("/iri/project",context=con) |
271 |
271 for pnode in result: |
272 else: |
272 title=pnode.getAttribute("title") |
273 ldt = '' |
|
274 |
|
275 return render_to_response('ldt/ldt_utils/save_done.html', {'ldt': ldt, 'id':id, 'title':title, 'contents': new_contents}, context_instance=RequestContext(request)) |
|
276 |
|
277 |
|
278 def get_attrib(ldtproject): |
|
279 doc = lxml.etree.fromstring(ldtproject.ldt.encode( "utf-8" )) |
|
280 result = doc.xpath("/iri/project") |
|
281 |
|
282 for pnode in result: |
|
283 title = pnode.get("title") |
273 break |
284 break |
274 #set new title |
285 |
|
286 #set new title |
275 ldtproject.title=title |
287 ldtproject.title=title |
276 #get new content list |
288 |
|
289 #get new content list |
277 new_contents=[] |
290 new_contents=[] |
278 result = xml.xpath.Evaluate("/iri/medias/media", context=con) |
291 result = doc.xpath("/iri/medias/media") |
279 for medianode in result: |
292 for medianode in result: |
280 id = medianode.attributes['id'].value |
293 id = medianode.get("id") |
281 new_contents.append(id) |
294 new_contents.append(id) |
282 # set new content list |
295 |
|
296 #set new content list |
283 for c in ldtproject.contents.all(): |
297 for c in ldtproject.contents.all(): |
284 if not c.iri_id in new_contents: |
298 if not c.iri_id in new_contents: |
285 ldtproject.contents.remove(c) |
299 ldtproject.contents.remove(c) |
286 ldtproject.save() |
300 |
287 else: |
301 return ldtproject |
288 ldt = '' |
302 |
289 return render_to_response('ldt/ldt_utils/save_done.html', {'ldt': ldt, 'id':id, 'title':title, 'contents': new_contents}, context_instance=RequestContext(request)) |
303 |
290 |
304 |
291 @login_required |
305 @login_required |
292 def publish(request, id, redirect=True): |
306 def publish(request, id, redirect=True): |
293 ldt = get_object_or_404(Project, ldt_id=id) |
307 ldt = get_object_or_404(Project, ldt_id=id) |
294 ldt.state = 2 #published |
308 ldt.state = 2 #published |
295 ldt.save() |
309 ldt.save() |
319 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)) |
333 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)) |
320 |
334 |
321 |
335 |
322 def ldt(request, url, startSegment = None): |
336 def ldt(request, url, startSegment = None): |
323 |
337 |
324 import Ft |
338 ##import Ft |
325 from Ft.Xml import MarkupWriter |
339 ##from Ft.Xml import MarkupWriter ## ? |
326 |
340 |
327 resp = HttpResponse(mimetype="text/xml; charset=utf-8") |
341 resp = HttpResponse(mimetype="text/xml; charset=utf-8") |
328 resp['Cache-Control'] = 'no-cache' |
342 resp['Cache-Control'] = 'no-cache' |
329 |
343 |
330 contentList = Content.objects.filter(iri_id=url) |
344 contentList = Content.objects.filter(iri_id=url) |