= 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('Metodologia', 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''''' {{{

Metodologia


}}} -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.