web/ldt_utils/ldt/views.py
changeset 5 ae8593287883
parent 4 7c994c98d1df
child 6 7256b057c180
--- a/web/ldt_utils/ldt/views.py	Tue Jun 08 15:31:42 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,287 +0,0 @@
-import django.core.urlresolvers
-from django.http import HttpResponse, HttpResponseRedirect
-from django.shortcuts import render_to_response, get_object_or_404
-from django.template import RequestContext
-from django.core.urlresolvers import reverse
-from django.contrib.auth.decorators import login_required
-from django.conf import settings
-from fileimport import *
-from forms import LdtImportForm, LdtAddForm, SearchForm, AddProjectForm, CopyProjectForm
-from ldt.core.models import Owner
-from models import *
-from utils import *
-from contentindexer import *
-from string import Template
-from Ft.Xml import MarkupWriter
-import cgi
-import uuid
-import base64
-import lucene
-import xml.dom
-import xml.dom.ext
-import xml.dom.minidom
-
-
-    
-def searchForm(request):
-    form = SearchForm()
-    return render_to_response('ldt/ldt/search_form.html',{'form': form} , context_instance=RequestContext(request))    
-
-def searchIndex(request):
-    
-    sform = SearchForm(request.POST)
-    if sform.is_valid():
-        search = sform.cleaned_data["search"]
-    
-    
-        queryStr = base64.urlsafe_b64encode(search.encode('utf8'))
-        field = request.POST["field"]
-        language_code = request.LANGUAGE_CODE[:2]
-    
-        url = settings.WEB_URL + django.core.urlresolvers.reverse("ldt.ldt_utils.views.searchInit", args=[field, queryStr])
-        return render_to_response('ldt/ldt/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': url}, context_instance=RequestContext(request))
-    else:
-        resp = HttpResponse()
-        resp.write("<html><head></head><body>Error : No result</body></html>");
-
-def searchIndexGet(request, field, query):
-
-    language_code = request.LANGUAGE_CODE[:2]
-    url = settings.WEB_URL + django.core.urlresolvers.reverse("ldt.ldt_utils.views.searchInit", args=[field, query])
-    return render_to_response('irisuser/ldt/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': url}, context_instance=RequestContext(request))
-
-def searchInit(request, field, query):
-    
-    ldtgen = LdtUtils()
-    
-    doc = ldtgen.generateInit([field,query], 'ldt.ldt_utils.views.searchLdt', 'ldt.ldt_utils.views.searchSegments')
-    
-    resp = HttpResponse(mimetype="text/xml;charset=utf-8")
-    xml.dom.ext.PrettyPrint(doc, resp)
-    return resp
-
-def searchLdt(request, field, query, edition=None):
-    
-    contentList = []
-    resp = HttpResponse(mimetype="text/xml")
-    queryStr = ""
-
-    if query and len(query)>0:        
-        queryStr = base64.urlsafe_b64decode(query.encode("ascii")).decode("utf8")
-        searcher = LdtSearch()
-        ids = {}
-        
-        for result in searcher.query(field, queryStr):
-            ids[result["iri_id"]] = ""            
-
-        id_list = ids.keys()
-        
-        if edition is not None:
-            ids_editions = 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")))            
-            id_list = filter(lambda id: id in id_list, ids_editions)
-            
-        contentList = Content.objects.filter(iri_id__in=id_list)        
-
-            
-    ldtgen = LdtUtils()
-    ldtgen.generateLdt(contentList, file=resp, title = u"Recherche : " + queryStr)
-    
-    return resp
-
-
-def searchSegments(request, field, query, edition=None):
-    
-    if query and len(query)>0:
-        searcher = LdtSearch()
-        
-        queryStr = base64.urlsafe_b64decode(query.encode("ascii")).decode("utf8")
-        res = searcher.query(field, queryStr)
-    else:
-        res = []
-        
-    iri_ids = None
-    
-    if edition is not None:
-        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")))
-
-    doc = xml.dom.getDOMImplementation().createDocument(None, "iri", None)
-
-    for resultMap in res:
-        if iri_ids is None or resultMap['iri_id'] in iri_ids:
-            elem = doc.createElement('seg')
-            elem.setAttribute('idctt', resultMap['iri_id'])
-            elem.setAttribute('idens', resultMap['ensemble_id'])
-            elem.setAttribute('iddec', resultMap['decoupage_id'])
-            elem.setAttribute('idseg', resultMap['element_id'])
-            elem.setAttribute('idvue', "")
-            elem.setAttribute('crit', "")
-            doc.documentElement.appendChild(elem)
-
-    return HttpResponse(doc.toprettyxml(encoding='utf-8'), mimetype="text/xml;charset=utf-8")
-    
-@login_required         
-def list_ldt(request):
-    contents = Content.objects.all()
-    try:
-        owner = Owner.objects.get(user=request.user)
-    except:
-        return HttpResponseRedirect(settings.LOGIN_URL)
-    ldtProjects = Project.objects.filter(owner=owner)
-    context={
-    'contents': contents,
-    'ldtProjects': ldtProjects.reverse(),
-    }
-    return render_to_response('ldt/ldt/ldt_list.html', context, context_instance=RequestContext(request))
-
-def create_ldt_view(request):
-    if request.method == "POST" :
-        form = LdtAddForm(request.POST)
-        if form.is_valid():
-            user = request.user
-            Project.create_project(title=form.cleaned_data['title'], user=user, contents=form.cleaned_data['contents'])
-            return HttpResponseRedirect(reverse("ldt.ldt_utils.views.list_ldt"))
-    else:
-        form = LdtAddForm()
-        contents = Content.objects.all()    
-        return render_to_response('ldt/ldt/create_ldt.html', {'contents': contents, 'form': form,'create_project_action':reverse(create_ldt_view)}, context_instance=RequestContext(request))
-     
-def created_ldt(request):
-    return render_to_response('ldt/ldt/done.html', context_instance=RequestContext(request))
-    
-def indexProject(request, id):
-
-    urlStr = settings.WEB_URL + reverse("ldt.ldt_utils.views.init", args=['ldtProject', id])
-    posturl= settings.WEB_URL + reverse("ldt.ldt_utils.views.save_ldtProject")
-    language_code = request.LANGUAGE_CODE[:2]
-    
-    ldt = get_object_or_404(Project, ldt_id=id)
-    if ldt.state ==2: #published
-        readonly = 'true'
-    else:
-        readonly = 'false'
-    
-    return render_to_response('ldt/ldt/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, 'posturl': posturl, 'id': id, 'readonly': readonly}, context_instance=RequestContext(request))
-    
-def init(request, method, url):
-    ldtgen = LdtUtils()
-
-    doc = ldtgen.generateInit([url], 'ldt.ldt_utils.views.'+method, None)
-
-    resp = HttpResponse(mimetype="text/xml")
-    resp['Cache-Control']='no-cache, must-revalidate'
-    resp['Pragma']='no-cache'
-    xml.dom.ext.PrettyPrint(doc, resp)
-    return resp
-       
-def ldtProject(request, id):
-    resp = HttpResponse(mimetype="text/xml")
-    resp['Cache-Control']='no-cache, must-revalidate'
-    resp['Pragma']='no-cache'
-    
-    project = Project.objects.get(ldt_id=id)
-    resp.write(project.ldt)
-    return resp
-
-def save_ldtProject(request):
-    if request.method=="POST":
-        ldt = request.POST['ldt']
-        id = request.POST['id']
-        ldtproject=Project.objects.get(ldt_id=id)
-        #save xml ldt
-        ldtproject.ldt=ldt
-        #get new title
-        dom = xml.dom.minidom.parseString(ldt.encode( "utf-8" ))
-        con = xml.xpath.Context.Context(dom, 1, 1, None)
-        result = xml.xpath.Evaluate("/iri/project",context=con)
-        for pnode in result:
-            title=pnode.getAttribute("title")
-            break
-        #set new title
-        ldtproject.title=title
-        #get new content list
-        new_contents=[]
-        result = xml.xpath.Evaluate("/iri/medias/media", context=con)
-        for medianode in result:
-            id = medianode.attributes['id'].value
-            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/save_done.html', {'ldt': ldt, 'id':id, 'title':title, 'contents': new_contents}, context_instance=RequestContext(request))
-    
-@login_required    
-def publish(request, id):
-    ldt = get_object_or_404(Project, ldt_id=id)
-    ldt.state = 2 #published
-    ldt.save()
-    return HttpResponseRedirect(reverse("ldt.ldt_utils.views.list_ldt"))
-    
-@login_required    
-def unpublish(request, id):
-    ldt = get_object_or_404(Project, ldt_id=id)
-    ldt.state = 1 #edition
-    ldt.save()
-    return HttpResponseRedirect(reverse("ldt.ldt_utils.views.list_ldt"))
-    
-
-def index(request, url):
-    
-    urlStr = settings.WEB_URL + django.core.urlresolvers.reverse("ldt.ldt_utils.views.init", args=['ldt',url])
-    language_code = request.LANGUAGE_CODE[:2]
-    
-    return render_to_response('ldt/ldt/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))
-
-
-def ldt(request, url, startSegment = None):
-
-    import Ft
-    from Ft.Xml import MarkupWriter
-    
-    resp = HttpResponse(mimetype="text/xml; charset=utf-8")
-    resp['Cache-Control'] = 'no-cache'
-
-    contentList = Content.objects.filter(iri_id=url)
-
-    ldtgen = LdtUtils()
-    ldtgen.generateLdt(contentList, file=resp, title = contentList[0].title, startSegment=startSegment)
-
-    return resp
-
-
-def loading(request):
-     return render_to_response('ldt/ldt/loading.html', context_instance=RequestContext(request))
-
-
-@login_required
-def create_project(request, iri_id):
-
-    content = get_object_or_404(Content, iri_id=iri_id)
-    contents = [ content, ]
-    if request.method == "POST" :
-        form = AddProjectForm(request.POST)
-        if form.is_valid():
-            user=request.user
-            project = Project.create_project(title=form.cleaned_data['title'], user=user, contents=contents)
-            return HttpResponseRedirect(reverse('ldt.ldt_utils.views.indexProject', args=[project.ldt_id]))
-    else:
-        form = AddProjectForm()
-    return render_to_response('ldt/ldt/create_ldt.html', {'form':form, 'contents':contents, 'iri_id':iri_id, 'create_project_action':reverse("ldt.ldt_utils.views.create_project",args=[iri_id])}, context_instance=RequestContext(request))
-
-@login_required
-def copy_project(request, ldt_id):
-
-    project = get_object_or_404(Project, ldt_id=ldt_id)
-    if request.method == "POST" :
-        form = CopyProjectForm(request.POST)
-        if form.is_valid():
-            user=request.user
-            project = project.copy_project(title=request.POST['title'], user=user)
-            return HttpResponseRedirect(reverse('ldt.ldt_utils.views.indexProject', args=[project.ldt_id]))
-    else:
-        form = CopyProjectForm
-    return render_to_response('ldt/ldt/copy_ldt.html', {'form':form, 'project':project}, context_instance=RequestContext(request))
-