Problem - setzen von Permissions fuer eine Role im Code

3 messages Options
Embed this post
Permalink
Thomas Graf

Problem - setzen von Permissions fuer eine Role im Code

Reply Threaded More More options
Print post
Permalink
Hallo Liste,
ich hoffe ihr koennt mir mit einem eigentlich recht simplen Problem
helfen.Wie setze ich eine Permission fuer eine Role in einem
zope2-Produkt im Code:

Ich habe zwei Klassen, einen "AppContainer" und einen "Workspace".

>     context.registerClass(
         appcontainer.AppContainer,
         constructors = (
             appcontainer.manage_addAppContainer,
         ),
         permission = "Manage Site"
     )

     context.registerClass(
         workspace.Workspace,
         constructors = (
             workspace.manage_addWorkspace,
         ),
         permission= "ise.exchangeadm: Add Workspace"
     )

Beim anlegen eines AppContainers soll automatisch die Permission
"ise.exchangeadm: Add Workspace" fuer eine Rolle ("Workspace Manager")
gesetzt werden.

Dies habe ich, mit Inspiration von
http://plone.org/documentation/tutorial/manipulating-plone-objects-programmatically/security-and-permission 

versucht das Problem folgendermassen zu loesen:

> class AppContainer( OrderedFolder.OrderedFolder ):
     """Application container for the ISE Exchange Admin Module"""
     interface.implements(IAppContainer)
     meta_type="Application_Container"

     def __init__(self, id):
         self.id = id
         self._addRole('Workspace Manager')
         print self.ac_inherited_permissions(all=True)
         self.manage_permission(
             "ise.exchangeadm: Add Workspace",
             roles=['Workspace Manager'],
             acquire=[False])

Beim Anlegen eines Containers wird zunaechst die Rolle hinzugefuegt und
danach fuer die Rolle die Permission gesetzt. Beim Ausfuehren von
manage_permission wird jedoch folgende Exception geworfen:

Traceback (innermost last):
   Module ZPublisher.Publish, line 119, in publish
   Module ZPublisher.mapply, line 88, in mapply
   Module ZPublisher.Publish, line 42, in call_object
   Module ise.exchangeadm.appcontainer, line 38, in manage_addAppContainer
   Module ise.exchangeadm.appcontainer, line 19, in __init__
   Module AccessControl.Role, line 80, in ac_inherited_permissions
   Module OFS.ObjectManager, line 259, in _subobject_permissions
AttributeError: aq_acquire

Ich nutze Zope 2.11.4,

Wie kann ich eine Permission fuer ein Role beim Anlegen eines Objektes
setzen?

Mit sonnigen Gruessen
Thomas Graf

--
Thomas Graf, B.Sc.
Commercial and technical Services
Fraunhofer-Institut für Solare Energiesysteme ISE
Heidenhofstrasse 2, 79110 Freiburg, Germany
Phone: +49(0)761/4588-5123  Fax: +49(0)761/4588-9123
[hidden email]
http://www.ise.fraunhofer.de




_______________________________________________
zope mailing list
[hidden email]
https://mail.dzug.org/mailman/listinfo/zope
Vladislav Vorobiev-2

Re: Problem - setzen von Permissions fuer eine Role im Code

Reply Threaded More More options
Print post
Permalink
Hallo Thomas,

manage_permission nur wenn das Objekt bereits existiert.

Definiere einfach in deiner Klasse die Methode:

def manage_afterAdd(self, item, container):
     """Diese methode wird nach _setObject aufgerufen von  """
     self.manage_permission('ise.exchangeadm: Add Workspace',
roles=['Workspace Manager'], acquire=0)


Gruß
Vlad

Am 12. August 2009 20:45 schrieb Thomas Graf <[hidden email]>:

