예제 #1
0
    def save_object(self):
        """ Custom save

        Returns:

        """
        try:
            return self.save()
        except NotUniqueError:
            raise exceptions.ModelError(
                "Unable to save the navigation object: not unique.")
        except Exception as ex:
            raise exceptions.ModelError(ex.message)
예제 #2
0
    def save_object(self):
        """Custom save

        Returns:

        """
        try:
            return self.save()
        except NotUniqueError:
            raise exceptions.ModelError(
                "Unable to save the document: not unique.")
        except Exception as ex:
            raise exceptions.ModelError(str(ex))
예제 #3
0
 def get_by_name(record_name):
     try:
         return LocalId.objects.get(record_name=record_name)
     except mongoengine_errors.DoesNotExist as dne:
         raise exceptions.DoesNotExist(str(dne))
     except Exception as exc:
         raise exceptions.ModelError(str(exc))
예제 #4
0
 def get():
     try:
         return PidSettings.objects.first()
     except mongoengine_errors.DoesNotExist:
         return None
     except Exception as exc:
         raise exceptions.ModelError(str(exc))
예제 #5
0
def set_status(data, status, user):
    """ Set the status of a data

    Args:
        data:
        status:
        user:

    Returns: Data

    """
    if status == DataStatus.DELETED and (data.workspace is None
                                         or data.workspace.is_public is False):
        raise exceptions.ModelError(
            "the " + get_data_label() +
            " should be published if the targeted status is 'Deleted'")

    # build the xsd tree
    xml_tree = XSDTree.build_tree(data.xml_content)
    # get the root
    root = xml_tree.getroot()
    # and change the attribute
    root.attrib['status'] = status
    # update the xml content
    data.xml_content = XSDTree.tostring(xml_tree)
    # upsert the data
    return data_api.upsert(data, user)
예제 #6
0
    def test_get_raises_exception_if_internal_error(self, mock_get):
        # Arrange
        mock_get.side_effect = exceptions.ModelError("Error")

        # Act + Assert
        with self.assertRaises(exceptions.ModelError):
            settings_api.get()
예제 #7
0
def parse_and_save(data, current_template):
    """Parse the data to create custom resources and save them.

    Args:
     data: dict
     current_template:
    Returns:
    """

    for key in data.keys():
        resource = data[key]

        custom_resource = CustomResource(template=current_template)

        if _is_type_all(resource):
            custom_resource = _create_custom_resource_type_all(
                custom_resource, resource, key)
            # TODO: make sure only one type = 'all' ?
        else:
            custom_resource = _create_custom_resource(custom_resource,
                                                      resource, key)

        try:
            _check_curate(custom_resource)
            custom_resource.save()
        except Exception as e:
            raise exceptions.ModelError(str(e))
예제 #8
0
 def get_by_resumption_token(resumption_token):
     try:
         return OaiRequestPage.objects.get(
             resumption_token=resumption_token)
     except mongoengine_errors.DoesNotExist as e:
         raise exceptions.DoesNotExist(str(e))
     except Exception as ex:
         raise exceptions.ModelError(str(ex))
예제 #9
0
 def get_by_user(user):
     try:
         # print(Visit.objects.get(user=str(user)))
         return Visit.objects.get(user=str(user))
     except mongoengine_errors.DoesNotExist as e:
         return None
     except Exception as ex:
         raise exceptions.ModelError(str(ex))
예제 #10
0
    def test_get_by_template_hash_raises_exception_if_internal_error(
            self, mock_get_by_template_hash):
        # Arrange
        mock_absent_hash = "dummy_hash"
        mock_get_by_template_hash.side_effect = exceptions.ModelError("Error.")

        # Act + Assert
        with self.assertRaises(exceptions.ModelError):
            template_xsl_rendering_api.get_by_template_hash(mock_absent_hash)
