segunda-feira, 12 de março de 2007

Adicionando usuários ao trac via script

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?
blog comments powered by Disqus