> Hallo Liste,
> ich hoffe ihr koennt mir mit einem eigentlich recht simplen Problem
> helfen.Wie setze ich eine Permission fuer eine Role in einem zope2-Produkt
> im Code:
>
> Ich habe zwei Klassen, einen "AppContainer" und einen "Workspace".
>
>>    context.registerClass(
>
>        appcontainer.AppContainer,
>        constructors = (
>            appcontainer.manage_addAppContainer,
>        ),
>        permission = "Manage Site"
>    )
>
>    context.registerClass(
>        workspace.Workspace,
>        constructors = (
>            workspace.manage_addWorkspace,
>        ),
>        permission= "ise.exchangeadm: Add Workspace"
>    )
>
> Beim anlegen eines AppContainers soll automatisch die Permission
> "ise.exchangeadm: Add Workspace" fuer eine Rolle ("Workspace Manager")
> gesetzt werden.
>
> Dies habe ich, mit Inspiration von
> http://plone.org/documentation/tutorial/manipulating-plone-objects-programmatically/security-and-permission
> versucht das Problem folgendermassen zu loesen:
>
>> class AppContainer( OrderedFolder.OrderedFolder ):
>
>    """Application container for the ISE Exchange Admin Module"""
>    interface.implements(IAppContainer)
>    meta_type="Application_Container"
>
>    def __init__(self, id):
>        self.id = id
>        self._addRole('Workspace Manager')
>        print self.ac_inherited_permissions(all=True)
>        self.manage_permission(
>            "ise.exchangeadm: Add Workspace",
>            roles=['Workspace Manager'],
>            acquire=[False])
>
> Beim Anlegen eines Containers wird zunaechst die Rolle hinzugefuegt und
> danach fuer die Rolle die Permission gesetzt. Beim Ausfuehren von
> manage_permission wird jedoch folgende Exception geworfen:
>
> Traceback (innermost last):
>  Module ZPublisher.Publish, line 119, in publish
>  Module ZPublisher.mapply, line 88, in mapply
>  Module ZPublisher.Publish, line 42, in call_object
>  Module ise.exchangeadm.appcontainer, line 38, in manage_addAppContainer
>  Module ise.exchangeadm.appcontainer, line 19, in __init__
>  Module AccessControl.Role, line 80, in ac_inherited_permissions
>  Module OFS.ObjectManager, line 259, in _subobject_permissions
> AttributeError: aq_acquire
>
> Ich nutze Zope 2.11.4,
>
> Wie kann ich eine Permission fuer ein Role beim Anlegen eines Objektes
> setzen?
>
> Mit sonnigen Gruessen
> Thomas Graf
>
> --
> Thomas Graf, B.Sc.
> Commercial and technical Services
> Fraunhofer-Institut für Solare Energiesysteme ISE
> Heidenhofstrasse 2, 79110 Freiburg, Germany
> Phone: +49(0)761/4588-5123  Fax: +49(0)761/4588-9123
> [hidden email]
> http://www.ise.fraunhofer.de
>
>
>
>
> _______________________________________________
> zope mailing list
> [hidden email]
> https://mail.dzug.org/mailman/listinfo/zope
>
>



_______________________________________________
zope mailing list
[hidden email]
https://mail.dzug.org/mailman/listinfo/zope
Thomas Graf

Re: Problem - setzen von Permissions fuer eine Role im Code

Reply Threaded More More options
Print post
Permalink
Hallo Vlad,
danke, genau sowas habe ich gesucht.

sonnige Gruesse
Thomas


Vladislav Vorobiev schrieb:

