View | Details | Raw Unified | Return to bug 44350 | Differences between
and this patch

Collapse All | Expand All

(-)a/ucs-school-umc-groups/umc/python/schoolgroups/__init__.py (-5 / +12 lines)
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,))

Return to bug 44350