• Tatuya Kamada's avatar
    Restricted: Allow datetime module class attributes. · 9d71c913
    Tatuya Kamada authored
    Restricted: Allow datetime module class attributes.
        
    To allow the class attributes, we add a helper method ``allow_class_attribute''.
     Why addng this is because allow_module can allow instance methods but not class
     attributes.
     For example, datetime.datetime.now(), datetime.datetime.max, dict.fromkeys(),
     Decimal.from_float(), epoll.fromfd(), itertools.chain.from_iterable() are class
     attributes in Python 2.7.
        
     Also, add a special in-advance-import for datetime.datetime.strptime().
     It is because datetime.datetime.strptime() imports _strptime by C function
     PyImport_Import which calls
     __import__(name, globals, locals, fromlist=['__doc__'], level=0).
     The "level=0" is not supported by AccessControl in Zope2. At the same time,
     the dummy from '__doc__'  is neither allowed in it by default.
     Therefore we import _strptime in advance in this monkey patch file.
     This prevents both importing _strptime with level=0, and accessing __doc__,
     when calling datetime.datetime.strptime() in Restricted environment.
    
    /cc @vpelletier @jm @klaus
    
    /reviewed-on nexedi/erp5!275
    9d71c913
Restricted.py 11.6 KB