Skip to content
Snippets Groups Projects
Commit 4171dae3 authored by Cédric Krier's avatar Cédric Krier :atom:
Browse files

Fill wizard state view instance with default value

Closes #13693
parent aa4ad9d6
No related merge requests found
* Fill wizard state view instance with default value
* Add metadata columns to ModelSQL with table query
* Add report data to header_key
* Validate integer digits
......
......@@ -46,6 +46,5 @@
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'
......@@ -51,6 +50,5 @@
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 @@
import copy
import json
from collections import defaultdict
from trytond.i18n import gettext
from trytond.model import ModelSQL
......@@ -398,6 +399,7 @@
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):
......@@ -402,8 +404,13 @@
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"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment