diff --git a/src/pfwbged/collection/profiles/default/registry.xml b/src/pfwbged/collection/profiles/default/registry.xml index 4a3c8d1..7d89782 100644 --- a/src/pfwbged/collection/profiles/default/registry.xml +++ b/src/pfwbged/collection/profiles/default/registry.xml @@ -27,6 +27,19 @@ Location + + Direct Folder + Find items that are in that are directly in folder + True + False + + plone.app.querystring.operation.string.is + + Location + + + Keywords diff --git a/src/pfwbged/collection/searchview.py b/src/pfwbged/collection/searchview.py index ef0f9d9..da37bde 100644 --- a/src/pfwbged/collection/searchview.py +++ b/src/pfwbged/collection/searchview.py @@ -155,7 +155,10 @@ class ResultsTable(BaseTable): self.folder_id = None try: if self.request.form.get('query', {})[0].get('i') == 'object_folders': - self.folder_id = int(self.request.form.get('query', {})[0].get('v')[0]) + if type(self.request.form.get('query', {})[0].get('v')) is list: + self.folder_id = int(self.request.form.get('query', {})[0].get('v')[0]) + else: + self.folder_id = int(self.request.form.get('query', {})[0].get('v')) except (IndexError, ValueError, KeyError): pass if self.folder_id: @@ -416,6 +419,18 @@ class QueryBuilder(plone.app.querystring.querybuilder.QueryBuilder): query[i] = param except ValueError: pass + if param.get('o', '') == 'plone.app.querystring.operation.int.is': + value = param.get('v') + try: + param = dict(param.copy()) + if type(value) is list: + param['v'] = int(value[0]) + else: + param['v'] = int(value) + query[i] = param + except ValueError: + pass + return plone.app.querystring.querybuilder.QueryBuilder.__call__(self, query, *args, **kwargs)