src/ldt/ldt/ldt_utils/views.py
changeset 262 1105a5ed9f8f
parent 261 14b59dcd2731
parent 227 d79097e98244
child 263 eba92ea32281
equal deleted inserted replaced
261:14b59dcd2731 262:1105a5ed9f8f
   313         return HttpResponseRedirect(reverse('ldt.ldt_utils.views.published_project'))
   313         return HttpResponseRedirect(reverse('ldt.ldt_utils.views.published_project'))
   314         
   314         
   315 
   315 
   316 def search_listing(request):
   316 def search_listing(request):
   317     if not request.session.has_key('complete_results'):
   317     if not request.session.has_key('complete_results'):
   318         msg = _("Please enter valid keywords.")
   318         return HttpResponseRedirect(reverse('ldt.ldt_utils.views.published_project'))
   319         return render_to_response('ldt/ldt_utils/search_results.html', {'msg' : msg}, context_instance=RequestContext(request))
   319      
   320  
       
   321     complete_results = request.session.get('complete_results')
   320     complete_results = request.session.get('complete_results')
   322     search = request.session.get('search')
   321     search = request.session.get('search')
   323     field = request.session.get('field')
   322     field = request.session.get('field')
   324     paginator = Paginator(complete_results, settings.LDT_RESULTS_PER_PAGE)
   323     paginator = Paginator(complete_results, settings.LDT_RESULTS_PER_PAGE)
   325     language_code = request.LANGUAGE_CODE[:2]
   324     language_code = request.LANGUAGE_CODE[:2]
   383     
   382     
   384           
   383           
   385     ldtgen = LdtUtils()
   384     ldtgen = LdtUtils()
   386     #            generate_ldt(contentList, title=u"", author=u"IRI Web", web_url=u"", startSegment=None, projects=None):
   385     #            generate_ldt(contentList, title=u"", author=u"IRI Web", web_url=u"", startSegment=None, projects=None):
   387     doc = ldtgen.generate_ldt(contentList, title=u"Recherche : " + queryStr, projects=projectList)
   386     doc = ldtgen.generate_ldt(contentList, title=u"Recherche : " + queryStr, projects=projectList)
   388     doc = set_forbidden_stream(doc, request.user)        
   387     doc = set_forbidden_stream(doc, request.user)   
   389    
       
   390     doc.write(resp, pretty_print=True)
   388     doc.write(resp, pretty_print=True)
   391     
   389     
   392     return resp
   390     return resp
   393 
   391 
   394 
   392 
   449 
   447 
   450 @login_required
   448 @login_required
   451 def create_ldt_view(request):
   449 def create_ldt_view(request):
   452     permission_formset = formset_factory(PermissionForm, extra=0)
   450     permission_formset = formset_factory(PermissionForm, extra=0)
   453     groups = request.user.groups.exclude(name=settings.PUBLIC_GROUP_NAME)
   451     groups = request.user.groups.exclude(name=settings.PUBLIC_GROUP_NAME)
   454     
   452     redirect_to = ''
   455     if request.method == "POST" :
   453     if request.method == "POST" :
   456         form = LdtAddForm(request.POST)
   454         form = LdtAddForm(request.POST)
   457         form_status = "none"
   455         form_status = "none"
   458         contents = Content.safe_objects.all()
   456         contents = Content.safe_objects.all()
   459 
   457 
   461         management_form = None
   459         management_form = None
   462                 
   460                 
   463         if form.is_valid() and group_form.is_valid():
   461         if form.is_valid() and group_form.is_valid():
   464             user = request.user
   462             user = request.user
   465             
   463             
   466             p = Project.create_project(title=form.cleaned_data['title'], user=user, contents=form.cleaned_data['contents'],
   464             project = Project.create_project(title=form.cleaned_data['title'], user=user, contents=form.cleaned_data['contents'],
   467                                        description=form.cleaned_data['description'])
   465                                        description=form.cleaned_data['description'])
   468             
   466             
   469             assign_object_to_groups(p, group_form.cleaned_data)
   467             assign_object_to_groups(project, group_form.cleaned_data)
   470             form_status = "saved"
   468             form_status = "saved"
   471             contents = []
   469             is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
       
   470             if is_gecko :
       
   471                 redirect_to = reverse('index_project_full', args=[project.ldt_id])
       
   472             else:
       
   473                 return HttpResponseRedirect(reverse('index_project', args=[project.ldt_id]))  
       
   474                   
   472     else:
   475     else:
   473         form = LdtAddForm()
   476         form = LdtAddForm()
   474         contents = Content.safe_objects.all() #@UndefinedVariable
   477         contents = Content.safe_objects.all() #@UndefinedVariable
   475         
   478         
   476         perm_list = [] 
   479         perm_list = [] 
   481         management_form = permission.management_form
   484         management_form = permission.management_form
   482         group_form = zip(permission, groups)
   485         group_form = zip(permission, groups)
   483         
   486         
   484         form_status = "none"    
   487         form_status = "none"    
   485             
   488             
   486     return render_to_response('ldt/ldt_utils/create_ldt.html', {'contents': contents, 'form': form, 'group_form': group_form, 'management_form': management_form, 'form_status':form_status, 'create_project_action':reverse(create_ldt_view), 'language_code' : settings.LANGUAGE_CODE[2:]}, context_instance=RequestContext(request))
   489     return render_to_response('ldt/ldt_utils/create_ldt.html', {'contents': contents, 'form': form, 'group_form': group_form, 'management_form': management_form, 'form_status':form_status,
       
   490                                                                 'redirect_to': redirect_to, 'create_project_action':reverse(create_ldt_view), 'language_code' : settings.LANGUAGE_CODE[2:]}, context_instance=RequestContext(request))
   487      
   491      
   488 def created_ldt(request):
   492 def created_ldt(request):
   489     return render_to_response('ldt/ldt_utils/save_done.html', context_instance=RequestContext(request))
   493     return render_to_response('ldt/ldt_utils/save_done.html', context_instance=RequestContext(request))
   490 
   494 
   491 
   495 
   534     resp['Pragma'] = 'no-cache'
   538     resp['Pragma'] = 'no-cache'
   535     
   539     
   536     if project_id and project_id != "_" :
   540     if project_id and project_id != "_" :
   537         project = Project.safe_objects.get(ldt_id=project_id) #@UndefinedVariable
   541         project = Project.safe_objects.get(ldt_id=project_id) #@UndefinedVariable
   538         ldtdoc = lxml.etree.fromstring(project.ldt.encode("utf-8"))
   542         ldtdoc = lxml.etree.fromstring(project.ldt.encode("utf-8"))
   539            
       
   540         ldtdoc = set_forbidden_stream(ldtdoc, request.user)
   543         ldtdoc = set_forbidden_stream(ldtdoc, request.user)
   541         displays_node = ldtdoc.find("displays")
   544         displays_node = ldtdoc.find("displays")
   542         if not displays_node:
   545         if not displays_node:
   543             displays_node = lxml.etree.SubElement(ldtdoc, u"displays")        
   546             displays_node = lxml.etree.SubElement(ldtdoc, u"displays")        
   544         res = displays_node.xpath("display")
   547         res = displays_node.xpath("display")
   581             'idsegment' : segment_id
   584             'idsegment' : segment_id
   582         }        
   585         }        
   583         
   586         
   584         doc = ldtgen.generate_ldt(content_list, "segment : ", author=username, startSegment=start_segment)
   587         doc = ldtgen.generate_ldt(content_list, "segment : ", author=username, startSegment=start_segment)
   585         doc = set_forbidden_stream(doc, request.user)
   588         doc = set_forbidden_stream(doc, request.user)
   586 
       
   587         doc.write(resp, pretty_print=('DEBUG' in dir(settings) and settings.DEBUG))
   589         doc.write(resp, pretty_print=('DEBUG' in dir(settings) and settings.DEBUG))
   588         
   590         
   589     return resp
   591     return resp
   590         
   592         
   591 #        ldtgen.
   593    
   592     
   594 @login_required    
   593 def index_project(request, id, full=False): 
   595 def index_project(request, id, full=False): 
   594 
   596 
   595     urlStr = settings.WEB_URL + reverse("space_ldt_init", args=['ldt_project', id])
   597     urlStr = settings.WEB_URL + reverse("space_ldt_init", args=['ldt_project', id])
   596     posturl = settings.WEB_URL + reverse("ldt.ldt_utils.views.save_ldt_project")
   598     posturl = settings.WEB_URL + reverse("ldt.ldt_utils.views.save_ldt_project")
   597     language_code = request.LANGUAGE_CODE[:2]
   599     language_code = request.LANGUAGE_CODE[:2]
   612     
   614     
   613 def init(request, method, url):
   615 def init(request, method, url):
   614     ldtgen = LdtUtils()
   616     ldtgen = LdtUtils()
   615 
   617 
   616     doc = ldtgen.generate_init([url], 'ldt.ldt_utils.views.' + method, None)    
   618     doc = ldtgen.generate_init([url], 'ldt.ldt_utils.views.' + method, None)    
       
   619 
       
   620     library = doc.xpath('/iri/files/library')[0]
       
   621     for c in Content.objects.all():
       
   622         elem = lxml.etree.SubElement(library, 'file')
       
   623         elem.set('src', c.iri_url())
       
   624         elem.set('video', c.videopath)
       
   625         elem.set('title', c.title)
       
   626         elem.set('author', '')
       
   627         elem.set('category', '')
       
   628         elem.set('pict', '')
       
   629         elem.set('img', '')
   617 
   630 
   618     resp = HttpResponse(mimetype="text/xml")
   631     resp = HttpResponse(mimetype="text/xml")
   619     resp['Cache-Control'] = 'no-cache, must-revalidate'
   632     resp['Cache-Control'] = 'no-cache, must-revalidate'
   620     resp['Pragma'] = 'no-cache'
   633     resp['Pragma'] = 'no-cache'
   621 
   634 
   836 def create_project(request, iri_id): 
   849 def create_project(request, iri_id): 
   837     permission_formset = formset_factory(PermissionForm, extra=0)
   850     permission_formset = formset_factory(PermissionForm, extra=0)
   838     content = get_object_or_404(Content.safe_objects, iri_id=iri_id)
   851     content = get_object_or_404(Content.safe_objects, iri_id=iri_id)
   839     contents = [ content, ]
   852     contents = [ content, ]
   840     groups = request.user.groups.exclude(name=settings.PUBLIC_GROUP_NAME)
   853     groups = request.user.groups.exclude(name=settings.PUBLIC_GROUP_NAME)
       
   854     redirect_to = ''
       
   855     form_status = "none"
       
   856     
   841     if request.method == "POST" :
   857     if request.method == "POST" :
   842         
   858         
   843         group_form = permission_formset(request.POST)
   859         group_form = permission_formset(request.POST)
   844         management_form = None
   860         management_form = None        
   845         
       
   846         form = AddProjectForm(request.POST)
   861         form = AddProjectForm(request.POST)
       
   862         
   847         if form.is_valid() and group_form.is_valid():
   863         if form.is_valid() and group_form.is_valid():
   848             user = request.user
   864             user = request.user
   849             project = Project.create_project(title=form.cleaned_data['title'], user=user, contents=contents, description=form.cleaned_data['description'])
   865             project = Project.create_project(title=form.cleaned_data['title'], user=user, contents=contents, description=form.cleaned_data['description'])
       
   866             form_status = "saved"
   850             # Modal window is not used with firefox
   867             # Modal window is not used with firefox
   851             is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
   868             is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
   852             if is_gecko :
   869             if is_gecko :
   853                 return HttpResponseRedirect(reverse('index_project_full', args=[project.ldt_id]))
   870                 redirect_to = reverse('index_project_full', args=[project.ldt_id])
   854             else:
   871             else:
   855                 return HttpResponseRedirect(reverse('index_project', args=[project.ldt_id]))
   872                 return HttpResponseRedirect(reverse('index_project', args=[project.ldt_id]))
   856             assign_object_to_groups(project, group_form.cleaned_data)
   873             assign_object_to_groups(project, group_form.cleaned_data)
   857     else:
   874     else:
   858         form = AddProjectForm()
   875         form = AddProjectForm()
   863               
   880               
   864         management_form = permission.management_form
   881         management_form = permission.management_form
   865         group_form = zip(permission, groups)
   882         group_form = zip(permission, groups)
   866     # Modal window is not used with firefox, so we ask to submit the form in _parent in firefox case.
   883     # Modal window is not used with firefox, so we ask to submit the form in _parent in firefox case.
   867     target_parent = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
   884     target_parent = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
   868     return render_to_response('ldt/ldt_utils/create_ldt.html', {'form':form, 'contents':contents, 'groups' : groups, 'group_form': group_form, 'management_form': management_form, 'create_project_action':reverse("ldt.ldt_utils.views.create_project", args=[iri_id]), 'target_parent':target_parent}, context_instance=RequestContext(request))
   885     return render_to_response('ldt/ldt_utils/create_ldt.html', {'form':form, 'form_status': form_status, 'contents':contents,                                                               'groups' : groups, 'group_form': group_form,
       
   886                                                                 'management_form': management_form, 'redirect_to': redirect_to, 'create_project_action':reverse("ldt.ldt_utils.views.create_project", args=[iri_id]), 'target_parent':target_parent}, context_instance=RequestContext(request))
   869 
   887 
   870 @login_required
   888 @login_required
   871 def update_project(request, ldt_id):
   889 def update_project(request, ldt_id):
   872     permission_formset = formset_factory(PermissionForm, extra=0)
   890     permission_formset = formset_factory(PermissionForm, extra=0)
   873     project = get_object_or_404(Project.safe_objects, ldt_id=ldt_id)
   891     project = get_object_or_404(Project.safe_objects, ldt_id=ldt_id)
   893                 project.delete()
   911                 project.delete()
   894             form_status = 'deleted'
   912             form_status = 'deleted'
   895             form = AddProjectForm()
   913             form = AddProjectForm()
   896             group_form = permission_formset()
   914             group_form = permission_formset()
   897         else:
   915         else:
   898             form_status = 'saved' 
   916             form_status = 'none' 
   899             form = AddProjectForm(request.POST)
   917             form = AddProjectForm(request.POST)
   900             group_form = permission_formset(request.POST)
   918             group_form = permission_formset(request.POST)
   901             
   919             
   902             if form.is_valid() and group_form.is_valid():
   920             if form.is_valid() and group_form.is_valid():
   903                 
   921                 
   910                     res[0].set("abstract", project.description)
   928                     res[0].set("abstract", project.description)
   911                     project.ldt = lxml.etree.tostring(ldt, pretty_print=True)
   929                     project.ldt = lxml.etree.tostring(ldt, pretty_print=True)
   912                     project.save()                    
   930                     project.save()                    
   913                     
   931                     
   914                 assign_object_to_groups(project, group_form.cleaned_data)
   932                 assign_object_to_groups(project, group_form.cleaned_data)
       
   933                 form_status = "saved"
   915     else:
   934     else:
   916         form = AddProjectForm({'title':unicode(project.title), 'description':unicode(project.get_description())})
   935         form = AddProjectForm({'title':unicode(project.title), 'description':unicode(project.get_description())})
   917         
   936         
   918         perm_list = [] 
   937         perm_list = [] 
   919         for group in groups:
   938         for group in groups: