2008-01-11

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
Официальный сайт Zope3 Московская группа изучения реактивного движения The Dream Bot Site noooxml