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)
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
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)
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)
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'])