src/ldt/ldt/ldt_utils/views/group.py
changeset 1238 ffa5e70f643f
parent 1193 cd67b17d257d
child 1360 f69b5d8ba4b9
equal deleted inserted replaced
1237:036877639db6 1238:ffa5e70f643f
     1 from django.conf import settings
     1 from django.conf import settings
       
     2 from django.contrib.auth import get_user_model
     2 from django.contrib.auth.decorators import login_required
     3 from django.contrib.auth.decorators import login_required
     3 from django.contrib.auth.models import Group
     4 from django.contrib.auth.models import Group
     4 from django.db import transaction
     5 from django.db import transaction
     5 from django.http import HttpResponseServerError
     6 from django.http import HttpResponseServerError
     6 from django.shortcuts import render_to_response, get_object_or_404, redirect
     7 from django.shortcuts import render_to_response, get_object_or_404, redirect
    10 from ldt.ldt_utils.forms import GroupAddForm
    11 from ldt.ldt_utils.forms import GroupAddForm
    11 from ldt.security.cache import get_cached_checker, cached_assign
    12 from ldt.security.cache import get_cached_checker, cached_assign
    12 from ldt.security.utils import add_change_attr, get_userlist, get_userlist_group
    13 from ldt.security.utils import add_change_attr, get_userlist, get_userlist_group
    13 from ldt.user.forms import PictureForm
    14 from ldt.user.forms import PictureForm
    14 
    15 
       
    16 User = get_user_model()
    15 
    17 
    16 @login_required
    18 @login_required
    17 def get_group_projects_view(request):
    19 def get_group_projects_view(request):
    18     
    20     
    19     grp_id = request.POST["id_group"]
    21     grp_id = request.POST["id_group"]
   124             return redirect("groups-view")
   126             return redirect("groups-view")
   125         else:   
   127         else:   
   126             if form.is_valid() and picture_form.is_valid():
   128             if form.is_valid() and picture_form.is_valid():
   127                 name = form.cleaned_data['name']
   129                 name = form.cleaned_data['name']
   128                 new_member_list = form.cleaned_data['read_list']
   130                 new_member_list = form.cleaned_data['read_list']
   129                 old_member_list = group.user_set.exclude(id=request.user.id)
   131                 old_member_list = User.objects.filter(groups=group).exclude(id=request.user.id)
   130                 admin_list = form.cleaned_data['write_list']
   132                 admin_list = form.cleaned_data['write_list']
   131                 group.name = name
   133                 group.name = name
   132                 group.profile.description = form.cleaned_data['description']
   134                 group.profile.description = form.cleaned_data['description']
   133                 group.profile.save()
   135                 group.profile.save()
   134 
   136 
   135                 for user in new_member_list:
   137                 for user in new_member_list:
   136                     if not hasattr(user, 'username'):
   138                     if not hasattr(user, 'username'):
   137                         raise AttributeError('new_member_list should only contain users')
   139                         raise AttributeError('new_member_list should only contain users')
   138                     if user != request.user:                      
   140                     if user != request.user:
   139                         group.user_set.add(user)
   141                         user.groups.add(group)
   140                         if is_owner_group:
   142                         if is_owner_group:
   141                             if user in admin_list:
   143                             if user in admin_list:
   142                                 cached_assign('change_group', user, group)
   144                                 cached_assign('change_group', user, group)
   143                             else:
   145                             else:
   144                                 remove_perm('change_group', user, group)
   146                                 remove_perm('change_group', user, group)
   145                                 
   147                                 
   146                 for user in old_member_list:
   148                 for user in old_member_list:
   147                     if user not in new_member_list:
   149                     if user not in new_member_list:
   148                         group.user_set.remove(user)
   150                         user.groups.remove(group)
   149                         remove_perm('change_group', user, group)
   151                         remove_perm('change_group', user, group)
   150                                         
   152                                         
   151                 group.save()
   153                 group.save()
   152                 picture_form.save()
   154                 picture_form.save()
   153                 form_status = 'saved'                   
   155                 form_status = 'saved'                   
   166                                                                   'is_owner_group': is_owner_group, 'profile_picture_form': picture_form, 'img_container': profile_image}, context_instance=RequestContext(request))
   168                                                                   'is_owner_group': is_owner_group, 'profile_picture_form': picture_form, 'img_container': profile_image}, context_instance=RequestContext(request))
   167     
   169     
   168     
   170     
   169     
   171     
   170 @login_required
   172 @login_required
   171 def groups_filter(request, g_filter):
   173 def groups_filter(request, filter):
   172     if g_filter and len(g_filter) > 0 and g_filter[0] == '_':
   174     if filter and len(filter) > 0 and filter[0] == '_':
   173         g_filter = g_filter[1:]
   175         filter = filter[1:]
   174 
   176 
   175     if filter:
   177     if filter:
   176         group_list = request.user.groups.filter(name__icontains=g_filter)
   178         group_list = request.user.groups.filter(name__icontains=filter)
   177         search_active = True 
   179         search_active = True 
   178     else:
   180     else:
   179         group_list = request.user.groups.all()
   181         group_list = request.user.groups.all()
   180         search_active = False
   182         search_active = False
   181         
   183