From cd7fbe373e9a3b08876c0fde82dccfe3e0a1266e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 20 Feb 2008 18:03:00 +0100 Subject: [PATCH] Improve pysocket to allow datatime object --- tryton/pysocket.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tryton/pysocket.py b/tryton/pysocket.py index f0aa2fb372..d3738cc37e 100644 --- a/tryton/pysocket.py +++ b/tryton/pysocket.py @@ -4,6 +4,16 @@ import cStringIO DNS_CACHE = {} +_ALLOWED_MODULES = {'datetime': ['datetime']} + +def checkfunction(module, klass): + if module in _ALLOWED_MODULES and klass in _ALLOWED_MODULES[module]: + mod = __import__(module, {}, {}, ['__all__']) + _class = getattr(mod, klass) + return _class + raise ValueError('Not supported: %s/%s' % (module, klass)) + + class PySocketException(Exception): def __init__(self, code, string): @@ -86,7 +96,7 @@ class PySocket: msg = msg + chunk msgio = cStringIO.StringIO(msg) unpickler = cPickle.Unpickler(msgio) - unpickler.find_global = None + unpickler.find_global = checkfunction res = unpickler.load() if exception: raise PySocketException(str(res[0]), str(res[1]))