The SSF would correctly filter out readonly fields when saving a toplevel form, however it could not remove readonly values when saving o2m pseudo-records to the parent form (as these would be expected to remain available for reading upon the next edition and whatnot), so these values would get sent in 0/1 commands. Filter out these fields during the parent / toplevel save call. Complexity notes: * evaluating readonly modifiers requires the entire record, so unchanged fields still have to be written back to the parent form and be filtered out when *it* is set up for save, an alternative would be to store the `changed` and `readonly` flags alongside the record dict, and have the post-process only override the pre-computed readonly flag using force_save * had to fix a test to match the new behaviour, the post-edition states turns out to be in line with the client's behaviour (or how it looks anyway) Fixes #32019
2.4 KiB
2.4 KiB
| 1 | id | name | model_id:id | group_id:id | perm_read | perm_write | perm_create | perm_unlink |
|---|---|---|---|---|---|---|---|---|
| 2 | access_test_testing_utilities_a | access_test_testing_utilities_a | model_test_testing_utilities_a | 1 | 0 | 0 | 0 | |
| 3 | access_test_testing_utilities_readonly | access_test_testing_utilities_readonly | model_test_testing_utilities_readonly | 1 | 0 | 0 | 0 | |
| 4 | access_test_testing_utilities_c | access_test_testing_utilities_c | model_test_testing_utilities_c | 1 | 0 | 0 | 0 | |
| 5 | access_test_testing_utilities_d | access_test_testing_utilities_d | model_test_testing_utilities_d | 1 | 0 | 0 | 0 | |
| 6 | access_test_testing_utilities_e | access_test_testing_utilities_e | model_test_testing_utilities_e | 1 | 0 | 0 | 0 | |
| 7 | access_test_testing_utilities_f | access_test_testing_utilities_f | model_test_testing_utilities_f | 1 | 0 | 0 | 0 | |
| 8 | access_test_testing_utilities_g | access_test_testing_utilities_g | model_test_testing_utilities_g | 1 | 0 | 0 | 0 | |
| 9 | access_test_testing_utilities_m2o | access_test_testing_utilities_m2o | model_test_testing_utilities_m2o | 1 | 0 | 0 | 0 | |
| 10 | access_test_testing_utilities_default | access_test_testing_utilities_default | model_test_testing_utilities_default | 1 | 0 | 0 | 0 | |
| 11 | access_test_testing_utilities_parent | access_test_testing_utilities_parent | model_test_testing_utilities_parent | 1 | 0 | 0 | 0 | |
| 12 | access_test_testing_utilities_sub | access_test_testing_utilities_sub | model_test_testing_utilities_sub | 1 | 0 | 0 | 0 | |
| 13 | access_test_testing_utilities_sub2 | access_test_testing_utilities_sub2 | model_test_testing_utilities_sub2 | 1 | 0 | 0 | 0 | |
| 14 | access_test_testing_utilities_sub3 | access_test_testing_utilities_sub3 | model_test_testing_utilities_sub3 | 1 | 0 | 0 | 0 | |
| 15 | access_test_testing_utilities_recursive | access_test_testing_utilities_recursive | model_test_testing_utilities_recursive | 1 | 0 | 0 | 0 | |
| 16 | access_test_testing_utilities_onchange_parent | access_test_testing_utilities_onchange_parent | model_test_testing_utilities_onchange_parent | 1 | 0 | 0 | 0 | |
| 17 | access_test_testing_utilities_onchange_line | access_test_testing_utilities_onchange_line | model_test_testing_utilities_onchange_line | 1 | 0 | 0 | 0 | |
| 18 | access_model_test_testing_utilities_onchange_count | access_model_test_testing_utilities_onchange_count | model_test_testing_utilities_onchange_count | 1 | 1 | 1 | 1 | |
| 19 | access_test_testing_utilities_onchange_count_sub | access_test_testing_utilities_onchange_count_sub | model_test_testing_utilities_onchange_count_sub | 1 | 1 | 1 | 1 | |
| 20 | access_o2m_readonly_subfield_parent | access_o2m_readonly_subfield_parent | model_o2m_readonly_subfield_parent | 1 | 1 | 1 | 1 | |
| 21 | access_o2m_readonly_subfield_child | access_o2m_readonly_subfield_child | model_o2m_readonly_subfield_child | 1 | 1 | 1 | 1 |