diff --git a/oarepo_runtime/services/search.py b/oarepo_runtime/services/search.py index 82c5b9c..0f7c2ac 100644 --- a/oarepo_runtime/services/search.py +++ b/oarepo_runtime/services/search.py @@ -5,9 +5,7 @@ from invenio_rdm_records.services.config import ( RDMSearchDraftsOptions as BaseRDMSearchDraftsOptions, ) -from invenio_rdm_records.services.config import ( - RDMSearchOptions as BaseRDMSearchOptions, -) +from invenio_rdm_records.services.config import RDMSearchOptions as BaseRDMSearchOptions from invenio_records_resources.proxies import current_service_registry from invenio_records_resources.services.records import ( SearchOptions as InvenioSearchOptions, @@ -86,6 +84,35 @@ def params_interpreters_cls(cls): } +class SearchOptionsDraftMixin(SearchOptionsMixin): + sort_options = { + "bestmatch": dict( + title=_("Best match"), + fields=["_score"], # search defaults to desc on `_score` field + ), + "updated-desc": dict( + title=_("Recently updated"), + fields=["-updated"], + ), + "updated-asc": dict( + title=_("Least recently updated"), + fields=["updated"], + ), + "newest": dict( + title=_("Newest"), + fields=["-created"], + ), + "oldest": dict( + title=_("Oldest"), + fields=["created"], + ), + "version": dict( + title=_("Version"), + fields=["-versions.index"], + ), + } + + class SearchOptions(SearchOptionsMixin, InvenioSearchOptions): # TODO: should be changed params_interpreters_cls = [ @@ -100,7 +127,7 @@ class RDMSearchOptions(SearchOptionsMixin, BaseRDMSearchOptions): pass -class RDMSearchDraftsOptions(SearchOptionsMixin, BaseRDMSearchDraftsOptions): +class RDMSearchDraftsOptions(SearchOptionsDraftMixin, BaseRDMSearchDraftsOptions): pass diff --git a/setup.cfg b/setup.cfg index 872726d..966d2dd 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = oarepo-runtime -version = 1.5.93 +version = 1.5.94 description = A set of runtime extensions of Invenio repository authors = Alzbeta Pokorna readme = README.md