2008-01-11

namechooseritembaseadapter.py

  2008-01-11 19:05

...

from zope.interface import implements
from zope.app.container.contained import NameChooser
from zope.app.container.interfaces import INameChooser
from zope.app.container.interfaces import IContainer
from interfaces import INameChooserItem
from zope.interface import Interface
import zope.component
import re
match = re.compile("^(?P.*[^0-9])(?P[0-9]+)$").match

class NameChooserItemBase(object) :
    zope.component.adapts(Interface)
    zope.interface.implements(INameChooserItem)
    
    def __init__(self, ob) :
        self.ob = ob
    
    def chooseName(self, name, container) :
        if name :
            while name in container :
                res = match(name)
                if res :
                    d = res.groupdict()
                    d['number'] = int(d['number']) + 1
                    name = "%(name)s%(number)u" % d
                else :
                    name = name + "-0"
        
        return name


        
class NameChooserItemBaseNG(object) :
    zope.component.adapts(Interface)
    zope.interface.implements(INameChooserItem)

    def __init__(self, ob) :
        self.object = ob
    
    def chooseName(self, name, container) :
        return name
Официальный сайт Zope3 Московская группа изучения реактивного движения The Dream Bot Site noooxml