Cintillo Institucional

Crear una plugins para Trac

-Crear un directorio de trabajo (por ejemplo):

-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

-Modificar el archivo trac.ini que esta en /myproyecto/conf

[components]
metodologia.* = enabled

-Reiniciar el sercidor de trac y verificar que funciona el componente.

Generación de plugins para Trac (última edición 2008-08-12 15:16:29 efectuada por eparedes)