|
Lines 120-127
def get(self, request, ldap_user_read=None, ldap_position=None):
Link Here
|
| 120 |
self.finished(request.id, [result]) |
120 |
self.finished(request.id, [result]) |
| 121 |
return |
121 |
return |
| 122 |
|
122 |
|
|
|
123 |
result['members'] = self._get_members(request, group, result.pop('users', []), ldap_user_read) |
| 124 |
|
| 125 |
self.finished(request.id, [result, ]) |
| 126 |
|
| 127 |
def _get_members(self, request, group, users, ldap_user_read=None): |
| 123 |
members = [] |
128 |
members = [] |
| 124 |
for member_dn in result.pop('users', []): |
129 |
for member_dn in users: |
| 125 |
try: |
130 |
try: |
| 126 |
user = User.from_dn(member_dn, None, ldap_user_read) |
131 |
user = User.from_dn(member_dn, None, ldap_user_read) |
| 127 |
except udm_exceptions.noObject: |
132 |
except udm_exceptions.noObject: |
|
Lines 136-144
def get(self, request, ldap_user_read=None, ldap_position=None):
Link Here
|
| 136 |
elif request.flavor == 'workgroup-admin' and not user.is_student(ldap_user_read) and not user.is_administrator(ldap_user_read) and not user.is_staff(ldap_user_read) and not user.is_teacher(ldap_user_read): |
141 |
elif request.flavor == 'workgroup-admin' and not user.is_student(ldap_user_read) and not user.is_administrator(ldap_user_read) and not user.is_staff(ldap_user_read) and not user.is_teacher(ldap_user_read): |
| 137 |
continue # only display school users |
142 |
continue # only display school users |
| 138 |
members.append({'id': user.dn, 'label': Display.user(user.get_udm_object(ldap_user_read))}) |
143 |
members.append({'id': user.dn, 'label': Display.user(user.get_udm_object(ldap_user_read))}) |
| 139 |
result['members'] = members |
144 |
return members |
| 140 |
|
|
|
| 141 |
self.finished(request.id, [result, ]) |
| 142 |
|
145 |
|
| 143 |
@sanitize(DictSanitizer(dict(object=DictSanitizer({}, required=True)))) |
146 |
@sanitize(DictSanitizer(dict(object=DictSanitizer({}, required=True)))) |
| 144 |
@LDAP_Connection(USER_READ, MACHINE_WRITE) |
147 |
@LDAP_Connection(USER_READ, MACHINE_WRITE) |
|
Lines 165-172
def put(self, request, ldap_machine_write=None, ldap_user_read=None, ldap_positi
Link Here
|
| 165 |
except udm_exceptions.noObject: |
168 |
except udm_exceptions.noObject: |
| 166 |
raise UMC_Error('unknown group object') |
169 |
raise UMC_Error('unknown group object') |
| 167 |
|
170 |
|
|
|
171 |
old_members = self._get_members(request, group_from_ldap, group_from_ldap.users, ldap_user_read) |
| 172 |
removed_members = set(old_members) - set(group_from_umc['members']) |
| 173 |
|
| 168 |
MODULE.info('Modifying group "%s" with members: %s' % (group_from_ldap.dn, group_from_ldap.users)) |
174 |
MODULE.info('Modifying group "%s" with members: %s' % (group_from_ldap.dn, group_from_ldap.users)) |
| 169 |
MODULE.info('New members: %s' % group_from_umc['members']) |
175 |
MODULE.info('New members: %s' % group_from_umc['members']) |
|
|
176 |
MODULE.info('Removed members: %s' % (removed_members,)) |
| 170 |
|
177 |
|
| 171 |
if request.flavor == 'workgroup-admin': |
178 |
if request.flavor == 'workgroup-admin': |
| 172 |
# do not allow groups to be renamed in order to avoid conflicts with shares |
179 |
# do not allow groups to be renamed in order to avoid conflicts with shares |
|
Lines 208-214
def put(self, request, ldap_machine_write=None, ldap_user_read=None, ldap_positi
Link Here
|
| 208 |
raise UMC_Error(_('User %s is not a student.') % (Display.user(user.get_udm_object(ldap_machine_write)),)) |
215 |
raise UMC_Error(_('User %s is not a student.') % (Display.user(user.get_udm_object(ldap_machine_write)),)) |
| 209 |
users.append(user.dn) |
216 |
users.append(user.dn) |
| 210 |
|
217 |
|
| 211 |
group_from_ldap.users = list(set(users).intersection(set(group_from_umc['members']))) # remove removed users |
218 |
group_from_ldap.users = list(set(users) - removed_members) |
| 212 |
try: |
219 |
try: |
| 213 |
success = group_from_ldap.modify(ldap_machine_write) |
220 |
success = group_from_ldap.modify(ldap_machine_write) |
| 214 |
MODULE.info('Modified, group has now members: %s' % (group_from_ldap.users,)) |
221 |
MODULE.info('Modified, group has now members: %s' % (group_from_ldap.users,)) |