diff --git a/organize/stateful/README.txt b/organize/stateful/README.txt index 45ec8df..e6445eb 100644 --- a/organize/stateful/README.txt +++ b/organize/stateful/README.txt @@ -171,7 +171,7 @@ Querying objects by state >>> from loops.organize.stateful.browser import StateQuery >>> view = StateQuery(stateQuery, TestRequest()) - >>> view.statesDefinitions + >>> view.rcStatesDefinitions {'concept': [], 'resource': [...StatesDefinition..., ...StatesDefinition...]} >>> input = {'state.resource.classification_quality': ['verified']} diff --git a/organize/stateful/browser.py b/organize/stateful/browser.py index 794b4c4..1db6c49 100644 --- a/organize/stateful/browser.py +++ b/organize/stateful/browser.py @@ -32,6 +32,7 @@ from loops.browser.common import BaseView from loops.browser.concept import ConceptView from loops.expert.query import And, Or, State, Type, getObjects from loops.expert.browser.search import search_template +from loops.security.common import checkPermission from loops.util import _ @@ -77,6 +78,8 @@ class StateQuery(BaseView): template = ViewPageTemplateFile('view_macros.pt') + form_action = 'execute_search_action' + @Lazy def search_macros(self): return search_template.macros @@ -86,7 +89,7 @@ class StateQuery(BaseView): return self.template.macros['query'] @Lazy - def statesDefinitions(self): + def rcStatesDefinitions(self): result = {} result['resource'] = [component.getUtility(IStatesDefinition, name=n) for n in self.globalOptions('organize.stateful.resource', ())] @@ -94,6 +97,12 @@ class StateQuery(BaseView): for n in self.globalOptions('organize.stateful.concept', ())] return result + @Lazy + def statesDefinitions(self): + # TODO: extend to handle concept states as well + return [component.getUtility(IStatesDefinition, name=n) + for n in self.globalOptions('organize.stateful.resource', ())] + @Lazy def selectedStates(self): result = {} @@ -102,6 +111,10 @@ class StateQuery(BaseView): result[k] = v return result + @Lazy + def showActions(self): + return checkPermission('loops.ManageSite', self.context) + @Lazy def results(self): conceptCriteria = {} diff --git a/organize/stateful/view_macros.pt b/organize/stateful/view_macros.pt index edeade9..c9473c2 100644 --- a/organize/stateful/view_macros.pt +++ b/organize/stateful/view_macros.pt @@ -8,7 +8,7 @@
Object Type | Workflow | @@ -46,9 +46,13 @@
---|