示例#1
0
    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
示例#2
0
    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
示例#3
0
    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
示例#4
0
    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