zdc2titleadapter.py
2008-01-11 19:09...
### -*- coding: utf-8 -*- #############################################
#######################################################################
"""The adapter Contained2TitleAdapter that adopt IAttributeAnnotatable
interface to ITitle interface
$Id: product.py 12897 2007-11-10 15:32:08Z cray $
"""
__author__ = "Yegor Shershnev"
__license__ = "GPL"
__version__ = "$Revision: 12897 $"
from zope.interface import implements, implementedBy
from zope.app.container.interfaces import IContained
from zope.component import adapts
from titleadapter.titleadapterbase import TitleAdapterBase
from zope.interface import Interface
from zope.annotation.interfaces import IAttributeAnnotatable
from zope.dublincore.interfaces import IZopeDublinCore
from titleadapter.contained2titleadapter import Contained2TitleAdapter
class ZDC2TitleAdapter(Contained2TitleAdapter) :
adapts(IAttributeAnnotatable)
# Значением является то строка, то Nonr
# Ну и ловушку давай вынесем в Contained2TitleAdapter.
# Она там тупо выглядеть будет, но что делат.
# В данном случае это не компонентное программирование
# Ачито ООП - с выносом инварианта
@property
def title(self) :
title = IZopeDublinCore(self.context).title
if not title :
try:
return super(ZDC2TitleAdapter, self).title
except TypeError:
return title
return title
#class ZDC2TitleAdapterOld(TitleAdapterBase) :
#
# adapts(IAttributeAnnotatable)
#
# @property
# def title(self) :
# return IZopeDublinCore(self.context).title



