make (old) state query (loops.organize.stateful) work again correctly with new action stuff in loops.expert

This commit is contained in:
Helmut Merz 2011-08-31 13:48:28 +02:00
parent 6c64ba5158
commit 667174aca5
3 changed files with 23 additions and 6 deletions

View file

@ -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']}

View file

@ -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 = {}

View file

@ -8,7 +8,7 @@
<h1 i18n:translate="">Select Objects by State</h1>
<br />
<table class="listing"
tal:define="defs item/statesDefinitions">
tal:define="defs item/rcStatesDefinitions">
<tr>
<th i18n:translate="">Object Type</th>
<th i18n:translate="">Workflow</th>
@ -46,9 +46,13 @@
</table>
<input type="submit" name="button.search" value="Search" class="submit"
i18n:attributes="value" />
<tal:results condition="request/search_submitted|nothing">
<input type="hidden" name="form.action"
tal:attributes="value item/form_action" />
<h2 i18n:translate="">Search results</h2>
<metal:results use-macro="item/search_macros/results" />
<metal:actions use-macro="item/search_macros/actions" />
</tal:results>
</form>
</div>
<tal:results condition="request/search_submitted|nothing">
<metal:results use-macro="item/search_macros/results" />
</tal:results>
</metal:query>