[Zope] user created folders and local owner role problem in 2.1.3
Tres Seaver
tseaver@palladion.com
Thu, 17 Feb 2000 11:27:15 -0600
"Cornelis J. de Brabander" <brabander@fsw.leidenuniv.nl> wrote:
> To: "zope" <zope@zope.org>
> Subject: [Zope] user created folders and local owner role problem in 2.1.3
> Date: Thu, 17 Feb 2000 11:04:02 +0100
> charset="iso-8859-1"
>
> Silence was my part after an ealier effort, so I'll give it another try.
> I have a application for web supported learning, basically a platform where
> teachers and students can exchange information. It runs in zope 2.0.0. Users
> may create documents or folders by means of a dtml-method that wraps
> manage_clone. In version 2.0.0 the user automatically acquires a local role
> of owner in the context the folder or document involved.
> When I was upgrading to zope version 2.1.3 I noticed this automatisme did
> not apply anymore to folders, but only to documents: users are not given the
> local owner role in he context of a folder they create. Bug or feature?
> It is a problem, because what users ar permitted to do depends to a certain
> extent on ownership. Please help me out.
> tia, cb
Ok, from the horse's mouth ("Trust the source, Luke!"):
[/home/tres/Zope2/lib/python/OFS] $ \
cvs diff -u -r Zope-2_0_0-src -r Zope-2_1_3-src ObjectManager.py
Index: ObjectManager.py
===================================================================
RCS file: /cvs-repository/Zope2/lib/python/OFS/ObjectManager.py,v
retrieving revision 1.80
retrieving revision 1.82
diff -u -r1.80 -r1.82
--- ObjectManager.py 1999/07/22 19:19:22 1.80
+++ ObjectManager.py 1999/11/04 19:34:20 1.82
@@ -84,9 +84,9 @@
##############################################################################
__doc__="""Object Manager
-$Id: ObjectManager.py,v 1.80 1999/07/22 19:19:22 jim Exp $"""
+$Id: ObjectManager.py,v 1.82 1999/11/04 19:34:20 brian Exp $"""
-__version__='$Revision: 1.80 $'[11:-2]
+__version__='$Revision: 1.82 $'[11:-2]
import App.Management, Acquisition, App.Undo, Globals, CopySupport, Products
import os, App.FactoryDispatcher, ts_regex, Products
@@ -230,12 +230,15 @@
self._setOb(id,object)
object=self._getOb(id)
object.manage_afterAdd(object, self)
- # Try to give user the local role "Owner".
+
+ # Try to give user the local role "Owner", but only if
+ # no local roles have been set on the object yet.
if hasattr(self, 'REQUEST') and hasattr(object, '__ac_local_roles__'):
- user=self.REQUEST['AUTHENTICATED_USER']
- name=user.getUserName()
- if name != 'Anonymous User':
- object.manage_setLocalRoles(name, ['Owner'])
+ if object.__ac_local_roles__ is None:
+ user=self.REQUEST['AUTHENTICATED_USER']
+ name=user.getUserName()
+ if name != 'Anonymous User':
+ object.manage_setLocalRoles(name, ['Owner'])
return id
def manage_afterAdd(self, item, container):
@@ -526,8 +529,7 @@
mtime=self.bobobase_modification_time().timeTime()
# get owner and group
owner=group='Zope'
- for r in self.get_local_roles():
- user,roles=r
+ for user, roles in self.get_local_roles():
if 'Owner' in roles:
owner=user
break
At a guess, the folder that you clone has local roles attached? I think you
would be best off to just force the ownership yourself after the clone:
<dtml-let username="AUTHENTICATED_USER.getUserName()">
<dtml-call "manage_setLocalRoles( username, [ 'Owner' ] )">
</dtml-let>
--
=========================================================
Tres Seaver tseaver@palladion.com 713-523-6582
Palladion Software http://www.palladion.com