[[PageOutline(2-5,Contents,pullout)]] = Estimation and Time Tracking == Important Links ''' [https://trac.acceleration.net/TestForTimingAndEstimation/ Demo Site] | [TimeEstimationUserManual User Manual] | [query:status!=closed&component=TimingAndEstimationPlugin&order=priority Open Tickets] | [/newticket?component=TimingAndEstimationPlugin New ticket] ''' == Description This plugin adds estimation and time tracking to Trac. It basically adds !CustomFields and !CustomReports and an interface for filling the dynamic variables for the report. This plugin requires Javascript to be enabled. === Supported Versions This plugin has been tested on: * Python >= 2.5 and perhaps more recent versions of Pythons will work on older Trac versions. * Trac >= 0.10: because we are using ITicketChangeListener this plugin is only compatible with Trac >= 0.10. * Database, should support all three major open source databases: * SQLite3 >= 3.6.8, required for SAVEPOINT calls to work * MySQL * PostgreSQL * Genshi: * for Trac 0.11 you need Genshi >= v5 * for Trac 0.12 you need Genshi >= v6 (Trac installs this automatically) === Documents * [TimeEstimationAndQuotingSpecification Initial Plugin Specification] * [TimeEstimationUserManual User Manual] * See [TimingAndEstimationPlugin#PostInstallationConfigurationOptions Post Installation Configuration Options] for information about this plugin's SVN Post Commit Hook * t:TimeTracking == Bugs/Feature Requests Existing bugs and feature requests for TimingAndEstimationPlugin are [report:9?COMPONENT=TimingAndEstimationPlugin here]. If you have any issues, create a [/newticket?component=TimingAndEstimationPlugin new ticket]. [[TicketQuery(component=TimingAndEstimationPlugin&group=type,format=progress)]] == Download and Source * [/svn/timingandestimationplugin/branches/trac1.0 SVN Trac 1.0 branch]. * [/svn/timingandestimationplugin/branches/trac1.0-Permissions SVN Trac 1.0 branch with permissions]. * [export:timingandestimationplugin/branches/trac1.0 Zipped source for plugin for Trac 1.0]. * [export:timingandestimationplugin/branches/trac1.0-Permissions Zipped source for plugin for Trac 1.0 with permissions]. When downloading these files then either the extension is lost or the filename corrupted. A simple rename to filename.zip seems to resolve it and the contents remain intact. '''Note:''' Email Notifications are currently unaffected by permissions, see #10318. === Browse the source * [source:timingandestimationplugin/branches/trac1.0 Version of this plugin for Trac 1.0]. * [source:timingandestimationplugin/branches/trac1.0-Permissions Version of this plugin for Trac 1.0-Permissions]. === Older Versions Download the source using Svn: * [/svn/timingandestimationplugin/branches/trac0.12 SVN Trac 0.12] * [/svn/timingandestimationplugin/branches/trac0.12-Permissions SVN Trac 0.12] * [#10318 Email Notifications are currently unaffected by permissions] * [/svn/timingandestimationplugin/branches/trac0.11 SVN Trac 0.11 branch] * Trac 0.11 has inconsistent database and transaction management that has been fixed in Trac 0.12, see #8363. * [/svn/timingandestimationplugin/branches/trac0.11-Permissions SVN Trac 0.11 branch With Permissions] * [/svn/timingandestimationplugin/branches/trac0.10 SVN Trac 0.10 branch] - no longer maintained Download the zipped source: * [export:timingandestimationplugin/branches/trac0.12 Zipped source for plugin for Trac 0.12] * [export:timingandestimationplugin/branches/trac0.12-Permissions Zipped source for plugin for Trac 0.12] * [export:timingandestimationplugin/branches/trac0.11 Zipped source for plugin for Trac 0.11] * Trac 0.11 has inconsistent database and transaction management that has been fixed in Trac 0.12, see #8363. * [export:timingandestimationplugin/branches/trac0.11-Permissions Zipped source for plugin for Trac 0.11 with permissions] * [export:timingandestimationplugin/branches/trac0.10 Zipped source for plugin for Trac 0.10] - no longer maintained Browse the source using Trac: * [source:timingandestimationplugin/branches/trac0.12 Version of this plugin for Trac 0.12] * [source:timingandestimationplugin/branches/trac0.12-Permissions Version of this plugin for Trac 0.12-Permissions] * [source:timingandestimationplugin/branches/trac0.11 Version of this plugin for Trac 0.11] * [source:timingandestimationplugin/branches/trac0.11-Permissions Version of this plugin for Trac 0.11-Permissions] * [source:timingandestimationplugin/branches/trac0.10 Version of this plugin for Trac 0.10] - no longer maintained In the repository there is a script folder [browser:timingandestimationplugin/branches/trac0.12/scripts 0.12]/[browser:timingandestimationplugin/branches/trac0.11/scripts 0.11] that contains some Python files to perform billing queries across an entire directory of Tracs and email the results to a specified address. As these work in my setup, some paths at the top of each file may need to be changed. These are mostly included because I wrote them for myself and thought others might want to perform similar tasks. == Installation To install this plugin follow these steps: 1. The plugin can be installed either for a single project or globally. See the details on how to install a Trac plugin at TracPlugins. 1. Enable the plugin in your `trac.ini` file as follows: {{{#!ini [components] timingandestimationplugin.* = enabled }}} * Alternatively, this can be enabled in the Web Admin section of the website as well. 1. Run `trac-admin /path/to/projenv upgrade` and you should get a message like this: {{{ Timing and Estimation needs an upgrade Upgrading Database Creating bill_date table Upgrading fields Upgrading reports Upgrading usermanual Done Upgrading Upgrade done. }}} 1. Restart your webserver. == Configuration === Components By default, the TimingAndEstimationPlugin's four components will all be active. However, you can disable some of the components if you want to. The easiest way to do this is to ensure you have the trac:WebAdmin plugin installed. The plugin's components are: 1. !TimeTrackingSetupParticipant: required component. 1. !TimeTrackingTicketObserver: ensures that the "Total Hours" values are updated when a user edits a ticket's "Add Hours to Ticket" field. You would not normally want to disable this component. 1. !TicketWebUiAddon 1. !TimingEstimationAndBillingPage === Permissions (Trac >= 0.11 only) * [wiki:TimeEstimationUserManual#Configuration] has section about configuring permission if you are using the permission enabled branch '''[#10318 Email Notifications are currently unaffected by permissions]''' === Post Commit Hooks The [browser:timingandestimationplugin/branches/trac0.12/scripts/ scripts folder] contains various post-commit scripts. The svn and git post receive/commit hooks call the [browser:timingandestimationplugin/branches/trac0.12/scripts/trac-post-commit.py trac-post-commit.py] script with the correct command line arguments (see #8737 for more information and an alternative single file git-post-receive). There are a simple [browser:timingandestimationplugin/branches/trac0.12/scripts/svn-post-commit.sh svn-post-commit.sh], a simple [browser:timingandestimationplugin/branches/trac0.12/scripts/git-post-receive git-post-receive], and a more complex [browser:timingandestimationplugin/branches/trac0.12/scripts/git_post_receive.py git_post_receive.py] that tries to ensure that each commit is sent to Trac only once (by default moving a commit from one branch to another will cause the comment (and time) to be reposted to Trac, resulting in unintentional extra time on tickets. * [wiki:TimingAndEstimationSVNPostCommitHook SVN Post-Commit-Hook] Clock time and make comments from your svn commit message * ''' [browser:timingandestimationplugin/branches/trac0.12/scripts/trac-post-commit.py This plugin's version of the post-commit-hook for Trac 0.12] ''' * ''' [browser:timingandestimationplugin/branches/trac0.11/scripts/trac-post-commit.py This plugin's version of the post-commit-hook for Trac 0.11] ''' * ''' [browser:timingandestimationplugin/branches/trac0.10/scripts/trac-post-commit.py This plugin's version of the post-commit-hook for Trac 0.10] ''' == Uninstallation * There is an [browser:timingandestimationplugin/branches/trac0.12/scripts/uninstall.py uninstall script] in the [browser:timingandestimationplugin/branches/trac0.12/scripts/ scripts] folder that tries to make uninstall easy. It is not guaranteed to uninstall everything, but it should get you most of the way there. * See #995, an old uninstall ticket, which might provide some insight. == Patches * #3081 - [attachment:ticket:3081:reports.patch Extra remaining hours after the ticket is closed inconsistency] * #5195 - [/attachment:ticket:5195:timingandestimation.patch Patch to allow development time and time spend writing automated tests to be tracked separately on the same ticket] * #7142 - [/attachment:ticket:7142:timingandestimation.diff Patch to allow internal checkbox to be easily removed] * #7688 - [http://www.eclipse.org/forums/index.php?t=msg&S=f840058166cbbdd857c10831379f450a&th=21872 Patch (for Mylyn) integrating TimingAndEstimationPlugin with Eclipse Mylyn ] == Related Plugins * TracHoursPlugin is a different plugin trying to accomplish the same thing as TimingAndEstimationPlugin, but in a different way. * EstimationToolsPlugin makes pretty pictures based on estimated hours field (which this plugin can provide). * ScrumBurndownPlugin makes use of this plugin to provide a javascripted daily burndown chart, useful in the agile development methodology known as Scrum. * RoadmapHoursPlugin makes the roadmap and milestone views be based on the hours provided by TimingAndEstimationPlugin. * WorkLogPlugin gives an interface that allows you to record time in a work log type format (start and stop tasks). * TimeVisualizerPlugin is the same as ScrumBurndownPlugin, except is much more flexible and doesn't change the database in any way, but rather reads history data provided by TimingAndEstimationPlugin and Trac itself. For details see [browser:timevisualizerplugin/branches/TimeVisualizer_0.4/doc/InitialDesignGoals InitialDesignGoals]. == Interacting with T&E If you want a plugin that you are writing to add reports to the management page, there is a file, [browser:timingandestimationplugin/branches/trac0.10/timingandestimationplugin/reportmanager.py reportmanager.py], that should make interacting with its reports easier. == Recent Changes [[ChangeLog(timingandestimationplugin, 3)]] == Author/Contributors '''Author:''' [wiki:bobbysmith007] [[BR]] '''Maintainer:''' [[Maintainer]] [[BR]] '''Contributors:''' * [http://www.aquafold.com/ Aquafold] has provided a license to their excellent Aqua Data Studio application to help further development [[Image(TimeEstimationUserManual:Aqua_Fold_Logo_16color.gif)]] * [http://www.obsidiansoft.com/ Obsidian Software] sponsored the work to create a permission enabled branch [[Image(TimeEstimationUserManual:obsidian-logo.gif)]] * Alessio Massaro: wiki:masariello * Helped Get Reports working in postgres and started moving toward generic work rather than hours * kkurzweil@lulu.com * helped postgresql database backend compatibility * Jonas Borgstrom : t:wiki:JonasBorgstrom * made it so that base_url was unnecessary * [wiki:coling Colin Guthrie] * Refactored custom reports stuff into a single class/module that can be copied to other plugins, to make interaction with T&E easier. * David Abrahams * Trac.11 - Stream filters to prettify the Reports Screen and make !TotalHours not editable * Tay Ray Chuan * Added a stopwatch to the ticket pages * Josh Godsiff, for [http://oxideinteractive.com.au Oxide Interactive] * added props table client reformatting to remove extra whitespace