Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Z
Zope
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
Zope
Commits
3d72a8f4
Commit
3d72a8f4
authored
Jul 31, 2010
by
Hanno Schlichting
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Brain PEP8 cleanup and define __contains__ for brains.
parent
a1d83432
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
48 additions
and
21 deletions
+48
-21
src/Products/ZCatalog/CatalogBrains.py
src/Products/ZCatalog/CatalogBrains.py
+14
-8
src/Products/ZCatalog/interfaces.py
src/Products/ZCatalog/interfaces.py
+7
-4
src/Products/ZCatalog/tests/test_brains.py
src/Products/ZCatalog/tests/test_brains.py
+27
-9
No files found.
src/Products/ZCatalog/CatalogBrains.py
View file @
3d72a8f4
...
...
@@ -13,7 +13,8 @@
from
zope.interface
import
implements
import
Acquisition
,
Record
import
Acquisition
import
Record
from
ZODB.POSException
import
ConflictError
from
interfaces
import
ICatalogBrain
...
...
@@ -22,6 +23,7 @@ from interfaces import ICatalogBrain
# Use 'catalog-getObject-raises off' in zope.conf to restore old behavior.
GETOBJECT_RAISES
=
True
class
AbstractCatalogBrain
(
Record
.
Record
,
Acquisition
.
Implicit
):
"""Abstract base brain that handles looking up attributes as
required, and provides just enough smarts to let us get the URL, path,
...
...
@@ -30,7 +32,10 @@ class AbstractCatalogBrain(Record.Record, Acquisition.Implicit):
implements
(
ICatalogBrain
)
def
has_key
(
self
,
key
):
return
self
.
__record_schema__
.
has_key
(
key
)
return
key
in
self
.
__record_schema__
def
__contains__
(
self
,
name
):
return
name
in
self
.
__record_schema__
def
getPath
(
self
):
"""Get the physical path for this record"""
...
...
@@ -101,6 +106,7 @@ class AbstractCatalogBrain(Record.Record, Acquisition.Implicit):
"""Return the record ID for this object."""
return
self
.
data_record_id_
class
NoBrainer
:
""" This is an empty class to use when no brain is specified. """
pass
src/Products/ZCatalog/interfaces.py
View file @
3d72a8f4
...
...
@@ -245,15 +245,19 @@ class IZCatalog(Interface):
(see also README.txt)
"""
#
XXX
This should inherit from an IRecord interface, if there ever is one.
# This should inherit from an IRecord interface, if there ever is one.
class
ICatalogBrain
(
Interface
):
"""Catalog brain that handles looking up attributes as
required, and provides just enough smarts to let us get the URL, path,
and cataloged object without having to ask the catalog directly.
"""
def
has_key
(
key
):
"""Record has this field"""
def
__contains__
(
self
,
name
):
"""Record has this field"""
def
getPath
():
"""Get the physical path for this record"""
...
...
@@ -272,7 +276,6 @@ class ICatalogBrain(Interface):
Will return None if the object cannot be found via its cataloged path
(i.e., it was deleted or moved without recataloging), or if the user is
not authorized to access the object.
"""
def
getRID
():
...
...
src/Products/ZCatalog/tests/test_brains.py
View file @
3d72a8f4
...
...
@@ -14,27 +14,38 @@
"""
import
unittest
import
Acquisition
from
zExceptions
import
Unauthorized
from
ZODB.POSException
import
ConflictError
_marker
=
object
()
class
Happy
(
Acquisition
.
Implicit
):
"""Happy content"""
def
__init__
(
self
,
id
):
self
.
id
=
id
def
check
(
self
):
pass
class
Secret
(
Happy
):
"""Object that raises Unauthorized when accessed"""
def
check
(
self
):
raise
Unauthorized
class
Conflicter
(
Happy
):
"""Object that raises ConflictError when accessed"""
def
check
(
self
):
raise
ConflictError
class
DummyRequest
(
Acquisition
.
Implicit
):
def
physicalPathToURL
(
self
,
path
,
relative
=
False
):
...
...
@@ -42,13 +53,12 @@ class DummyRequest(Acquisition.Implicit):
path
=
'http://superbad.com'
+
path
return
path
_marker
=
object
()
class
DummyCatalog
(
Acquisition
.
Implicit
):
_objs
=
{
'/happy'
:
Happy
(
'happy'
),
'/secret'
:
Secret
(
'secret'
),
'/conflicter'
:
Conflicter
(
'conflicter'
)}
_objs
=
{
'/happy'
:
Happy
(
'happy'
),
'/secret'
:
Secret
(
'secret'
),
'/conflicter'
:
Conflicter
(
'conflicter'
)}
_paths
=
_objs
.
keys
()
+
[
'/zonked'
]
_paths
.
sort
()
...
...
@@ -78,14 +88,17 @@ class DummyCatalog(Acquisition.Implicit):
return
self
.
restrictedTraverse
(
self
.
_paths
[
rid
])
def
resolve_url
(
self
,
path
,
REQUEST
):
path
=
path
[
path
.
find
(
'/'
,
path
.
find
(
'//'
)
+
1
):]
# strip server part
# strip server part
path
=
path
[
path
.
find
(
'/'
,
path
.
find
(
'//'
)
+
1
):]
return
self
.
restrictedTraverse
(
path
)
class
ConflictingCatalog
(
DummyCatalog
):
def
getpath
(
self
,
rid
):
raise
ConflictError
class
BrainsTestBase
:
_old_flag
=
None
...
...
@@ -110,15 +123,17 @@ class BrainsTestBase:
def
_makeBrain
(
self
,
rid
):
from
Products.ZCatalog.CatalogBrains
import
AbstractCatalogBrain
class
Brain
(
AbstractCatalogBrain
):
__record_schema__
=
{
'test_field'
:
0
,
'data_record_id_'
:
1
}
__record_schema__
=
{
'test_field'
:
0
,
'data_record_id_'
:
1
}
return
Brain
((
'test'
,
rid
)).
__of__
(
self
.
cat
)
def
testHasKey
(
self
):
b
=
self
.
_makeBrain
(
1
)
self
.
failUnless
(
b
.
has_key
(
'test_field'
)
)
self
.
failUnless
(
b
.
has_key
(
'data_record_id_'
)
)
self
.
failIf
(
b
.
has_key
(
'godel'
)
)
self
.
failUnless
(
'test_field'
in
b
)
self
.
failUnless
(
'data_record_id_'
in
b
)
self
.
failIf
(
'godel'
in
b
)
def
testGetPath
(
self
):
b
=
[
self
.
_makeBrain
(
rid
)
for
rid
in
range
(
3
)]
...
...
@@ -149,6 +164,7 @@ class BrainsTestBase:
self
.
assertEqual
(
b
.
getPath
(),
'/conflicter'
)
self
.
assertRaises
(
ConflictError
,
b
.
getObject
)
class
TestBrains
(
BrainsTestBase
,
unittest
.
TestCase
):
def
_flag_value
(
self
):
...
...
@@ -167,6 +183,7 @@ class TestBrains(BrainsTestBase, unittest.TestCase):
self
.
assertRaises
(
KeyError
,
self
.
cat
.
getobject
,
3
)
self
.
assertRaises
((
NotFound
,
AttributeError
,
KeyError
),
b
.
getObject
)
class
TestBrainsOldBehavior
(
BrainsTestBase
,
unittest
.
TestCase
):
def
_flag_value
(
self
):
...
...
@@ -183,6 +200,7 @@ class TestBrainsOldBehavior(BrainsTestBase, unittest.TestCase):
self
.
assertRaises
(
KeyError
,
self
.
cat
.
getobject
,
3
)
self
.
assertEqual
(
b
.
getObject
(),
None
)
def
test_suite
():
suite
=
unittest
.
TestSuite
()
suite
.
addTest
(
unittest
.
makeSuite
(
TestBrains
))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment