diff --git a/modules/invenio-oaiserver/invenio_oaiserver/percolator.py b/modules/invenio-oaiserver/invenio_oaiserver/percolator.py index fadb3585b5..93a17dc936 100644 --- a/modules/invenio-oaiserver/invenio_oaiserver/percolator.py +++ b/modules/invenio-oaiserver/invenio_oaiserver/percolator.py @@ -130,8 +130,9 @@ def get_record_sets(record): yield spec # get list of sets that match using percolator - index, doc_type = RecordIndexer().record_to_index(record) document = record.dumps() + document.pop('$schema', None) + index, doc_type = RecordIndexer().record_to_index(document) percolator_doc_type = _get_percolator_doc_type(index) _create_percolator_mapping(index, percolator_doc_type) diff --git a/modules/weko-deposit/weko_deposit/api.py b/modules/weko-deposit/weko_deposit/api.py index b7fc05ceb7..aba0729731 100644 --- a/modules/weko-deposit/weko_deposit/api.py +++ b/modules/weko-deposit/weko_deposit/api.py @@ -1595,21 +1595,20 @@ def delete_by_index_tree_id(cls, index_id: str, ignore_items: list = []): """ if index_id: index_id = str(index_id) - obj_ids = next((cls.indexer.get_pid_by_es_scroll(index_id, only_latest_version=True)), []) - removed_records = [] + obj_ids = next((cls.indexer.get_pid_by_es_scroll(index_id)), []) for obj_uuid in obj_ids: r = RecordMetadata.query.filter_by(id=obj_uuid).first() if r.json['recid'] in ignore_items: continue r.json['path'].remove(index_id) + if index_id in r.json.get('_oai', {}).get('sets', []): + r.json['_oai']['sets'].remove(index_id) flag_modified(r, 'json') if r.json and not r.json['path']: from weko_records_ui.utils import soft_delete soft_delete(obj_uuid) - removed_records.append(r) - for r in removed_records: dep = WekoDeposit(r.json, r) - dep.indexer.update_es_data(dep, update_revision=False) + dep.indexer.update_es_data(dep, update_revision=False, update_oai=True) def update_pid_by_index_tree_id(self, path): """