workflows: add support for date fields to update profile action (#22578)
This commit is contained in:
parent
849217f9f7
commit
5c37cdf39a
|
@ -2821,8 +2821,9 @@ def test_global_timeouts(pub):
|
|||
assert formdef.data_class().get(formdata1.id).get_criticality_level_object().name == 'green'
|
||||
formdata1.store()
|
||||
|
||||
def test_profile(pub):
|
||||
user = pub.user_class()
|
||||
def test_profile(two_pubs):
|
||||
User = two_pubs.user_class
|
||||
user = User()
|
||||
user.store()
|
||||
|
||||
formdef = FormDef()
|
||||
|
@ -2839,28 +2840,37 @@ def test_profile(pub):
|
|||
item = UpdateUserProfileStatusItem()
|
||||
item.fields = [{'field_id': '__email', 'value': '=form_var_foo'}]
|
||||
item.perform(formdata)
|
||||
assert pub.user_class.get(user.id).email == 'bar@localhost'
|
||||
assert User.get(user.id).email == 'bar@localhost'
|
||||
|
||||
formdata.data = {'1': 'Plop'}
|
||||
item.fields = [{'field_id': '__name', 'value': '=form_var_foo'}]
|
||||
item.perform(formdata)
|
||||
assert pub.user_class.get(user.id).name == 'Plop'
|
||||
assert User.get(user.id).name == 'Plop'
|
||||
|
||||
item.fields = [{'field_id': '__name', 'value': 'dj{{form_var_foo}}'}]
|
||||
item.perform(formdata)
|
||||
assert pub.user_class.get(user.id).name == 'djPlop'
|
||||
assert User.get(user.id).name == 'djPlop'
|
||||
item.fields = [{'field_id': '__name', 'value': 'ezt[form_var_foo]'}]
|
||||
item.perform(formdata)
|
||||
assert pub.user_class.get(user.id).name == 'eztPlop'
|
||||
assert User.get(user.id).name == 'eztPlop'
|
||||
|
||||
from wcs.admin.settings import UserFieldsFormDef
|
||||
formdef = UserFieldsFormDef(pub)
|
||||
formdef.fields = [StringField(id='3', label='test', type='string', varname='plop')]
|
||||
formdef = UserFieldsFormDef(two_pubs)
|
||||
formdef.fields = [
|
||||
StringField(id='3', label='test', type='string', varname='plop'),
|
||||
DateField(id='4', label='Date', type='date', varname='bar'),
|
||||
]
|
||||
formdef.store()
|
||||
|
||||
item.fields = [{'field_id': 'plop', 'value': '=form_var_foo'}]
|
||||
item.perform(formdata)
|
||||
assert pub.user_class.get(user.id).form_data == {'3': 'Plop'}
|
||||
assert User.get(user.id).form_data.get('3') == 'Plop'
|
||||
assert not User.get(user.id).form_data.get('4')
|
||||
|
||||
item.fields = [{'field_id': 'bar', 'value': '20/03/2018'}]
|
||||
item.perform(formdata)
|
||||
assert User.get(user.id).form_data.get('3') == 'Plop'
|
||||
assert User.get(user.id).form_data.get('4').tm_year == 2018
|
||||
|
||||
def test_set_backoffice_field(http_requests, two_pubs):
|
||||
Workflow.wipe()
|
||||
|
|
|
@ -152,7 +152,10 @@ class UpdateUserProfileStatusItem(WorkflowStatusItem):
|
|||
new_user_data = {}
|
||||
for field in user_formdef.fields:
|
||||
if field.varname in new_data:
|
||||
new_user_data[field.id] = new_data.get(field.varname)
|
||||
field_value = new_data.get(field.varname)
|
||||
if field and field_value and field.convert_value_from_anything:
|
||||
field_value = field.convert_value_from_anything(field_value)
|
||||
new_user_data[field.id] = field_value
|
||||
|
||||
if '__name' in new_data:
|
||||
user.name = new_data.get('__name')
|
||||
|
|
Loading…
Reference in New Issue