62 |
62 |
from wcs.wf.notification import SendNotificationWorkflowStatusItem
|
63 |
63 |
from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem, Mapping
|
64 |
64 |
from wcs.wf.create_carddata import CreateCarddataWorkflowStatusItem
|
|
65 |
from wcs.wf.edit_carddata import EditCarddataWorkflowStatusItem
|
65 |
66 |
from wcs.wf.external_workflow import ExternalWorkflowGlobalAction
|
66 |
67 |
|
67 |
68 |
|
... | ... | |
4904 |
4905 |
logged_error = LoggedError.select()[0]
|
4905 |
4906 |
assert logged_error.summary == 'Could not find linked "Data" object by id %s' % carddata.id
|
4906 |
4907 |
assert logged_error.exception_class == 'KeyError'
|
|
4908 |
|
|
4909 |
|
|
4910 |
def test_edit_carddata_with_data_sourced_object(pub):
|
|
4911 |
FormDef.wipe()
|
|
4912 |
CardDef.wipe()
|
|
4913 |
LoggedError.wipe()
|
|
4914 |
|
|
4915 |
datasource = {'type': 'formula',
|
|
4916 |
'value': repr([{'id': 'b', 'text': 'baker'},
|
|
4917 |
{'id': 'c', 'text': 'cook'},
|
|
4918 |
{'id': 'l', 'text': 'lawyer'}])}
|
|
4919 |
carddef = CardDef()
|
|
4920 |
carddef.name = 'Person'
|
|
4921 |
carddef.fields = [
|
|
4922 |
StringField(id='0', label='First Name', varname='first_name'),
|
|
4923 |
StringField(id='1', label='Last Name', varname='last_name'),
|
|
4924 |
ItemField(id='2', label='Profession', type='item',
|
|
4925 |
varname='profession', data_source=datasource),
|
|
4926 |
]
|
|
4927 |
carddef.digest_template = '{{ form_var_first_name }} {{ form_var_last_name }}'
|
|
4928 |
carddef.store()
|
|
4929 |
|
|
4930 |
carddata = carddef.data_class()()
|
|
4931 |
carddata.data = {
|
|
4932 |
'0': 'Foo',
|
|
4933 |
'1': 'Bar',
|
|
4934 |
'2': 'l',
|
|
4935 |
'2_display': 'lawyer'}
|
|
4936 |
carddata.store()
|
|
4937 |
|
|
4938 |
wf = Workflow(name='Card update')
|
|
4939 |
st1 = wf.add_status('Update card', 'st1')
|
|
4940 |
|
|
4941 |
edit = EditCarddataWorkflowStatusItem()
|
|
4942 |
edit.formdef_slug = carddef.url_name
|
|
4943 |
edit.mappings = [
|
|
4944 |
Mapping(field_id='2', expression='{{ form_var_new_profession }}'),
|
|
4945 |
]
|
|
4946 |
edit.id = 'edit'
|
|
4947 |
st1.items.append(edit)
|
|
4948 |
edit.parent = st1
|
|
4949 |
wf.store()
|
|
4950 |
|
|
4951 |
datasource = {'type': 'carddef:%s' % carddef.url_name}
|
|
4952 |
formdef = FormDef()
|
|
4953 |
formdef.name = 'Persons'
|
|
4954 |
formdef.fields = [
|
|
4955 |
ItemField(id='0', label='Person',
|
|
4956 |
type='item', varname='person',
|
|
4957 |
data_source=datasource),
|
|
4958 |
StringField(id='1', label='New profession',
|
|
4959 |
varname='new_profession')
|
|
4960 |
]
|
|
4961 |
formdef.workflow = wf
|
|
4962 |
formdef.store()
|
|
4963 |
|
|
4964 |
formdata = formdef.data_class()()
|
|
4965 |
formdata.data = {
|
|
4966 |
'0': '1',
|
|
4967 |
'1': 'c'
|
|
4968 |
}
|
|
4969 |
formdata.store()
|
|
4970 |
formdata.just_created()
|
|
4971 |
formdata.perform_workflow()
|
|
4972 |
|
|
4973 |
data = carddef.data_class().select()[0]
|
|
4974 |
assert data.data['2'] == 'c'
|
|
4975 |
assert data.data['2_display'] == 'cook'
|
|
4976 |
|
|
4977 |
formdata = formdef.data_class()()
|
|
4978 |
formdata.data = {
|
|
4979 |
'0': '1',
|
|
4980 |
'1': 'b'
|
|
4981 |
}
|
|
4982 |
formdata.store()
|
|
4983 |
formdata.just_created()
|
|
4984 |
formdata.perform_workflow()
|
|
4985 |
|
|
4986 |
data = carddef.data_class().select()[0]
|
|
4987 |
assert data.data['2'] == 'b'
|
|
4988 |
assert data.data['2_display'] == 'baker'
|
|
4989 |
|
|
4990 |
|
|
4991 |
def test_edit_carddata_with_linked_object(pub):
|
|
4992 |
FormDef.wipe()
|
|
4993 |
CardDef.wipe()
|
|
4994 |
LoggedError.wipe()
|
|
4995 |
|
|
4996 |
carddef = CardDef()
|
|
4997 |
carddef.name = 'Parent'
|
|
4998 |
carddef.fields = [
|
|
4999 |
StringField(id='0', label='First Name', varname='first_name'),
|
|
5000 |
StringField(id='1', label='Last Name', varname='last_name'),
|
|
5001 |
StringField(id='2', label='Kids number', varname='kids_number'),
|
|
5002 |
]
|
|
5003 |
carddef.store()
|
|
5004 |
|
|
5005 |
wf = Workflow(name='Card create and update')
|
|
5006 |
st1 = wf.add_status('Create card', 'st1')
|
|
5007 |
edit = CreateCarddataWorkflowStatusItem()
|
|
5008 |
edit.formdef_slug = carddef.url_name
|
|
5009 |
edit.mappings = [
|
|
5010 |
Mapping(field_id='0', expression='{{ form_var_first_name }}'),
|
|
5011 |
Mapping(field_id='1', expression='{{ form_var_last_name }}'),
|
|
5012 |
Mapping(field_id='2', expression='{{ form_var_kids_number|default:"0" }}'),
|
|
5013 |
]
|
|
5014 |
st1.items.append(edit)
|
|
5015 |
edit.parent = st1
|
|
5016 |
jump = JumpWorkflowStatusItem()
|
|
5017 |
jump.id = '_jump'
|
|
5018 |
jump.by = ['_submitter', '_receiver']
|
|
5019 |
jump.status = 'st2'
|
|
5020 |
st1.items.append(jump)
|
|
5021 |
jump.parent = st1
|
|
5022 |
|
|
5023 |
st2 = wf.add_status('Update card', 'st2')
|
|
5024 |
edit = EditCarddataWorkflowStatusItem()
|
|
5025 |
edit.formdef_slug = carddef.url_name
|
|
5026 |
edit.mappings = [
|
|
5027 |
Mapping(field_id='2', expression='{{ form_var_kids_number|add:"1" }}'),
|
|
5028 |
]
|
|
5029 |
edit.id = 'edit'
|
|
5030 |
st2.items.append(edit)
|
|
5031 |
edit.parent = st2
|
|
5032 |
wf.store()
|
|
5033 |
|
|
5034 |
formdef = FormDef()
|
|
5035 |
formdef.name = 'Parents'
|
|
5036 |
formdef.fields = [
|
|
5037 |
StringField(id='0', label='First Name',
|
|
5038 |
varname='first_name'),
|
|
5039 |
StringField(id='1', label='Last Name',
|
|
5040 |
varname='last_name'),
|
|
5041 |
StringField(id='2', label='Number of kids',
|
|
5042 |
varname='kids_number')
|
|
5043 |
]
|
|
5044 |
formdef.workflow = wf
|
|
5045 |
formdef.store()
|
|
5046 |
|
|
5047 |
formdata = formdef.data_class()()
|
|
5048 |
formdata.data = {
|
|
5049 |
'0': 'Parent',
|
|
5050 |
'1': 'Foo',
|
|
5051 |
'2': '2'
|
|
5052 |
}
|
|
5053 |
formdata.store()
|
|
5054 |
formdata.just_created()
|
|
5055 |
formdata.perform_workflow()
|
|
5056 |
|
|
5057 |
assert carddef.data_class().count() == 1
|
|
5058 |
card_data = carddef.data_class().select()[0]
|
|
5059 |
assert card_data.data['2'] == '3'
|