summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Korostelev <nadako@gmail.com>2009-03-12 03:09:05 +0000
committerDan Korostelev <nadako@gmail.com>2009-03-12 03:09:05 +0000
commit6a608ce769ea99474b170c30bee30f515521dfb0 (patch)
tree368e85848c232cb659460e28c80147c006ec5f8b
parentfce7adeef7814250609a73da4695290e2c1c009f (diff)
downloadzope-security-6a608ce769ea99474b170c30bee30f515521dfb0.tar.gz
Add zope.i18nmessage.Message to non-proxied basic types, as it's immutable and it was done by zope.app.security.
Add __name__ and __parent__ to list of available by default attributes. It was also done by zope.app.security before.
-rw-r--r--CHANGES.txt6
-rw-r--r--src/zope/security/checker.py6
-rw-r--r--src/zope/security/tests/test_checker.py2
3 files changed, 13 insertions, 1 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 967a7d5..6867657 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -5,6 +5,12 @@ CHANGES
3.6.2 (unreleased)
------------------
+- Add zope.i18nmessageid.Message to non-proxied basic types. It's okay, because
+ messages are immutable. It was done by zope.app.security before.
+
+- Add "__name__" and "__parent__" attributes to list of available by default.
+ This was also done by zope.app.security package before.
+
- Added PermissionsVocabulary and PermissionIdsVocabulary vocabularies
to the ``zope.security.permission`` module. They were moved from
the ``zope.app.security`` package.
diff --git a/src/zope/security/checker.py b/src/zope/security/checker.py
index 1c3ddd2..603c37d 100644
--- a/src/zope/security/checker.py
+++ b/src/zope/security/checker.py
@@ -37,6 +37,7 @@ from zope.exceptions import DuplicationError
import zope.interface.interface
import zope.interface.interfaces
import zope.interface.declarations
+from zope.i18nmessageid import Message
from zope.interface import directlyProvides, Interface, implements
from zope.interface.interfaces import IInterface, IDeclaration
@@ -564,6 +565,7 @@ _available_by_default[:] = ['__lt__', '__le__', '__eq__',
'__hash__', '__nonzero__',
'__class__', '__providedBy__', '__implements__',
'__repr__', '__conform__',
+ '__name__', '__parent__',
]
_callableChecker = NamesChecker(['__str__', '__name__', '__call__'])
@@ -612,6 +614,7 @@ BasicTypes = BasicTypes({
types.NoneType: NoProxy,
str: NoProxy,
unicode: NoProxy,
+ Message: NoProxy, # Messages are immutable, so it's okay
bool: NoProxy,
datetime.timedelta: NoProxy,
datetime.datetime: NoProxy,
@@ -635,7 +638,8 @@ BasicTypes_examples = {
datetime.timedelta: datetime.timedelta(3),
datetime.datetime: datetime.datetime(2003, 1, 1),
datetime.date: datetime.date(2003, 1, 1),
- datetime.time: datetime.time(23, 58)
+ datetime.time: datetime.time(23, 58),
+ Message: Message('message', domain='hello')
}
diff --git a/src/zope/security/tests/test_checker.py b/src/zope/security/tests/test_checker.py
index f739c71..d66f608 100644
--- a/src/zope/security/tests/test_checker.py
+++ b/src/zope/security/tests/test_checker.py
@@ -322,6 +322,8 @@ class Test(TestCase, CleanUp):
self.assertEqual(checker.check(C, '__ge__'), None)
self.assertEqual(checker.check(C, '__eq__'), None)
self.assertEqual(checker.check(C, '__ne__'), None)
+ self.assertEqual(checker.check(C, '__name__'), None)
+ self.assertEqual(checker.check(C, '__parent__'), None)
def test_setattr(self):
checker = NamesChecker(['a', 'b', 'c', '__getitem__'],