--------------------------- setup.py --------------------------------
from setuptools import find_packages, setup
# name can be any name. This name will be used to create .egg file.
# name that is used in packages is the one that is used in the trac.ini file.
# use package name as entry_points
setup(
name='Tracbacks', version='0.1',
packages=find_packages(exclude=['*.tests*']),
entry_points = """
[trac.plugins]
tracbacks = tracbacks
""",
)
------------------------- tracbacks.py --------------------------------
# TracBacks plugin
import re
from genshi.builder import tag
from trac.core import *
from trac.ticket import ITicketChangeListener
class TracBacksPlugin(Component):
implements(ITicketChangeListener)
# ITicketChangeListener methods
def ticket_created(ticket):
print ">>>> Ticket", ticket, "has been created"
def ticket_changed(ticket, comment, author, old_values):
print ">>>> Ticket", ticket, "has changed"
print "comment: ", comment
print "author: ", author
print "old_values", old_values
def ticket_deleted(ticket):
print ">>>> Ticket", ticket, "has been deleted"
----------------- debug log ---------------------
trac@bandersnatch:~$ tracd --port 8000 --auth=tracbacks,/home/trac/tracbacks/conf/users.htdigest,trac ~/tracbacks/
Server starting in PID 13362.
Serving on 0.0.0.0:8000 view at http://127.0.0.1:8000/
11:28:18 AM Trac[loader] DEBUG: Adding plugin Tracbacks 0.1 from /home/trac/plugins/tracbacksplugin/tracbacks-plugin
11:28:18 AM Trac[loader] DEBUG: Loading trac.ticket.web_ui from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.mimeview.php from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.ticket.query from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.attachment from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.versioncontrol.svn_fs from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.mimeview.patch from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.mimeview.txtl from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] WARNING: Skipping "trac.mimeview.txtl = trac.mimeview.txtl [textile]": ("textile>=2.0" not found)
11:28:18 AM Trac[loader] DEBUG: Loading trac.admin.web_ui from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.ticket.admin from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.mimeview.rst from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] WARNING: Skipping "trac.mimeview.rst = trac.mimeview.rst [rest]": ("docutils>=0.3" not found)
11:28:18 AM Trac[loader] DEBUG: Loading trac.db.postgres from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.versioncontrol.web_ui from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.timeline from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.mimeview.pygments from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.about from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.ticket.roadmap from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.mimeview.silvercity from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] WARNING: Skipping "trac.mimeview.silvercity = trac.mimeview.silvercity [silvercity]": ("SilverCity>=0.9.4" not found)
11:28:18 AM Trac[loader] DEBUG: Loading trac.wiki.macros from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.db.sqlite from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.wiki.web_ui from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.mimeview.enscript from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.web.auth from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.admin.console from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.db.mysql from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.search from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.prefs from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading trac.ticket.report from /home/trac/lib/python2.5/site-packages/Trac-0.11b2-py2.5.egg
11:28:18 AM Trac[loader] DEBUG: Loading tracbacks from /home/trac/plugins/tracbacksplugin/tracbacks-plugin
11:28:18 AM Trac[default_workflow] DEBUG: Workflow actions at initialization: {'resolve': {'operations': [u'set_resolution'], 'name': 'resolve', 'default': 0, 'newstate': u'closed', 'oldstates': [u'new', u'assigned', u'accepted', u'reopened'], 'permissions': [u'TICKET_MODIFY']}, 'accept': {'operations': [u'set_owner_to_self'], 'name': 'accept', 'default': 0, 'newstate': u'accepted', 'oldstates': [u'new', u'assigned', u'accepted', u'reopened'], 'permissions': [u'TICKET_MODIFY']}, 'leave': {'operations': [u'leave_status'], 'name': 'leave', 'default': 1, 'newstate': u'*', 'oldstates': [u'*'], 'permissions': []}, 'reopen': {'operations': [u'del_resolution'], 'name': 'reopen', 'default': 0, 'newstate': u'reopened', 'oldstates': [u'closed'], 'permissions': [u'TICKET_CREATE']}, 'reassign': {'operations': [u'set_owner'], 'name': 'reassign', 'default': 0, 'newstate': u'assigned', 'oldstates': [u'new', u'assigned', u'accepted', u'reopened'], 'permissions': [u'TICKET_MODIFY']}, '_reset': {'operations': ['reset_workflow'], 'name': 'reset', 'default': 0, 'newstate': 'new', 'oldstates': [], 'permissions': []}}
11:28:18 AM Trac[env] WARNING: base_url option not set in configuration, generated links may be incorrect
11:28:18 AM Trac[main] DEBUG: Dispatching <Request "GET u'/newticket'">
11:28:18 AM Trac[svn_fs] DEBUG: Subversion bindings imported
11:28:18 AM Trac[perm] DEBUG: No policy allowed mchua performing EMAIL_VIEW on <Resource 'ticket'>
11:28:18 AM Trac[chrome] DEBUG: Prepare chrome data for request
11:28:18 AM Trac[perm] DEBUG: No policy allowed mchua performing TRAC_ADMIN on None
11:28:18 AM Trac[perm] DEBUG: No policy allowed mchua performing PERMISSION_GRANT on None
11:28:18 AM Trac[perm] DEBUG: No policy allowed mchua performing PERMISSION_REVOKE on None
11:28:18 AM Trac[perm] DEBUG: No policy allowed mchua performing TICKET_ADMIN on None
11:28:18 AM Trac[perm] DEBUG: No policy allowed mchua performing EMAIL_VIEW on None
11:28:18 AM Trac[session] DEBUG: Retrieving session for ID u'mchua'
11:28:18 AM Trac[perm] DEBUG: No policy allowed mchua performing TICKET_ADMIN on <Resource 'ticket'>
127.0.0.1 - - [10/Apr/2008 11:28:18] "GET /tracbacks/newticket HTTP/1.1" 200 -
11:28:18 AM Trac[main] DEBUG: 468 unreachable objects found.
11:28:19 AM Trac[main] DEBUG: Dispatching <Request "GET u'/chrome/site/your_project_logo.png'">
11:28:19 AM Trac[chrome] WARNING: File your_project_logo.png not found in any of ['/home/trac/tracbacks/htdocs']
11:28:19 AM Trac[main] WARNING: 404 Not Found (File your_project_logo.png not found)
11:28:19 AM Trac[chrome] DEBUG: Prepare chrome data for request
11:28:19 AM Trac[perm] DEBUG: No policy allowed mchua performing TRAC_ADMIN on None
11:28:19 AM Trac[perm] DEBUG: No policy allowed mchua performing PERMISSION_GRANT on None
11:28:19 AM Trac[perm] DEBUG: No policy allowed mchua performing PERMISSION_REVOKE on None
11:28:19 AM Trac[perm] DEBUG: No policy allowed mchua performing TICKET_ADMIN on None
11:28:19 AM Trac[perm] DEBUG: No policy allowed mchua performing EMAIL_VIEW on None
11:28:19 AM Trac[session] DEBUG: Retrieving session for ID u'mchua'
127.0.0.1 - - [10/Apr/2008 11:28:19] "GET /tracbacks/chrome/site/your_project_logo.png HTTP/1.1" 404 -
11:28:19 AM Trac[main] DEBUG: 869 unreachable objects found.
11:28:21 AM Trac[main] DEBUG: Dispatching <Request "POST u'/newticket'">
11:28:21 AM Trac[session] DEBUG: Retrieving session for ID u'mchua'
127.0.0.1 - - [10/Apr/2008 11:28:21] "POST /tracbacks/newticket HTTP/1.1" 303 -
11:28:21 AM Trac[main] DEBUG: Dispatching <Request "GET u'/ticket/4'">
11:28:21 AM Trac[main] DEBUG: 1614 unreachable objects found.
11:28:21 AM Trac[perm] DEBUG: No policy allowed mchua performing TICKET_ADMIN on <Resource u'ticket:4'>
11:28:21 AM Trac[perm] DEBUG: No policy allowed mchua performing EMAIL_VIEW on <Resource u'ticket:4'>
11:28:21 AM Trac[perm] DEBUG: No policy allowed mchua performing TICKET_EDIT_CC on <Resource u'ticket:4'>
11:28:21 AM Trac[session] DEBUG: Retrieving session for ID u'mchua'
11:28:21 AM Trac[api] DEBUG: action controllers: [<trac.ticket.default_workflow.ConfigurableTicketWorkflow object at 0x87aeb6c>]
11:28:21 AM Trac[default_workflow] DEBUG: render_ticket_action_control: action "leave"
11:28:21 AM Trac[default_workflow] DEBUG: render_ticket_action_control: action "resolve"
11:28:21 AM Trac[default_workflow] DEBUG: render_ticket_action_control: action "reassign"
11:28:21 AM Trac[default_workflow] DEBUG: render_ticket_action_control: action "accept"
11:28:21 AM Trac[chrome] DEBUG: Prepare chrome data for request
11:28:21 AM Trac[perm] DEBUG: No policy allowed mchua performing TRAC_ADMIN on None
11:28:21 AM Trac[perm] DEBUG: No policy allowed mchua performing PERMISSION_GRANT on None
11:28:21 AM Trac[perm] DEBUG: No policy allowed mchua performing PERMISSION_REVOKE on None
11:28:21 AM Trac[perm] DEBUG: No policy allowed mchua performing TICKET_ADMIN on None
11:28:21 AM Trac[perm] DEBUG: No policy allowed mchua performing EMAIL_VIEW on None
11:28:21 AM Trac[perm] DEBUG: No policy allowed mchua performing TICKET_ADMIN on <Resource u'ticket:4'>
127.0.0.1 - - [10/Apr/2008 11:28:21] "GET /tracbacks/ticket/4 HTTP/1.1" 200 -
11:28:21 AM Trac[main] DEBUG: 88 unreachable objects found.
11:28:22 AM Trac[main] DEBUG: Dispatching <Request "GET u'/chrome/site/your_project_logo.png'">
11:28:22 AM Trac[chrome] WARNING: File your_project_logo.png not found in any of ['/home/trac/tracbacks/htdocs']
11:28:22 AM Trac[main] WARNING: 404 Not Found (File your_project_logo.png not found)
11:28:22 AM Trac[chrome] DEBUG: Prepare chrome data for request
11:28:22 AM Trac[perm] DEBUG: No policy allowed mchua performing TRAC_ADMIN on None
11:28:22 AM Trac[perm] DEBUG: No policy allowed mchua performing PERMISSION_GRANT on None
11:28:22 AM Trac[perm] DEBUG: No policy allowed mchua performing PERMISSION_REVOKE on None
11:28:22 AM Trac[perm] DEBUG: No policy allowed mchua performing TICKET_ADMIN on None
11:28:22 AM Trac[perm] DEBUG: No policy allowed mchua performing EMAIL_VIEW on None
11:28:22 AM Trac[session] DEBUG: Retrieving session for ID u'mchua'
127.0.0.1 - - [10/Apr/2008 11:28:22] "GET /tracbacks/chrome/site/your_project_logo.png HTTP/1.1" 404 -
11:28:22 AM Trac[main] DEBUG: 389 unreachable objects found.