예제 #11
0
    def test_oai_set_get_by_set_spec_raises_exception_if_internal_error(self, mock_get_by_set_spec):
        # Arrange
        mock_absent_set_spec = "oai_test"

        mock_get_by_set_spec.side_effect = exceptions.ModelError("Error.")

        # Act + Assert
        with self.assertRaises(exceptions.ModelError):
            set_api.get_by_set_spec(mock_absent_set_spec)
예제 #12
0
    def test_get_by_template_id_raises_exception_if_internal_error(self, mock_get_by_template_id):
        # Arrange
        mock_absent_id = ObjectId()

        mock_get_by_template_id.side_effect = exceptions.ModelError("Error.")

        # Act + Assert
        with self.assertRaises(exceptions.ModelError):
            template_xsl_rendering_api.get_by_template_id(mock_absent_id)
예제 #13
0
    def test_oai_set_get_by_id_raises_exception_if_internal_error(self, mock_get_by_id):
        # Arrange
        mock_absent_id = ObjectId()

        mock_get_by_id.side_effect = exceptions.ModelError("Error")

        # Act + Assert
        with self.assertRaises(exceptions.ModelError):
            set_api.get_by_id(mock_absent_id)
    def test_get_by_id_raises_exception_if_internal_error(self, mock_get_by_template_id_and_metadata_format_id):
        # Arrange
        mock_absent_id = ObjectId()

        mock_get_by_template_id_and_metadata_format_id.side_effect = exceptions.ModelError("Error.")

        # Act + Assert
        with self.assertRaises(exceptions.ModelError):
            oai_xsl_template_api.get_by_template_id_and_metadata_format_id(mock_absent_id, mock_absent_id)
    def test_get_by_data_raises_exception_if_internal_error(
            self, mock_get_by_data):
        # Arrange
        mock_absent_data = Data()

        mock_get_by_data.side_effect = exceptions.ModelError("Error.")

        # Act + Assert
        with self.assertRaises(exceptions.ModelError):
            oai_data_api.get_by_data(mock_absent_data)
예제 #16
0
    def test_get_by_registry_id_raises_exception_if_internal_error(
            self, mock_get):
        # Arrange
        mock_absent_registry_id = str(ObjectId())

        mock_get.side_effect = exceptions.ModelError("Error.")

        # Act + Assert
        with self.assertRaises(exceptions.ModelError):
            oai_identify_api.get_by_registry_id(mock_absent_registry_id)
예제 #17
0
 def get_by_class_and_id(record_object_class, record_object_id):
     try:
         return LocalId.objects.get(
             record_object_class=record_object_class,
             record_object_id=record_object_id,
         )
     except mongoengine_errors.DoesNotExist as dne:
         raise exceptions.DoesNotExist(str(dne))
     except Exception as exc:
         raise exceptions.ModelError(str(exc))
예제 #18
0
    def test_get_by_set_spec_raises_exception_if_internal_error(
            self, mock_get):
        # Arrange
        mock_absent_set_spec = ObjectId()

        mock_get.side_effect = exceptions.ModelError("Error.")

        # Act + Assert
        with self.assertRaises(exceptions.ModelError):
            provider_set_api.get_by_set_spec(mock_absent_set_spec)
예제 #19
0
    def check_instance_name(self):
        """ Test if the name is 'Local'.

        Returns:

        """
        if self.name.upper() == "LOCAL":
            raise exceptions.ModelError(
                "By default, the instance named Local is the instance currently running."
            )
예제 #20
0
    def check_instance_name(self):
        """Test if the name is the name of the local instance.

        Returns:

        """
        if self.name.upper() == settings.CUSTOM_NAME.upper():
            raise exceptions.ModelError(
                f'By default, the instance named "{settings.CUSTOM_NAME}" is the instance currently running.'
            )
예제 #21
0
    def clean(self):
        """

        Returns:
        """
        # Check the title
        if self.owner is not None and self.title.lower(
        ) == "global public workspace":
            raise exceptions.ModelError(
                "You can't create a workspace with the title: " + self.title)
