formdefs: add a form_objects substitution variable with more info (#6964)
This commit is contained in:
parent
afb9068f2c
commit
befd0e0461
|
@ -2,6 +2,8 @@ import datetime
|
|||
import sys
|
||||
import shutil
|
||||
|
||||
import pytest
|
||||
|
||||
from quixote import cleanup
|
||||
from wcs import formdef
|
||||
from wcs.formdef import FormDef
|
||||
|
@ -105,6 +107,28 @@ def test_substitution_variables():
|
|||
wf.store()
|
||||
formdef.workflow_id = wf.id
|
||||
|
||||
assert formdef.get_substitution_variables() == {'form_name': 'foo'}
|
||||
assert 'form_name' in formdef.get_substitution_variables()
|
||||
assert formdef.get_substitution_variables()['form_name'] == 'foo'
|
||||
formdef.workflow_options = {'foo': 'bar'}
|
||||
assert formdef.get_substitution_variables() == {'form_name': 'foo', 'form_option_foo': 'bar'}
|
||||
assert 'form_option_foo' in formdef.get_substitution_variables()
|
||||
assert formdef.get_substitution_variables()['form_option_foo'] == 'bar'
|
||||
|
||||
def test_substitution_variables_object():
|
||||
formdef = FormDef()
|
||||
formdef.name = 'foo'
|
||||
formdef.store()
|
||||
formdef.data_class().wipe()
|
||||
|
||||
assert 'form_objects' in formdef.get_substitution_variables()
|
||||
substs = formdef.get_substitution_variables().get('form_objects')
|
||||
assert substs.count == 0
|
||||
assert substs.count_status_1 == 0
|
||||
|
||||
d = formdef.data_class()()
|
||||
d.status = 'wf-1'
|
||||
d.store()
|
||||
assert substs.count == 1
|
||||
assert substs.count_status_1 == 1
|
||||
|
||||
with pytest.raises(AttributeError):
|
||||
assert substs.foobar
|
||||
|
|
|
@ -767,6 +767,7 @@ class FormDef(StorableObject):
|
|||
def get_substitution_variables(self, minimal=False):
|
||||
d = {
|
||||
'form_name': self.name,
|
||||
'form_objects': FormDefSubstVar(self),
|
||||
}
|
||||
if self.category:
|
||||
d.update(self.category.get_substitution_variables(minimal=minimal))
|
||||
|
@ -941,6 +942,21 @@ class FormDef(StorableObject):
|
|||
self._workflow = None
|
||||
|
||||
|
||||
class FormDefSubstVar(object):
|
||||
def __init__(self, formdef):
|
||||
self.formdef = formdef
|
||||
|
||||
@property
|
||||
def count(self):
|
||||
return self.formdef.data_class().count()
|
||||
|
||||
def __getattr__(self, attribute):
|
||||
if attribute.startswith('count_status_'):
|
||||
status = attribute[len('count_status_'):]
|
||||
return len(self.formdef.data_class().get_ids_with_indexed_value(
|
||||
'status', 'wf-%s' % status))
|
||||
return super(FormDefSubstVar, self).__getattr__(attribute)
|
||||
|
||||
from qommon.admin.emails import EmailsDirectory
|
||||
|
||||
EmailsDirectory.register('new_user', N_('Notification of creation to user'),
|
||||
|
|
Loading…
Reference in New Issue