Friday, January 30, 2015¶
Submitting an ActionFormPanel no longer forwards param_values¶
Uff! Ticket #49 is fixed. Gerd and Melanie discovered yesterday how to reproduce it. The trick was to open the detail panel via the table view, not (as I usually do) by clicking on some client in the welcome page.
As expected, this was subtle and required several hours of debugging
and a change in linoweb.js
. I also wrote a new test case
lino_welfare.projects.docs.tests.test_households
which helped
me to understand the problem.
Explanation: Lino.call_ajax_action also asked the requesting panel to add its base params to the parameters of the AJAX call:
Ext.apply(p, panel.get_base_params());
In our case (user clicks on one of the create_household links in the
summary panel of
MembersByPerson
)
the requesting panel is the detail window of the client. Which (when
opened via the table view) included the parameter values (pv
) of that view. But at
least in our case we do not want to add these when sending the OK
of the ActionFormPanel. I am not yet sure whether this is generally
what we want because the current case is furthermore special: the
create_household action is called from pcsw.Clients but defined on
the contacts.Person model.
Commit and push.
And here is already a destructive side-effect of above solution. The following comes when I tried to assign a newcomer to a coach:
AttributeError 'NoneType' object has no attribute '__dict__'
TRACEBACK:
...
File "welfare/lino_welfare/modlib/newcomers/models.py", line 453, in run_from_ui
watcher = ChangeWatcher(client)
File "lino/lino/core/utils.py", line 694, in __init__
self.original_state = dict(watched.__dict__)
Okay the parameter values (pv
) must maybe never go
to the AJAX call, but the mt
and
mk
are always needed. For
example the
AssignCoach
action in AvailableCoachesByClient
needs
the master_instance.
Commit and push. Upgrade in The Eupen variant of Lino Welfare.
Remember the active tab when saving¶
And then another JavaScript problem solved: #68. The problem was:
When I save a detail form for the first time, Lino switches back to the first tab even if I was in another tab when clicking the Save button.
Note that Lino did not forget to add the tab
url parameter to the AJAX
call. But the response did not return it back. Added new keyword
argument active_tab to ar.set_response
, changed
Lino.handle_action_result()
(in linolib.js
) to
handle this keyword, and changed ar.parse_req
to detect the tab
url parameter on incoming calls.
Commit and push.
Immersion trainings¶
I started to work on #72. It was almost done in less than 2
hours: a new module lino_welfare.modlib.trainings
.
But the demo fixture
took some more
time. See tomorrow.