diff --git a/browser/form.py b/browser/form.py index e7ac588..66fdca6 100644 --- a/browser/form.py +++ b/browser/form.py @@ -668,6 +668,9 @@ class CreateObject(EditObject): def container(self): return self.loopsRoot.getResourceManager() + def getName(self): + return None + def getNameFromData(self): data = self.request.form.get('data') if data and isinstance(data, FileUpload): @@ -686,15 +689,17 @@ class CreateObject(EditObject): if not title: raise BadRequest('Title field is empty') obj = self.factory(title) - name = self.getNameFromData() - # TODO: validate fields - name = INameChooser(container).chooseName(name, obj) + name = self.getName() + if name is None: + name = self.getNameFromData() + name = INameChooser(container).chooseName(name, obj) container[name] = obj tc = form.get('form.type') or self.defaultTypeToken obj.setType(self.loopsRoot.loopsTraverse(tc)) notify(ObjectCreatedEvent(obj)) #notify(ObjectAddedEvent(obj)) self.object = obj + # TODO: validate fields formState = self.updateFields() # TODO: suppress validation self.view.formState = formState # TODO: error handling diff --git a/type.py b/type.py index 4e5f783..f9404e2 100644 --- a/type.py +++ b/type.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2006 Helmut Merz helmutm@cy55.de +# Copyright (c) 2012 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,8 +18,6 @@ """ Type management stuff. - -$Id$ """ from zope import component, schema @@ -36,6 +34,7 @@ from loops.interfaces import ILoopsObject, IConcept, IResource from loops.interfaces import ITypeConcept from loops.interfaces import IResourceAdapter, IFile, IExternalFile, IImage from loops.interfaces import ITextDocument, INote +from loops.common import adapted from loops.concept import Concept from loops.resource import Resource, Document, MediaAsset from loops.common import AdapterBase @@ -267,6 +266,11 @@ class TypeConcept(AdapterBase): self.context._options = value options = property(getOptions, setOptions) + @property + def typeInstances(self): + tp = self.context.getConceptManager().getTypePredicate() + return [adapted(c) for c in self.context.getChildren([tp])] + class TypeInterfaceSourceList(object):