[Zope3-checkins] CVS: Zope3/src/zope/app - content.py:1.1.2.1
Philipp von Weitershausen
philikon at philikon.de
Sun Feb 8 08:51:27 EST 2004
Update of /cvs-repository/Zope3/src/zope/app
In directory cvs.zope.org:/tmp/cvs-serv7824
Added Files:
Tag: philikon-movecontent-branch
content.py
Log Message:
Make zope.app.content a normal module containing just the ContentType
machinery.
=== Added File Zope3/src/zope/app/content.py ===
##############################################################################
#
# Copyright (c) 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""
$Id: content.py,v 1.1.2.1 2004/02/08 13:51:25 philikon Exp $
"""
from zope.app.interfaces.content import IContentType
from zope.interface.declarations import providedBy
def queryContentType(object):
"""returns object content type
>>> from zope.interface import Interface, implements, directlyProvides
>>> class I(Interface):
... pass
>>> directlyProvides(I, IContentType)
>>> class C:
... implements(I)
>>> obj = C()
>>> c1_ctype = queryContentType(obj)
>>> c1_ctype.__name__
'I'
>>> class I1(I):
... pass
>>> class I2(I1):
... pass
>>> class I3(Interface):
... pass
>>> class C1:
... implements(I1)
>>> obj1 = C1()
>>> c1_ctype = queryContentType(obj1)
>>> c1_ctype.__name__
'I'
>>> class C2:
... implements(I2)
>>> obj2 = C2()
>>> c2_ctype = queryContentType(obj2)
>>> c2_ctype.__name__
'I'
>>> class C3:
... implements(I3)
>>> obj3 = C3()
If Interface doesn't provide IContentType, queryContentType returns None.
>>> c3_ctype = queryContentType(obj3)
>>> c3_ctype
>>> class I4(I):
... pass
>>> directlyProvides(I4, IContentType)
>>> class C4:
... implements(I4)
>>> obj4 = C4()
>>> c4_ctype = queryContentType(obj4)
>>> c4_ctype.__name__
'I4'
"""
object_iro = providedBy(object).__iro__
for iface in object_iro:
if IContentType.isImplementedBy(iface):
return iface
return None
More information about the Zope3-Checkins
mailing list