Opa Marcon, > Aqui no meu trabalho, criamos uma tool que herda a classe MembershipTool > e sobrepõe o método getMemberInfo, até aqui tudo bem. > Uma customização desta tool é fazer com que suas actions apareçam > somente para o Manager, para isso fizemos o seguinte no AppInstall.py: > > [snipped code] > > O código funciona quando se instala o produto, porém quando se reincia a > instância as configurações são perdidas e volta o default do > portal_membership. Eu acredito que o que está acontecendo é que quando > se reinicia a instância as actions são buscadas da classe pai e aí > carregadas, mas como fazer para que isso não aconteça?
está quase tudo certo... só faltou um detalhe... :-) Da forma como está, ele itera sobre as actions e altera elas. Só que elas estão armazenadas numa tupla, e como tu sabes, tuplas são objetos imutáveis. Então quando você altera um dos objetos (uma action) presente na tupla, o Zope 'não sabe' que a tupla foi alterada (na verdade não foi a tupla, mas sim um objeto presente nela), para fazer a persistência automática dos dados. É por isso que quando você reinicia o Zope, volta tudo ao normal... Falta agora indicar ao Zope que os dados do conteúdo da tupla foram alterados e que deve ser efetuado a persistência. Detalhe: esse enrosco todo só acontece quando se altera dados diretos em um tupla, para todo o resto, a persistência é automática e transparente. Segue um pseudo-patch para o teu código: def setupActions(self, out): """Configura actions do portal.""" pm = self.portal_membership id_actions = ['preferences', 'addFavorite', 'mystuff', 'favorites', 'manage_members'] + actions = pm._cloneActions() - for action in pm.listActions(): + for action in actions: if action.id in id_actions: action.permissions=('Manage portal',) out.write('[portal_membership] configurada permissao da action "%s" para ' '"Manage portal".\n' % action.id) + pm._actions = actions Essa última linha é que diz ao Zope que o 'pm' foi alterado e precisa ser salvo. Outra possível saída seria apenas setar 'pm._p_changed = True', mas acredito que com com o _cloneActions o código fica mais legível. HTH, -- Dorneles Treméa X3ng Web Technology Para enviar uma mensagem: zope-pt@yahoogrupos.com.br Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/zope-pt/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html