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



