[Zope-Checkins] CVS: Zope/lib/python/AccessControl - Owned.py:1.18.4.4 PermissionRole.py:1.16.4.4 SecurityInfo.py:1.15.4.1 User.py:1.170.4.5 ZopeSecurityPolicy.py:1.20.2.4

Chris McDonough chrism@zope.com
Sun, 24 Nov 2002 18:29:54 -0500


Update of /cvs-repository/Zope/lib/python/AccessControl
In directory cvs.zope.org:/tmp/cvs-serv7151

Modified Files:
      Tag: chrism-install-branch
	Owned.py PermissionRole.py SecurityInfo.py User.py 
	ZopeSecurityPolicy.py 
Log Message:
Merge with head.


=== Zope/lib/python/AccessControl/Owned.py 1.18.4.3 => 1.18.4.4 ===


=== Zope/lib/python/AccessControl/PermissionRole.py 1.16.4.3 => 1.16.4.4 ===


=== Zope/lib/python/AccessControl/SecurityInfo.py 1.15 => 1.15.4.1 ===
--- Zope/lib/python/AccessControl/SecurityInfo.py:1.15	Wed Aug 14 17:29:07 2002
+++ Zope/lib/python/AccessControl/SecurityInfo.py	Sun Nov 24 18:29:53 2002
@@ -198,6 +198,7 @@
     access = 0
 
 _moduleSecurity = {}
+_appliedModuleSecurity = {}
 
 def secureModule(mname, *imp):
     modsec = _moduleSecurity.get(mname, None)
@@ -209,12 +210,24 @@
         apply(__import__, (mname,) + tuple(imp))
     module = sys.modules[mname]
     modsec.apply(module.__dict__)
+    _appliedModuleSecurity[mname] = modsec
     return module
 
 def ModuleSecurityInfo(module_name=None):
     if module_name is not None:
         modsec = _moduleSecurity.get(module_name, None)
         if modsec is not None:
+            return modsec
+        modsec = _appliedModuleSecurity.get(module_name, None)
+        if modsec is not None:
+            # Move security info back to to-apply dict (needed for product
+            # refresh). Also invoke this check for parent packages already
+            # applied
+            del _appliedModuleSecurity[module_name]
+            _moduleSecurity[module_name] = modsec
+            dot = module_name.rfind('.')
+            if dot > 0:
+                ModuleSecurityInfo(module_name[:dot])
             return modsec
         dot = module_name.rfind('.')
         if dot > 0:


=== Zope/lib/python/AccessControl/User.py 1.170.4.4 => 1.170.4.5 ===


=== Zope/lib/python/AccessControl/ZopeSecurityPolicy.py 1.20.2.3 => 1.20.2.4 ===