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"
/>
<addMenuItem
<!--<addMenuItem
class="loops.concept.Concept"
title="Concept"
description="A Concept is a Concept is a Concept..."
permission="zope.ManageContent"
view="AddLoopsConcept.html"
/>
/>-->
<pages
for="loops.interfaces.IConcept"

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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