From 7110a77b76c5d20032a411a4e780fd8958b68d4b Mon Sep 17 00:00:00 2001 From: Alicia Zangger Date: Wed, 18 Dec 2019 11:48:52 +0100 Subject: [PATCH] person: filter by view * Allows filtering persons by view (organisation) * Closes #550 Co-Authored-by: Alicia Zangger --- rero_ils/config.py | 2 +- rero_ils/query.py | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/rero_ils/config.py b/rero_ils/config.py index d934276509..ebbcbd3299 100644 --- a/rero_ils/config.py +++ b/rero_ils/config.py @@ -659,7 +659,7 @@ def _(x): item_route='/persons/', default_media_type='application/json', max_result_window=10000, - search_factory_imp='rero_ils.query:search_factory', + search_factory_imp='rero_ils.query:person_view_search_factory', read_permission_factory_imp=allow_all, list_permission_factory_imp=allow_all, create_permission_factory_imp=deny_all, diff --git a/rero_ils/query.py b/rero_ils/query.py index a461b2cbcd..593d895c34 100644 --- a/rero_ils/query.py +++ b/rero_ils/query.py @@ -70,6 +70,17 @@ def view_search_factory(self, search, query_parser=None): return (search, urlkwargs) +def person_view_search_factory(self, search, query_parser=None): + """Search factory with view code parameter.""" + view = request.args.get( + 'view', current_app.config.get('RERO_ILS_SEARCH_GLOBAL_VIEW_CODE')) + search, urlkwargs = search_factory(self, search) + if view != current_app.config.get('RERO_ILS_SEARCH_GLOBAL_VIEW_CODE'): + org = Organisation.get_record_by_viewcode(view) + search = search.filter('term', organisations=org['pid']) + return (search, urlkwargs) + + def organisation_search_factory(self, search, query_parser=None): """Search factory.""" search, urlkwargs = search_factory(self, search)