some minor modifications concerning creation of concepts directly on the concepts folder

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2652 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2008-05-30 13:08:51 +00:00
parent 50522cf5dc
commit 7a3d57fe5f
7 changed files with 21 additions and 7 deletions

View file

@ -164,13 +164,13 @@
permission="zope.ManageContent" permission="zope.ManageContent"
/> />
<addMenuItem <!--<addMenuItem
class="loops.concept.Concept" class="loops.concept.Concept"
title="Concept" title="Concept"
description="A Concept is a Concept is a Concept..." description="A Concept is a Concept is a Concept..."
permission="zope.ManageContent" permission="zope.ManageContent"
view="AddLoopsConcept.html" view="AddLoopsConcept.html"
/> />-->
<pages <pages
for="loops.interfaces.IConcept" for="loops.interfaces.IConcept"

View file

@ -29,6 +29,7 @@ from zope.interface import Interface
from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent
from zope.app.container.interfaces import INameChooser from zope.app.container.interfaces import INameChooser
from zope.app.container.contained import ObjectAddedEvent
#from zope.app.container.contained import NameChooser #from zope.app.container.contained import NameChooser
from zope.app.pagetemplate import ViewPageTemplateFile from zope.app.pagetemplate import ViewPageTemplateFile
from zope.cachedescriptors.property import Lazy from zope.cachedescriptors.property import Lazy
@ -568,6 +569,7 @@ class CreateObject(EditObject):
tc = form.get('form.type') or self.defaultTypeToken tc = form.get('form.type') or self.defaultTypeToken
obj.setType(self.loopsRoot.loopsTraverse(tc)) obj.setType(self.loopsRoot.loopsTraverse(tc))
notify(ObjectCreatedEvent(obj)) notify(ObjectCreatedEvent(obj))
#notify(ObjectAddedEvent(obj))
self.object = obj self.object = obj
self.updateFields() # TODO: suppress validation self.updateFields() # TODO: suppress validation
# TODO: error handling # TODO: error handling

View file

@ -30,6 +30,7 @@ from zope.dublincore.interfaces import IZopeDublinCore
from zope.dublincore.annotatableadapter import ZDCAnnotatableAdapter from zope.dublincore.annotatableadapter import ZDCAnnotatableAdapter
from zope.dublincore.zopedublincore import ScalarProperty from zope.dublincore.zopedublincore import ScalarProperty
from zope.interface import implements from zope.interface import implements
from zope.interface.interface import InterfaceClass
from zope.security.proxy import isinstance from zope.security.proxy import isinstance
from cybertools.storage.interfaces import IStorageInfo from cybertools.storage.interfaces import IStorageInfo
@ -65,6 +66,8 @@ def collectAttributeNames(lst, name):
attrs.append(arg) attrs.append(arg)
elif isinstance(arg, type): elif isinstance(arg, type):
attrs.extend(list(getattr(arg, name))) attrs.extend(list(getattr(arg, name)))
elif isinstance(arg, InterfaceClass):
attrs.extend(list(arg))
else: else:
raise ValueError("Argument must be string or class, '%s' is '%s'." % raise ValueError("Argument must be string or class, '%s' is '%s'." %
(arg, type(arg))) (arg, type(arg)))

View file

@ -25,12 +25,14 @@ $Id$
from zope import component, schema from zope import component, schema
from zope.app.container.btree import BTreeContainer from zope.app.container.btree import BTreeContainer
from zope.app.container.contained import Contained from zope.app.container.contained import Contained
from zope.app.container.interfaces import IAdding
from zope.cachedescriptors.property import Lazy from zope.cachedescriptors.property import Lazy
from zope.component import adapts from zope.component import adapts
from zope.component.interfaces import ObjectEvent from zope.component.interfaces import ObjectEvent
from zope.event import notify from zope.event import notify
from zope.interface import implements from zope.interface import implements
from zope.interface import alsoProvides, directlyProvides, directlyProvidedBy from zope.interface import alsoProvides, directlyProvides, directlyProvidedBy
from zope.publisher.interfaces.browser import IBrowserRequest
from zope.security.proxy import removeSecurityProxy, isinstance from zope.security.proxy import removeSecurityProxy, isinstance
from zope.traversing.api import getName, getParent from zope.traversing.api import getName, getParent
from persistent import Persistent from persistent import Persistent
@ -333,9 +335,13 @@ class ConceptTypeSourceList(object):
implements(schema.interfaces.IIterableSource) implements(schema.interfaces.IIterableSource)
def __init__(self, context): def __init__(self, context):
self.context = context if IBrowserRequest.providedBy(context):
context = context.context
if IAdding.providedBy(context):
context = context.context
if isinstance(context, AdapterBase): if isinstance(context, AdapterBase):
self.context = self.context.context context = context.context
self.context = context
def __iter__(self): def __iter__(self):

View file

@ -59,7 +59,7 @@
<require <require
permission="zope.View" permission="zope.View"
attributes="getTypePredicate getDefaultPredicate getTypeConcept attributes="getTypePredicate getDefaultPredicate getTypeConcept
getPredicateType" /> getPredicateType getLoopsRoot" />
</class> </class>
<interface interface=".interfaces.IConcept" <interface interface=".interfaces.IConcept"

View file

@ -102,7 +102,7 @@ class IConcept(IConceptSchema, ILoopsObject, IPotentialTarget):
"a concept of type 'type'."), "a concept of type 'type'."),
default=None, default=None,
source="loops.conceptTypeSource", source="loops.conceptTypeSource",
required=False) required=True)
def getType(): def getType():
""" Return a concept that provides the object's type. """ Return a concept that provides the object's type.

View file

@ -23,11 +23,12 @@ $Id$
""" """
from zope import component from zope import component
from zope.app.container.interfaces import IObjectAddedEvent
from zope.app.securitypolicy.interfaces import IPrincipalRoleManager from zope.app.securitypolicy.interfaces import IPrincipalRoleManager
from zope.app.securitypolicy.interfaces import IRolePermissionManager from zope.app.securitypolicy.interfaces import IRolePermissionManager
from zope.cachedescriptors.property import Lazy from zope.cachedescriptors.property import Lazy
from zope.interface import implements from zope.interface import implements
from zope.lifecycleevent import IObjectCreatedEvent from zope.lifecycleevent import IObjectCreatedEvent, IObjectModifiedEvent
from zope.security import canAccess, canWrite from zope.security import canAccess, canWrite
from zope.security import checkPermission as baseCheckPermission from zope.security import checkPermission as baseCheckPermission
from zope.security.management import getInteraction from zope.security.management import getInteraction
@ -109,6 +110,8 @@ def restrictView(obj, roles=allRolesExceptOwnerAndMaster, revert=False):
# event handlers # event handlers
#@component.adapter(ILoopsObject, IObjectAddedEvent)
#@component.adapter(ILoopsObject, IObjectModifiedEvent)
@component.adapter(ILoopsObject, IObjectCreatedEvent) @component.adapter(ILoopsObject, IObjectCreatedEvent)
def setDefaultSecurity(obj, event): def setDefaultSecurity(obj, event):
aObj = adapted(obj) aObj = adapted(obj)