misc: add support for lazy password fields (#38882)
This commit is contained in:
parent
605e269388
commit
64cfe66db5
|
@ -564,6 +564,7 @@ def variable_test_data(pub):
|
|||
fields.StringField(id='10', label='number1', varname='term1'),
|
||||
fields.StringField(id='11', label='number2', varname='term2'),
|
||||
fields.StringField(id='12', label='float1', varname='value'),
|
||||
fields.PasswordField(id='13', label='pwd', varname='pwd'),
|
||||
]
|
||||
formdef.workflow_roles = {'_receiver': role.id}
|
||||
formdef.geolocations = {'base': 'Base'}
|
||||
|
@ -587,6 +588,11 @@ def variable_test_data(pub):
|
|||
'10': '3',
|
||||
'11': '4',
|
||||
'12': '3.14',
|
||||
'13': {
|
||||
'cleartext': 'a',
|
||||
'md5': '0cc175b9c0f1b6a831c399e269772661',
|
||||
'sha1': '86f7e437faa5a7fce15d1ddcb9eaeaea377667b8'
|
||||
},
|
||||
}
|
||||
formdata.data['5'].receive([b'hello world'])
|
||||
formdata.geolocations = {'base': {'lat': 1, 'lon': 2}}
|
||||
|
@ -833,6 +839,7 @@ def test_lazy_variables(pub, variable_test_data):
|
|||
for item in enumerate(context['form_var_foo_foo']):
|
||||
assert item in [(0, 'b'), (1, 'a'), (2, 'r')]
|
||||
assert context['form_var_foo_foo_baz_baz'] == 'other'
|
||||
assert context['form_var_pwd_cleartext'] == 'a'
|
||||
|
||||
def test_lazy_variables_missing(pub, variable_test_data):
|
||||
formdef = FormDef.select()[0]
|
||||
|
|
|
@ -480,6 +480,8 @@ class LazyFormDataVar(object):
|
|||
return LazyFieldVarDate(self._data, field, self._formdata)
|
||||
if field.key == 'map':
|
||||
return LazyFieldVarMap(self._data, field, self._formdata)
|
||||
if field.key == 'password':
|
||||
return LazyFieldVarPassword(self._data, field, self._formdata)
|
||||
|
||||
return LazyFieldVar(self._data, field, self._formdata)
|
||||
|
||||
|
@ -683,6 +685,15 @@ class LazyFieldVarMap(LazyFieldVar):
|
|||
return self._data.get(self._field.id).split(*args, **kwargs)
|
||||
|
||||
|
||||
class LazyFieldVarPassword(LazyFieldVar):
|
||||
def __getitem__(self, key):
|
||||
# get subpart (cleartext, md5, sha1) if it exists
|
||||
field_value = self._data.get(self._field.id)
|
||||
if key in field_value:
|
||||
return field_value[key]
|
||||
return super(LazyFieldVarPassword, self)._getitem__(key)
|
||||
|
||||
|
||||
class LazyUser(object):
|
||||
def __init__(self, user):
|
||||
self._user = user
|
||||
|
|
Loading…
Reference in New Issue