2009/4/17 Álvaro J. Iradier <[email protected]>:
>
>>> I'm working on a kind of multiproject plugin (just adding some
>>> multi-project functionality to a group of Trac projects). One of the
>>> modules is "Shared Templates". You can define some templates in the
>>> master project, with a special name like GlobalTemplates/MyTemplate,
>>> and you can "inherit" these templates in all the other projects. So,
>>> when you create a blank wiki page, you are shown the local templates,
>>> and the templates from master project that match a given pattern (e.j.
>>> GlobalTemplates/*).
>>>
>>> Right now this is working, so global templates are listed in the child
>>> projects when doing a [[TitleIndex]], shown in the available templates
>>> list when creating a new page, and the contents of the template is
>>> recovered.
>>>
>>> Also, when you go to /wiki/PageTemplates/GlobalTemplates/MyTemplate in
>>> the child project, the template from the master project is displayed.
>>> Here is where I want to cheat permissions. I don't want to allow
>>> editing / deleting of the master project templates from a child
>>> project. It doesn't work anyways, but I don't want the "Edit" or
>>> "Delete" button to be displayed, among others. So I thought I could
>>> add a PermissionPolicy to detect this situation, and deny all
>>> permissions except WIKI_VIEW.
>>>
>>> I algo thought about messing with req.perm (permission cache), but I
>>> found both options too intrusive.
>>>
>>> What do you think is the best approach?
>>>
>>> Thanks.
>>
>> Couldn't you just have the permission policy deny
>> WIKI_EDIT/WIKI_DELETE on the global templates if the current
>> environment is not the master environment?
>>
>
> That's exactly the point. I implement IPermissionPolicy on my plugin,
> and check if resource is a global template and permission is WIKI_EDIT
> / WIKI_DELET in check_permission, to deny it.
>
> The only problem is, I have to manually do:
>
> [trac]
> permission_policies = MyPluginPermissionPolicy,
> DefaultPermissionPolicy, LegacyAttachmentPolicy
>
> in trac.ini. I would like to avoid this, and make my plugin
> automatically add itself to the permission policies list.

You could possibly access the Config object directly.

env.config.set('trac', 'permission_policies',
'MyPluginPermissionPolicy,' + orig_policies)

The only problem is this will be written to the config when .save() is
called...but if that's your intent anyway...

>
> Greets.
>
> --
> Álvaro J. Iradier Muro
> Departamento de Desarrollo
> [email protected]
>
> Polar Technologies
> T +34 976 527 952
> F +34 976 466 125
> www.polartech.es
>
> Antes de imprimir este mensaje, por favor, compruebe que es verdaderamente
> necesario. El medioambiente es cosa de todos.
>
> AVISO LEGAL
> Este mensaje, y en su caso, cualquier fichero anexo al mismo, puede contener
> información confidencial, siendo para uso exclusivo del destinatario,
> quedando prohibida su divulgación, copia o distribución a terceros sin la
> autorización expresa del remitente. Si Vd. ha recibido este mensaje
> erróneamente, se ruega lo notifique al remitente y proceda a su borrado.
> Gracias por su colaboración.
>
> >
>



-- 
"Life? Don't talk to me about life." - Marvin

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Trac 
Development" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/trac-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to