> Hallo Thomas,
>
> manage_permission nur wenn das Objekt bereits existiert.
>
> Definiere einfach in deiner Klasse die Methode:
>
> def manage_afterAdd(self, item, container):
>      """Diese methode wird nach _setObject aufgerufen von  """
>      self.manage_permission('ise.exchangeadm: Add Workspace',
> roles=['Workspace Manager'], acquire=0)
>
>
> Gruß
> Vlad
>
> Am 12. August 2009 20:45 schrieb Thomas Graf <[hidden email]>:
>> Hallo Liste,
>> ich hoffe ihr koennt mir mit einem eigentlich recht simplen Problem
>> helfen.Wie setze ich eine Permission fuer eine Role in einem zope2-Produkt
>> im Code:
>>
>> Ich habe zwei Klassen, einen "AppContainer" und einen "Workspace".
>>
>>>    context.registerClass(
>>        appcontainer.AppContainer,
>>        constructors = (
>>            appcontainer.manage_addAppContainer,
>>        ),
>>        permission = "Manage Site"
>>    )
>>
>>    context.registerClass(
>>        workspace.Workspace,
>>        constructors = (
>>            workspace.manage_addWorkspace,
>>        ),
>>        permission= "ise.exchangeadm: Add Workspace"
>>    )
>>
>> Beim anlegen eines AppContainers soll automatisch die Permission
>> "ise.exchangeadm: Add Workspace" fuer eine Rolle ("Workspace Manager")
>> gesetzt werden.
>>
>> Dies habe ich, mit Inspiration von
>> http://plone.org/documentation/tutorial/manipulating-plone-objects-programmatically/security-and-permission
>> versucht das Problem folgendermassen zu loesen:
>>
>>> class AppContainer( OrderedFolder.OrderedFolder ):
>>    """Application container for the ISE Exchange Admin Module"""
>>    interface.implements(IAppContainer)
>>    meta_type="Application_Container"
>>
>>    def __init__(self, id):
>>        self.id = id
>>        self._addRole('Workspace Manager')
>>        print self.ac_inherited_permissions(all=True)
>>        self.manage_permission(
>>            "ise.exchangeadm: Add Workspace",
>>            roles=['Workspace Manager'],
>>            acquire=[False])
>>
>> Beim Anlegen eines Containers wird zunaechst die Rolle hinzugefuegt und
>> danach fuer die Rolle die Permission gesetzt. Beim Ausfuehren von
>> manage_permission wird jedoch folgende Exception geworfen:
>>
>> Traceback (innermost last):
>>  Module ZPublisher.Publish, line 119, in publish
>>  Module ZPublisher.mapply, line 88, in mapply
>>  Module ZPublisher.Publish, line 42, in call_object
>>  Module ise.exchangeadm.appcontainer, line 38, in manage_addAppContainer
>>  Module ise.exchangeadm.appcontainer, line 19, in __init__
>>  Module AccessControl.Role, line 80, in ac_inherited_permissions
>>  Module OFS.ObjectManager, line 259, in _subobject_permissions
>> AttributeError: aq_acquire
>>
>> Ich nutze Zope 2.11.4,
>>
>> Wie kann ich eine Permission fuer ein Role beim Anlegen eines Objektes
>> setzen?
>>
>> Mit sonnigen Gruessen
>> Thomas Graf
>>
>> --
>> Thomas Graf, B.Sc.
>> Commercial and technical Services
>> Fraunhofer-Institut für Solare Energiesysteme ISE
>> Heidenhofstrasse 2, 79110 Freiburg, Germany
>> Phone: +49(0)761/4588-5123  Fax: +49(0)761/4588-9123
>> [hidden email]
>> http://www.ise.fraunhofer.de
>>
>>
>>
>>
>> _______________________________________________
>> zope mailing list
>> [hidden email]
>> https://mail.dzug.org/mailman/listinfo/zope
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>>
>>
>> _______________________________________________
>> zope mailing list
>> [hidden email]
>> https://mail.dzug.org/mailman/listinfo/zope

--
Thomas Graf, B.Sc.
Commercial and technical Services
Fraunhofer-Institut für Solare Energiesysteme ISE
Heidenhofstrasse 2, 79110 Freiburg, Germany
Phone: +49(0)761/4588-5123  Fax: +49(0)761/4588-9123
[hidden email]
http://www.ise.fraunhofer.de



_______________________________________________
zope mailing list
[hidden email]
https://mail.dzug.org/mailman/listinfo/zope