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:
parent
50522cf5dc
commit
7a3d57fe5f
7 changed files with 21 additions and 7 deletions
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)))
|
||||
|
|
10
concept.py
10
concept.py
|
@ -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):
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
<require
|
||||
permission="zope.View"
|
||||
attributes="getTypePredicate getDefaultPredicate getTypeConcept
|
||||
getPredicateType" />
|
||||
getPredicateType getLoopsRoot" />
|
||||
</class>
|
||||
|
||||
<interface interface=".interfaces.IConcept"
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue