use type's name prefix and concept manager settings when creating new concepts

This commit is contained in:
Helmut Merz 2012-06-18 15:11:50 +02:00
parent 2fdf3a99b9
commit b7f1115536
2 changed files with 20 additions and 3 deletions

View file

@ -663,11 +663,17 @@ class CreateObject(EditObject):
factory = Resource factory = Resource
defaultTypeToken = '.loops/concepts/textdocument' defaultTypeToken = '.loops/concepts/textdocument'
namePrefix = u''
@Lazy @Lazy
def container(self): def container(self):
return self.loopsRoot.getResourceManager() return self.loopsRoot.getResourceManager()
@Lazy
def objectType(self):
tc = self.request.form.get('form.type') or self.defaultTypeToken
return self.loopsRoot.loopsTraverse(tc)
def getName(self): def getName(self):
return None return None
@ -692,10 +698,11 @@ class CreateObject(EditObject):
name = self.getName() name = self.getName()
if name is None: if name is None:
name = self.getNameFromData() name = self.getNameFromData()
name = INameChooser(container).chooseName(name, obj) nc = INameChooser(container)
nc.prefix = self.namePrefix
name = nc.chooseName(name, obj)
container[name] = obj container[name] = obj
tc = form.get('form.type') or self.defaultTypeToken obj.setType(self.objectType)
obj.setType(self.loopsRoot.loopsTraverse(tc))
notify(ObjectCreatedEvent(obj)) notify(ObjectCreatedEvent(obj))
#notify(ObjectAddedEvent(obj)) #notify(ObjectAddedEvent(obj))
self.object = obj self.object = obj
@ -744,8 +751,15 @@ class CreateConcept(EditConcept, CreateObject):
@Lazy @Lazy
def container(self): def container(self):
cmName = adapted(self.objectType).conceptManager
if cmName:
return self.loopsRoot[cmName]
return self.loopsRoot.getConceptManager() return self.loopsRoot.getConceptManager()
@Lazy
def namePrefix(self):
return adapted(self.objectType).namePrefix or u''
def getNameFromData(self): def getNameFromData(self):
return None return None

View file

@ -215,11 +215,14 @@ class NameChooser(BaseNameChooser):
adapts(ILoopsContained) adapts(ILoopsContained)
prefix = u''
def chooseName(self, name, obj): def chooseName(self, name, obj):
if not name: if not name:
name = self.generateNameFromTitle(obj) name = self.generateNameFromTitle(obj)
else: else:
name = self.normalizeName(name) name = self.normalizeName(name)
name = self.prefix + name
name = super(NameChooser, self).chooseName(name, obj) name = super(NameChooser, self).chooseName(name, obj)
return name return name