def handle(self, request, data): superset_id = data['superset_id'] member_step = self.get_step(self.member_slug) self.relationship = self._load_relationship_api() try: object_list = self.relationship._list_all_objects( request, superset_id) owners_objects_relationship = \ self.relationship._list_current_assignments(request, superset_id) # re-index by object with a owner list for easier processing # in later steps current_objects = idm_utils.swap_dict(owners_objects_relationship) # Parse the form data modified_objects = {} for obj in object_list: field_name = member_step.get_member_field_name(obj.id) modified_objects[obj.id] = data[field_name] # Create the delete and add sets objects_to_add, objects_to_delete = \ self._create_add_and_delete_sets(modified_objects, current_objects) # Add the objects for object_id in objects_to_add: for owner_id in objects_to_add[object_id]: if (not self.current_user_editable and owner_id == request.user.id): messages.warning(request, 'You can\'t edit your own roles') else: self.relationship._add_object_to_owner( self.request, superset=superset_id, owner=owner_id, obj=object_id) # Remove the objects for object_id in objects_to_delete: for owner_id in objects_to_delete[object_id]: if (not self.current_user_editable and owner_id == request.user.id): messages.warning(request, 'You can\'t edit your own roles') else: self.relationship._remove_object_from_owner( self.request, superset=superset_id, owner=owner_id, obj=object_id) return True except Exception: exceptions.handle(request, ('Failed to modify organization\'s members.')) return False
def handle(self, request, data): superset_id = data['superset_id'] member_step = self.get_step(self.member_slug) self.relationship = self._load_relationship_api() try: object_list = self.relationship._list_all_objects( request, superset_id) owners_objects_relationship = \ self.relationship._list_current_assignments(request, superset_id) # re-index by object with a owner list for easier processing # in later steps current_objects = idm_utils.swap_dict(owners_objects_relationship) # Parse the form data modified_objects = {} for obj in object_list: field_name = member_step.get_member_field_name(obj.id) modified_objects[obj.id] = data[field_name] # Create the delete and add sets objects_to_add, objects_to_delete = \ self._create_add_and_delete_sets(modified_objects, current_objects) # Add the objects for object_id in objects_to_add: for owner_id in objects_to_add[object_id]: if (not self.current_user_editable and owner_id == request.user.id): messages.warning( request, 'You can\'t edit your own roles') else: self.relationship._add_object_to_owner( self.request, superset=superset_id, owner=owner_id, obj=object_id) # Remove the objects for object_id in objects_to_delete: for owner_id in objects_to_delete[object_id]: if (not self.current_user_editable and owner_id == request.user.id): messages.warning( request, 'You can\'t edit your own roles') else: self.relationship._remove_object_from_owner( self.request, superset=superset_id, owner=owner_id, obj=object_id) return True except Exception: exceptions.handle(request, ('Failed to modify organization\'s members.')) return False
def handle(self, request, data): superset_id = data['superset_id'] member_step = self.get_step(self.member_slug) self.relationship = self._load_relationship_api() try: object_list = self.relationship._list_all_objects( request, superset_id) owners_objects_relationship = \ self.relationship._list_current_assignments(request, superset_id) # Parse the form data modified_objects = {} for application in object_list: for obj in object_list[application]: field_name = member_step.get_member_field_name( application + '-' + obj.id) modified_objects[obj.id] = data[field_name] # re-index by object with a owner list for easier processing # in later steps current_objects = idm_utils.swap_dict( owners_objects_relationship[application]) # Create the delete and add sets objects_to_add, objects_to_delete = \ self._create_add_and_delete_sets(modified_objects, current_objects) # Add the objects for object_id in objects_to_add: for owner_id in objects_to_add[object_id]: self.relationship._add_object_to_owner( self.request, superset=superset_id, owner=owner_id, obj=object_id, application=application) # Remove the objects for object_id in objects_to_delete: for owner_id in objects_to_delete[object_id]: self.relationship._remove_object_from_owner( self.request, superset=superset_id, owner=owner_id, obj=object_id, application=application) return True except Exception: exceptions.handle(request, ('Failed to modify organization\'s members.')) return False