User.get_preferences must return a copy

preferences is stored in the cache but as it is a mutable object, we must
return a copy to prevent cache corruption.

issue3442
review1351002
This commit is contained in:
Cédric Krier committed 2013-10-27 19:27:19 +01:00
1 parent ab6d672863
commit 75e02ba2de
1 file changed
+2 -2
+2 -2
View File
@@ -342,13 +342,13 @@ class User(ModelSQL, ModelView):
key = (Transaction().user, context_only)
preferences = cls._get_preferences_cache.get(key)
if preferences is not None:
return preferences
return preferences.copy()
user = Transaction().user
with Transaction().set_user(0):
user = cls(user)
preferences = cls._get_preferences(user, context_only=context_only)
cls._get_preferences_cache.set(key, preferences)
return preferences
return preferences.copy()
@classmethod
def set_preferences(cls, values, old_password=False):