Adicionando usuários ao trac via script

Esse é meu primeiro post que foi publicado no kodumaro kodumaro também. A partir de agora, você pode me acompanhar lá também. Além disso, estou com um blog separado sobre o b2evolution que você pode acessar em http://b2evolution.waltercruz.com, onde pretendo postar dicas, plugins e muito mais sobre o CMS que eu uso no meu site.

Há um tempo atrás, como todo desenvolvedor que se preze, comecei a usar um controle de versão, no caso, o subversion. Logo depois, descobri o trac, uma ferramenta que agrega ao svn um wiki e um bugtrack. Uma mão na roda pra gerenciamento de projetos!

A ferramenta padrão para administrar o trac é por linha de comando: trac-admin. Sempre que eu criava um novo repositório, precisava adicionar os usuários com permissão de desenvolvedor no trac correspondente a esse repositório. Porque não facilitar as coisas?

Como o trac é feito em python, posso usar a API em um programa. Foi o que fiz. O resultado:


#!/usr/bin/python2.4
# -*- coding: iso-8859-1 -*-
import sys
import os
import trac.scripts.admin as admin
from trac.perm import PermissionSystem as Permission
import pysqlite2

class TracHelper(object):

    developers = ("walter","cacilhas","torcato","will")
    developersPermissions = ("WIKI_ADMIN","REPORT_ADMIN","TICKET_MODIFY")

    def __init__(self,projectPath):
        try:
          self.projectPath = projectPath
          self.env = admin.Environment(self.projectPath)
          self.permissao = Permission(self.env)
        except:
          'Eh necessario especificar um projeto'

    def addDeveloperProfile(self):
        for permission in self.developersPermissions:
            try:
                self.permissao.grant_permission('developer',permission)
            except pysqlite2.dbapi2.IntegrityError, e:
                print('Já existe usuário com essa permissão')
                sys.exit(1)

    def addDevelopers(self):
        for developer in self.developers:
            try:
                self.permissao.grant_permission(developer,'developer')
            except pysqlite2.dbapi2.IntegrityError, e:
                print('O usuário ' + developer + ' já existecom essa permissão')
                sys.exit(1)                

    def destroyDeveloperProfile(self):
        for permission in self.developersPermissions:
            self.permissao.revoke_permission('developer',permission)

if __name__ == "__main__":
      try:
        helper = TracHelper(sys.argv[1])
      except:
        print('É necessário informar o caminho do Projeto')
        sys.exit(1)

      #helper.destroyDeveloperProfile()
      helper.addDeveloperProfile()
      helper.addDevelopers()

O modo de usar é simples: ./usuariostrac.py /var/trac/repositorio .

Dito isso, eis o que descubro hoje: um plugin para o trac para fazer a administração dele via web. Mas diga que não foi mais interessante o passeio pela API do trac?

Endereço de trackback para este post

Trackback URL (clique direito e copie atalho/localização do link)

Sem feedback para esse post ainda

    Share Your Thoughts


    Seu endereço de e-mail não será revelado nesse site.

    Sua URL será exibida.
    PobreExcelente
    (Quebras de linha se tornam <br />)
    (Nome, e-mail & website)
    (Permitir que usuários o contatem através de um formulário eletrônico (seu e-mail não será exibido.))
    Subscribe to comments by email

    You can just use your OpenID to provide your name, e-mail and url.