Commit 5e2b3bbd authored by Yusei Tahara's avatar Yusei Tahara

Reduce rare AttributeError on Skins Tool.

Thanks to Vincent Pelletier for his help on this bug fix.
parent e274b020
......@@ -20,6 +20,7 @@ from _thread import get_ident
from zLOG import LOG, WARNING, DEBUG
from Acquisition import aq_base
import six
import random
"""
This patch modifies the way CMF Portal Skins gets a skin by its name from
......@@ -148,7 +149,12 @@ def CMFCoreSkinnableSkinnableObjectManager_changeSkin(self, skinname, REQUEST=No
skinname = sf.getDefaultSkin()
tid = get_ident()
SKINDATA[tid] = (
None,
# CMFCore uses the first item of this tuple, but ERP5 did not.
# Thus we put a random value here to reduce rare AttributeError
# caused by wrong SKINDATA deletion. See SkinDataCleanup.hashSkinData.
# However, it is not enough. To eliminate rare AttributeError bug,
# we have to stop using global SKINDATA dict completely.
random.getrandbits(24),
skinname,
{'portal_skins': None, 'portal_callables': None},
{})
......@@ -207,5 +213,7 @@ class SkinDataCleanup:
pass
def hashSkinData(self, skindata):
return id(skindata)
# id() might return the same value even though object is different.
# thus use a random value additionally.
return (id(skindata), skindata[0])
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment