Exemplo n.º 1
0
def test_jsonschemas_with_additional_properties_fails(app, db, location):
    with app.test_request_context():
        metadata = minimal_deposits_metadata('test-schema-v0.0.1')
        id_ = uuid4()
        deposit_minter(id_, metadata)
        with pytest.raises(ValidationError):
            Deposit.create(metadata, id_=id_)
        def _create_deposit(user, schema_name, metadata=None, experiment=None, publish=False):
            """
            Create a new deposit for given user and schema name
            e.g cms-analysis-v0.0.1,
            with minimal metadata defined for this schema type.
            """
            with app.test_request_context():
                # create schema for record
                create_schema('records/{}'.format(schema_name), is_deposit=False,
                              experiment='CMS')

                # create schema for deposit
                schema = create_schema('deposits/records/{}'.format(schema_name), 
                                       experiment=experiment)
                metadata = metadata or minimal_metadata(jsonschemas_host,
                                                        'deposits/records/{}'.format(schema_name))
                login_user(user)
                id_ = uuid4()
                deposit_minter(id_, metadata)
                deposit = Deposit.create(metadata, id_=id_)

            if publish:
                deposit.publish()
                _, record = deposit.fetch_published()
                RecordIndexer().index(record)

                current_search.flush_and_refresh('records')

            current_search.flush_and_refresh(schema.index_name)

            return Deposit.get_record(deposit.id)
Exemplo n.º 3
0
 def _create_deposit(user, schema):
     """
     Create a new deposit for given user and schema name
     e.g cms-analysis-v0.0.1,
     with minimal metadata defined for this schema type.
     """
     db_.session.begin_nested()
     with app.test_request_context():
         metadata = minimal_deposits_metadata(schema)
         login_user(user)
         id_ = uuid4()
         deposit_minter(id_, metadata)
         deposit = Deposit.create(metadata, id_=id_)
     current_search.flush_and_refresh('deposits-records-{}'.format(schema))
     return deposit
Exemplo n.º 4
0
    def _create_deposit(user,
                        schema_name,
                        metadata=None,
                        experiment=None,
                        files={},
                        publish=False,
                        mapping=None):
        """Create a new deposit for given user and schema name.

        e.g cms-analysis-v0.0.1,
        with minimal metadata defined for this schema type.
        """
        # create schema for record
        with app.test_request_context():
            schema = create_schema(schema_name,
                                   experiment=experiment,
                                   deposit_mapping=mapping)
            deposit_schema_url = current_jsonschemas.path_to_url(
                schema.deposit_path)

            metadata = metadata or minimal_metadata(deposit_schema_url)
            login_user(user)
            id_ = uuid4()
            deposit_minter(id_, metadata)
            deposit = Deposit.create(metadata, id_=id_)

            for k, v in files.items():
                deposit.files[k] = v
            if files:
                deposit.commit()

            db.session.commit()

        if publish:
            deposit.publish()
            _, record = deposit.fetch_published()
            RecordIndexer().index(record)

            current_search.flush_and_refresh(schema.record_index)

        current_search.flush_and_refresh(schema.deposit_index)

        return Deposit.get_record(deposit.id)
Exemplo n.º 5
0
        def _create_deposit(user, schema_name, metadata=None, experiment=None, publish=False):
            """
            Create a new deposit for given user and schema name
            e.g cms-analysis-v0.0.1,
            with minimal metadata defined for this schema type.
            """
            with app.test_request_context():
                # create schema for record
                schema = create_schema('records/{}'.format(schema_name), is_deposit=False,
                                       experiment=experiment)
                if not experiment:
                    schema.add_read_access_to_all()

                # create schema for deposit
                schema = create_schema('deposits/records/{}'.format(schema_name),
                                       experiment=experiment)
                if not experiment:
                    schema.add_read_access_to_all()

                metadata = metadata or minimal_metadata(jsonschemas_host,
                                                        'deposits/records/{}'.format(schema_name))
                login_user(user)
                id_ = uuid4()
                deposit_minter(id_, metadata)
                deposit = Deposit.create(metadata, id_=id_)

            if publish:
                deposit.publish()
                _, record = deposit.fetch_published()
                RecordIndexer().index(record)

                current_search.flush_and_refresh('records')

            current_search.flush_and_refresh(schema.index_name)

            return Deposit.get_record(deposit.id)
Exemplo n.º 6
0
 def _resolve_deposit(cls, deposit, record):
     """Build _deposit."""
     logging.debug('Creating new deposit.')
     record_pid = PersistentIdentifier.query.filter_by(
         object_type='rec', object_uuid=record.id, pid_type='recid').one()
     deposit_pid = deposit_minter(record_uuid=deposit.id, data=deposit)
     userid = cls._resolve_user_id(
         email=record.get('_access', {}).get('update', [''])[0])
     deposit['_deposit'] = {
         'created_by': userid,
         'id': deposit_pid.pid_value,
         'owners': [userid],
         'pid': {
             # +1 because we update the record from the deposit
             'revision_id': record.revision_id + 1,
             'type': 'recid',
             'value': record_pid.pid_value,
         },
         'status': 'published'
     }
     record['_deposit'] = deepcopy(deposit['_deposit'])