예제 #22
0
    def test_get_by_metadata_prefix_raises_exception_if_internal_error(
            self, mock_get):
        # Arrange
        mock_absent_metadata_prefix = ObjectId()

        mock_get.side_effect = exceptions.ModelError("Error.")

        # Act + Assert
        with self.assertRaises(exceptions.ModelError):
            provider_metadata_format_api.get_by_metadata_prefix(
                mock_absent_metadata_prefix)
예제 #23
0
    def test_oai_metadata_format_get_by_metadata_prefix_raises_exception_if_internal_error(
            self, mock_get_by):
        # Arrange
        mock_absent_metadata_prefix = "oai_test"

        mock_get_by.side_effect = exceptions.ModelError("Error")

        # Act + Assert
        with self.assertRaises(exceptions.ModelError):
            metadata_format_api.get_by_metadata_prefix(
                mock_absent_metadata_prefix)
예제 #24
0
    def get_global_workspace():
        """ Get global workspace.

        Returns:
        """
        try:
            return Workspace.objects.get(owner=None, is_public=True)
        except mongoengine_errors.DoesNotExist as e:
            raise exceptions.DoesNotExist(str(e))
        except Exception as ex:
            raise exceptions.ModelError(str(ex))
예제 #25
0
def _is_type_all(resource):
    """Check if type of  resource is 'all'.

    Args:
     resource:
    Returns:
    """
    try:
        return resource["type"] == CUSTOM_RESOURCE_TYPE.ALL.value
    except:
        raise exceptions.ModelError("The configuration file is not valid.")
    def test_get_by_data_raises_exception_if_internal_error(
            self, mock_get_by_data):
        # Arrange
        mock_absent_data = ObjectId()

        mock_get_by_data.side_effect = exceptions.ModelError("Error.")

        # Act + Assert
        with self.assertRaises(exceptions.ModelError):
            data_structure_type_element_api.get_by_data_structure_id(
                mock_absent_data)
예제 #27
0
    def test_get_by_metadata_prefix_and_registry_id_raises_exception_if_internal_error(self, mock_get):
        # Arrange
        mock_absent_metadata_prefix = 'oai_test'
        mock_absent_registry_id = str(ObjectId())

        mock_get.side_effect = exceptions.ModelError("Error.")

        # Act + Assert
        with self.assertRaises(exceptions.ModelError):
            harvester_metadata_format_api.get_by_metadata_prefix_and_registry_id(mock_absent_metadata_prefix,
                                                                                 mock_absent_registry_id)
예제 #28
0
    def test_get_by_id_raises_exception_if_internal_error(
            self, mock_get_by_id):
        # Arrange
        mock_absent_id = ObjectId()
        mock_user = create_mock_user("1", is_anonymous=False)

        mock_get_by_id.side_effect = exceptions.ModelError("Error.")

        # Act + Assert
        with self.assertRaises(exceptions.ModelError):
            oai_record_api.get_by_id(mock_absent_id, mock_user)
예제 #29
0
    def test_get_by_set_spec_and_registry_id_raises_exception_if_internal_error(
            self, mock_get):
        # Arrange
        mock_absent_set_spec = ObjectId()
        mock_absent_registry_id = ObjectId()

        mock_get.side_effect = exceptions.ModelError("Error.")

        # Act + Assert
        with self.assertRaises(exceptions.ModelError):
            harvester_set_api.get_by_set_spec_and_registry_id(
                mock_absent_set_spec, mock_absent_registry_id)
예제 #30
0
    def save_object(self):
        """ Custom save

        Returns:

        """
        try:
            return self.save()
        except mongoengine_errors.NotUniqueError as e:
            raise exceptions.NotUniqueError("The name is already used by an other exporter.")
        except Exception as ex:
            raise exceptions.ModelError(ex.message)