@@ -1,3 +1,4 @@
|
||||
* Fill wizard state view instance with default value
|
||||
* Replace passlib by pwdlib
|
||||
* Add size limit for RPC arguments
|
||||
* Store the ignore search limit option of export
|
||||
|
||||
@@ -47,11 +47,9 @@ class WizardTestCase(TestCase):
|
||||
session, = Session.create([{}])
|
||||
wizard = Wizard(session.id)
|
||||
self.assertEqual(wizard.start.id, None)
|
||||
self.assertRaises(AttributeError, getattr, wizard.start, 'name')
|
||||
self.assertEqual(hasattr(wizard.start, 'name'), False)
|
||||
self.assertEqual(wizard.start.name, None)
|
||||
wizard.start.name = 'Test'
|
||||
self.assertRaises(AttributeError, getattr, wizard.start, 'user')
|
||||
self.assertEqual(hasattr(wizard.start, 'user'), False)
|
||||
self.assertEqual(wizard.start.user.id, Transaction().user)
|
||||
wizard.start.user = transaction.user
|
||||
group_a, = Group.create([{
|
||||
'name': 'Group A',
|
||||
|
||||
@@ -7,6 +7,7 @@ __all__ = ['Wizard',
|
||||
|
||||
import copy
|
||||
import json
|
||||
from collections import defaultdict
|
||||
|
||||
from trytond.i18n import gettext
|
||||
from trytond.model import ModelSQL
|
||||
@@ -393,12 +394,18 @@ class Wizard(URLMixin, PoolBase):
|
||||
Session = pool.get('ir.session.wizard')
|
||||
self._session_id = session_id
|
||||
session = Session(session_id)
|
||||
data = json.loads(session.data, object_hook=JSONDecoder())
|
||||
data = defaultdict(dict)
|
||||
data.update(json.loads(session.data, object_hook=JSONDecoder()))
|
||||
for state_name, state in self.states.items():
|
||||
if isinstance(state, StateView):
|
||||
Target = pool.get(state.model_name)
|
||||
data.setdefault(state_name, {})
|
||||
setattr(self, state_name, Target(**data[state_name]))
|
||||
View = pool.get(state.model_name)
|
||||
view_data = data[state_name]
|
||||
default_values = View.default_get(
|
||||
View._fields.keys(), with_rec_name=False)
|
||||
for field_name in View._fields:
|
||||
view_data.setdefault(
|
||||
field_name, default_values.get(field_name))
|
||||
setattr(self, state_name, View(**view_data))
|
||||
|
||||
def _save(self):
|
||||
"Save the session in database"
|
||||
|
||||
Reference in New Issue
Block a user