src/ldt/ldt/ldt_utils/views.py
changeset 264 47c83e79e3c4
parent 263 eba92ea32281
child 265 491d057cbfd2
equal deleted inserted replaced
263:eba92ea32281 264:47c83e79e3c4
    64 
    64 
    65 @login_required
    65 @login_required
    66 def groups(request): 
    66 def groups(request): 
    67 
    67 
    68     # get list of all published projects
    68     # get list of all published projects
    69     group_list = request.user.groups.exclude(name=settings.PUBLIC_GROUP_NAME) #@UndefinedVariable
    69     group_list = request.user.groups.exclude(name=settings.PUBLIC_GROUP_NAME)
    70     checker = ObjectPermissionChecker(request.user)
    70     checker = ObjectPermissionChecker(request.user)
    71     
    71     
    72     group_list = list(group_list.all())
    72     group_list = sorted(group_list.all(), key=lambda group: group.name.lower())
       
    73     
    73     for group in group_list:
    74     for group in group_list:
    74         if checker.has_perm('change_group', group):
    75         if checker.has_perm('change_group', group):
    75             group.change = True
    76             group.change = True
    76 
    77 
    77     is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
    78     is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
   231         group_list = request.user.groups.filter(title__icontains=filter) 
   232         group_list = request.user.groups.filter(title__icontains=filter) 
   232     else:
   233     else:
   233         group_list = request.user.groups.all()
   234         group_list = request.user.groups.all()
   234         
   235         
   235     group_list = group_list.exclude(name=settings.PUBLIC_GROUP_NAME)
   236     group_list = group_list.exclude(name=settings.PUBLIC_GROUP_NAME)
       
   237     group_list = sorted(group_list.all(), key=lambda group: group.name.lower())
   236     checker = ObjectPermissionChecker(request.user)
   238     checker = ObjectPermissionChecker(request.user)
   237     for g in group_list:
   239     for g in group_list:
   238         if checker.has_perm('change_group', g):
   240         if checker.has_perm('change_group', g):
   239             g.change = True
   241             g.change = True
   240         
   242         
   377         #if edition is not None:
   379         #if edition is not None:
   378         #    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")))            
   380         #    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")))            
   379         #    id_list = filter(lambda id: id in id_list, ids_editions)
   381         #    id_list = filter(lambda id: id in id_list, ids_editions)
   380             
   382             
   381         contentList = Content.objects.filter(iri_id__in=id_list)        #@UndefinedVariable
   383         contentList = Content.objects.filter(iri_id__in=id_list)        #@UndefinedVariable
   382         projectList = Project.safe_objects.filter(ldt_id__in=projId_list)
   384         projectList = Project.safe_objects.filter(ldt_id__in=projId_list)    
   383     
       
   384           
   385           
   385     ldtgen = LdtUtils()
   386     ldtgen = LdtUtils()
   386     #            generate_ldt(contentList, title=u"", author=u"IRI Web", web_url=u"", startSegment=None, projects=None):
   387     #            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)
   388     doc = ldtgen.generate_ldt(contentList, title=u"Recherche : " + queryStr, projects=projectList)
   388     doc = set_forbidden_stream(doc, request.user)   
   389     doc = set_forbidden_stream(doc, request.user)   
   453     redirect_to = ''
   454     redirect_to = ''
   454     if request.method == "POST" :
   455     if request.method == "POST" :
   455         form = LdtAddForm(request.POST)
   456         form = LdtAddForm(request.POST)
   456         form_status = "none"
   457         form_status = "none"
   457         contents = Content.safe_objects.all()
   458         contents = Content.safe_objects.all()
   458 
       
   459         group_form = permission_formset(request.POST)
   459         group_form = permission_formset(request.POST)
   460         management_form = None
       
   461                 
   460                 
   462         if form.is_valid() and group_form.is_valid():
   461         if form.is_valid() and group_form.is_valid():
   463             user = request.user
   462             user = request.user
   464             
   463             
   465             project = 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, 
   466                                        description=form.cleaned_data['description'])
   465                                              contents=form.cleaned_data['contents'],
   467             
   466                                              description=form.cleaned_data['description'])
       
   467   
   468             assign_object_to_groups(project, group_form.cleaned_data)
   468             assign_object_to_groups(project, group_form.cleaned_data)
   469             form_status = "saved"
   469             form_status = "saved"
   470             is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
   470             is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
   471             if is_gecko :
   471             if is_gecko :
   472                 redirect_to = reverse('index_project_full', args=[project.ldt_id])
   472                 redirect_to = reverse('index_project_full', args=[project.ldt_id])
   611     ldtgen = LdtUtils()
   611     ldtgen = LdtUtils()
   612 
   612 
   613     doc = ldtgen.generate_init([url], 'ldt.ldt_utils.views.' + method, None)    
   613     doc = ldtgen.generate_init([url], 'ldt.ldt_utils.views.' + method, None)    
   614 
   614 
   615     library = doc.xpath('/iri/files/library')[0]
   615     library = doc.xpath('/iri/files/library')[0]
   616     for c in Content.objects.all():
   616     for c in Content.safe_objects.all():
   617         elem = lxml.etree.SubElement(library, 'file')
   617         elem = lxml.etree.SubElement(library, 'file')
   618         elem.set('src', c.iri_url())
   618         elem.set('src', c.iri_url())
   619         elem.set('video', c.videopath)
   619         elem.set('video', c.videopath)
   620         elem.set('title', c.title)
   620         elem.set('title', c.title)
   621         elem.set('author', '')
   621         elem.set('author', '')
  1340             assign('change_group', request.user, group)
  1340             assign('change_group', request.user, group)
  1341             user_list = User.objects.filter(id__in=members_list)
  1341             user_list = User.objects.filter(id__in=members_list)
  1342             
  1342             
  1343             for user in user_list:
  1343             for user in user_list:
  1344                 user.groups.add(group)
  1344                 user.groups.add(group)
  1345                 if user in admin_list:
  1345                 if user in admin_list and user.get_profile().is_regular:
  1346                     assign('change_group', user, group)
  1346                     assign('change_group', user, group)
  1347             request.user.groups.add(group)             
  1347             request.user.groups.add(group)             
  1348             form_status = 'saved' 
  1348             form_status = 'saved' 
  1349             
  1349             
  1350     else:
  1350     else:
  1353     return render_to_response("ldt/ldt_utils/create_group.html", {'form' : form, 'form_status' : form_status, 'user_list' : user_list, 'admin_list': user_list}, context_instance=RequestContext(request))
  1353     return render_to_response("ldt/ldt_utils/create_group.html", {'form' : form, 'form_status' : form_status, 'user_list' : user_list, 'admin_list': user_list}, context_instance=RequestContext(request))
  1354 
  1354 
  1355 @login_required
  1355 @login_required
  1356 def update_group(request, group_id):
  1356 def update_group(request, group_id):
  1357     if not request.user.is_regular:
  1357     if not request.user.is_regular:
  1358         return HttpResponseServerError('<h1>User can leave a group.</h1>')
  1358         return HttpResponseServerError('<h1>User can not leave a group.</h1>')
  1359     
  1359     
  1360     group = get_object_or_404(Group, id=group_id)    
  1360     group = get_object_or_404(Group, id=group_id)    
  1361     query = Q(id=settings.ANONYMOUS_USER_ID) | Q(id=request.user.id) | Q(is_superuser=True)
  1361     query = Q(id=settings.ANONYMOUS_USER_ID) | Q(id=request.user.id) | Q(is_superuser=True)
  1362     user_list = User.objects.exclude(query)
  1362     user_list = User.objects.exclude(query)
  1363     members_list = User.objects.filter(groups__id=group_id)
  1363     members_list = User.objects.filter(groups__id=group_id)
  1391                 group.name = name
  1391                 group.name = name
  1392                 
  1392                 
  1393                 for user in User.objects.all().exclude(username=request.user.username):
  1393                 for user in User.objects.all().exclude(username=request.user.username):
  1394                     if user in members_list:                        
  1394                     if user in members_list:                        
  1395                         group.user_set.add(user)
  1395                         group.user_set.add(user)
  1396                         if user in admin_list:
  1396                         if user in admin_list and user.get_profile().is_regular:
  1397                             assign('change_group', user, group)
  1397                             assign('change_group', user, group)
  1398                         else:
  1398                         else:
  1399                             remove_perm('change_group', user, group)
  1399                             remove_perm('change_group', user, group)
  1400                     else:
  1400                     else:
  1401                         group.user_set.remove(user)
  1401                         group.user_set.remove(user)