Create user preference only when user configure preferences
To make it easier for users to change their preferences, so that they do not have to create the preference themselves, we tried to pre-create a user preference ready to be configured for each user. It was 59860df3 : an interaction to create a user preference on `Person.setReference` which is more or less the time when this person become a user ( but not really - this was already a weakness of this approach). This calls `Person_createUserPreference` that initialize the preference by introspecting the assignments of the person. This already had a problem that it was working only if the assignments were created before the reference was set on the person. With the new user management introduced in !185 this interaction moved to `Person.setUserId`, which is called in Person's init script. This had the following problems: - All persons have a user id, so all persons have a preference. For sites with many persons that are not actually users, this create useless preferences. - During init, person does not have assignments yet, so `Person_createUserPreference` could not use information from assignment to create preference. The suggested change is to create the preference only when the user click on *Edit my preferences* button. This is done by adding a new `portal_preferences.getActiveUserPreference` method that returns the active user preference and create it if not already existing, this way we do not have to put logic in the user interface scripts. All *Edit my preferences* links should use it like it was done in f62e6651 The `person_interaction_workflow` was completely remove, as the other interaction it was containing - clearCache when deleting the person - was useless . We had to adjust a few tests that was passing thanks to this interaction. /cc @gabriel @vpelletier @kazuhiko @tc /reviewed-on nexedi/erp5!273
Showing
Please register or sign in to comment