equal
deleted
inserted
replaced
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) |