src/ldt/ldt/security/utils.py
changeset 251 81417fd477b0
parent 245 953228fcbb56
child 260 3d9cb9b6ff8d
equal deleted inserted replaced
250:ff7ccbbba329 251:81417fd477b0
     1 from django.conf import settings
     1 from django.conf import settings
     2 from django.contrib.contenttypes.models import ContentType
     2 from django.contrib.contenttypes.models import ContentType
     3 from django.contrib.auth.models import Group
     3 from django.contrib.auth.models import Group
       
     4 from guardian.core import ObjectPermissionChecker
     4 from guardian.shortcuts import assign, remove_perm
     5 from guardian.shortcuts import assign, remove_perm
     5 
     6 
     6 try:
     7 try:
     7     from threading import local
     8     from threading import local
     8 except ImportError:
     9 except ImportError:
    78     
    79     
    79     cls.safe_objects.user = old_user 
    80     cls.safe_objects.user = old_user 
    80     
    81     
    81     return xml
    82     return xml
    82 
    83 
       
    84 def add_change_attr(user, obj_list):
       
    85     if len(obj_list) == 0:
       
    86         return []
       
    87     
       
    88     model_name = obj_list[0].__class__.__name__.lower()
       
    89     ctype = ContentType.objects.get(model=model_name)
       
    90     cls = ctype.model_class()
       
    91     
       
    92     checker = ObjectPermissionChecker(user)
       
    93     perm_name = "%s.change_%s" % (cls._meta.app_label, model_name)
       
    94         
       
    95     for obj in obj_list:
       
    96         if checker.has_perm(perm_name, obj):
       
    97             obj.change = True
       
    98         else:
       
    99             obj.change = False
       
   100             
       
   101     return obj_list
       
   102         
       
   103 
    83 def assign_project_to_groups(project, permissions):
   104 def assign_project_to_groups(project, permissions):
    84     for elem in permissions:
   105     for elem in permissions:
    85         group = Group.objects.get(id=elem['group'])
   106         group = Group.objects.get(id=elem['group'])
    86         if elem['share']:
   107         if elem['share']:
    87             assign('view_project', group, project)
   108             assign('view_project', group, project)