allow for explicit setting of name when creating object; simple property to get instances of a type

This commit is contained in:
Helmut Merz 2012-06-03 19:23:23 +02:00
parent 9bc0c44e12
commit 343faaa603
2 changed files with 15 additions and 6 deletions

View file

@ -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,8 +689,9 @@ class CreateObject(EditObject):
if not title:
raise BadRequest('Title field is empty')
obj = self.factory(title)
name = self.getName()
if name is None:
name = self.getNameFromData()
# TODO: validate fields
name = INameChooser(container).chooseName(name, obj)
container[name] = obj
tc = form.get('form.type') or self.defaultTypeToken
@ -695,6 +699,7 @@ class CreateObject(EditObject):
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

10
type.py
View file

@ -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):