Crear una plugins para Trac
-Crear un directorio de trabajo (por ejemplo):
- mkdir /home/usuario/metodologia-0.1
- mkdir /home/usuario/metodologia-0.1/metodologia
- mkdir /home/usuario/metodologia-0.1/metodologia/templates
- mkdir /home/usuario/metodologia-0.1/metodologia/htdocs
- mkdir /home/usuario/metodologia-0.1/metodologia/htdocs/css
-Dentro de metodologia-0.1/metodologia cree el archivo metodologia.py, cuyo comportamiento será anadir un boton al menú de trac o el acceso http://localhost:8000/miproyecto/metodologia
# Componente de automatizacion de la metodologia from trac.core import * from trac.web.chrome import INavigationContributor, ITemplateProvider, add_stylesheet from trac.web.main import IRequestHandler from trac.util import escape, Markup class UserbaseModule(Component): implements(INavigationContributor, IRequestHandler, ITemplateProvider) # INavigationContributor methods def get_active_navigation_item(self, req): return 'metodologia' def get_navigation_items(self, req): yield 'mainnav', 'metodologia', Markup('<a href="%s">Metodologia</a>', self.env.href.metodologia()) # IRequestHandler methods def match_request(self, req): return req.path_info == '/metodologia' def process_request(self, req): add_stylesheet(req, 'me/css/metodologia.css') return 'metodologia.cs', None # ITemplateProvider methods def get_templates_dirs(self): """Return a list of directories containing the provided ClearSilver templates. """ from pkg_resources import resource_filename return [resource_filename(__name__, 'templates')] def get_htdocs_dirs(self): """Return a list of directories with static resources (such as style sheets, images, etc.) """ from pkg_resources import resource_filename return [('me', resource_filename(__name__, 'htdocs'))]
-Crear el archivo de iniciación del modulo denominado __init__.py en el mismo directorio
# Modulo de la metodologia from metodologia import *
-En el directorio metodologia-0.1 crear el archivo de instalacion setup.py
from setuptools import setup PACKAGE = 'TracMetodologia' VERSION = '0.1' setup( name=PACKAGE, version=VERSION, packages=['metodologia'], entry_points={'trac.plugins': '%s = metodologia' % PACKAGE}, package_data={'metodologia': ['htdocs/css/*.css','templates/*.cs']}, keywords = 'trac metodologia', author = 'Erwin Paredes, Juan Vizcarrondo, Juan Bastidas, Ana Rangel', author_email = ' eparedes@cenditel.gob.ve ', url = 'http://fsl.cenditel.gob.ve/pdsl', description = 'Automatizacion de Metodologia de Software Libre', license = '''Copyleft (c) 2008, Erwin Paredes. ''' )
-Crear la plantilla de salida en metodologia-0.1/metodologia/templates/metodologia.cs
<?cs include "header.cs" ?> <?cs include "macros.cs" ?> <div id="content" class="metodologia"> <h1>Metodologia</h1> <hr> <ul> <li>Gestión</li> <li>Administración</li> <li>Desarrollo</li> </ul> </div> <?cs include "footer.cs" ?>
-Crear la hoja de estilos en metodologia-0.1/metodologia/htdocs/css/metodologia.css
div.metodologia h1 { color:blue; }
-Luego de tener estos archivos básicos podemos crear el egg
desde el direcotorio metodologia-0.1
- python setup.py bdist_egg
- cp dist/TracMetodologia-0.1-py2.4.egg /myproyecto/plugins
- python setup.py install
-Modificar el archivo trac.ini que esta en /myproyecto/conf
[components] metodologia.* = enabled
-Reiniciar el sercidor de trac y verificar que funciona el componente.