﻿ticket	summary	type	release	owner	status	created	modified	_description	_reporter
13907	Make compatible with Trac 1.4 and above	defect	1.4	Ryan J Ollos	assigned	2020-11-12T17:39:21+01:00	2021-11-28T14:40:54+01:00	It seems like the plugin is not working on 1.4.2, which is really sad as it is such a great plugin! We cannot migrate to 1.4.2 because of this...	Andreas
8517	"""Save Query"" at the bottom of the page doesn't work"	defect	0.11	EmeCas	assigned	2011-02-18T09:35:46+01:00	2017-05-18T23:42:22+02:00	"When i clic on ""Save Query"" at the bottom of ""Hours"" page nothing is spent.

can't I save my query ?

How can i fix it ?"	anonymous
8264	Insert add hours dialog into ticket template rather than having a sidebar	enhancement	0.11	EmeCas	assigned	2010-12-04T04:58:53+01:00	2022-04-13T04:53:55+02:00	"Rather than having the add hours sidebar on the ticket page, we'll inject the add hours into the ticket template, like the DuplicateTicketSearchPlugin and TracTicketChangelogPlugin do.

The TicketSidebarProviderPlugin dependency will be removed.

[[Image(HoursSideBar.png,100%)]]"	Ryan J Ollos
7642	Exception when adding a filter on the Hours page	defect	0.12	EmeCas	assigned	2010-09-06T18:12:44+02:00	2017-10-27T23:45:29+02:00	"We had the TracHoursPlugin installed on 0.11.7 and reinstalled it with 0.12 on a new machine. 

When trying to add a filter to the hours query form, an exception is thrown:

{{{
AttributeError: 'list' object has no attribute 'setdefault'

Stacktrace:
File ""/usr/local/lib/python2.6/dist-packages/Trac-0.12-py2.6.egg/trac/web/main.py"", line 513, in _dispatch_request
  dispatcher.dispatch(req)
File ""/usr/local/lib/python2.6/dist-packages/Trac-0.12-py2.6.egg/trac/web/main.py"", line 235, in dispatch
  resp = chosen_handler.process_request(req)
File ""/usr/local/lib/python2.6/dist-packages/TracHoursPlugin-0.5.2-py2.6.egg/trachours/hours.py"", line 234, in process_request
  return self.process_timeline(req)
File ""/usr/local/lib/python2.6/dist-packages/TracHoursPlugin-0.5.2-py2.6.egg/trachours/hours.py"", line 509, in process_timeline
  return self.display_html(req, query)
File ""/usr/local/lib/python2.6/dist-packages/TracHoursPlugin-0.5.2-py2.6.egg/trachours/hours.py"", line 615, in display_html
  constraint = constraints.setdefault(field, {})
}}}"	technik@…
6293	Show estimated time broken down by status	enhancement	0.11	EmeCas	assigned	2009-12-04T21:28:02+01:00	2018-06-30T00:55:34+02:00	"Currently TracHours shows the total estimated hours for all tickets in the milestone.

It would be handy to see somewhere in the Roadmap the estimates broken down by status, so we can see what the estimated time remaining is, and the time we had estimated for the work completed so far.

This would allow us to more easily calculate our velocity - that is, the ratio of our estimated hours to actual hours.

"	dobesv@…
4371	option to display hours in ticket comments even when no description is added	enhancement	0.11	EmeCas	assigned	2009-01-04T14:50:04+01:00	2018-06-05T03:29:38+02:00	currently (and deliberately) hours are only noted in comments when a description is added to the hours. a {{{BoolOption}}} could be added that displays each hours addition/change in the tickets even when no description is added	Jeff Hammel
4437	Multiproject report does not show projects	defect	0.11	EmeCas	assigned	2009-01-12T15:24:47+01:00	2018-06-30T00:54:08+02:00	"I inbstalled trac in multiproject configuration, using c:/trac as root dir and hanging several project below it.
I also installed Trac Hours as time tracker, and after some minor issues everything went ok.
The only report not working is multiproject report, the project list appears empty and hence none is shown as time consumed.
I checked environment variables and works fine. My fast exploration into code gave me no clue aboou what it is going on, except that apparenty track hourse uses ""get project from url"" method or similar.
By the way I attach the piece of apache configuration for mod_python and trac environment:


{{{
<Location />
   AuthType Basic
   AuthName ""trac""
   AuthUserFile /trac/trac.htpasswd
   Require valid-user
   SetHandler mod_python
   PythonInterpreter main_interpreter
   PythonHandler trac.web.modpython_frontend 
   PythonOption TracEnvParentDir /trac
   PythonOption TracUriRoot /
</Location>	

<Location /css>
   SetHandler None
   Options FollowSymLinks
   Order allow,deny   
   Allow from All
</Location>

Alias /css ""C:/Trac_Templates/css""
}}}
 "	anonymous
4440	No worker filter in /hours	enhancement	0.11	EmeCas	assigned	2009-01-12T23:19:32+01:00	2018-06-06T00:41:06+02:00	"I'd like to create a ""My Hours"" query so that people can see all of their hours in one place without scrolling through the full /hours screen.

When I pull up the /hours screen I see filters for the ticket reporter, owner, and CC fields, but not one for the worker who is reporting hours on the ticket.  "	chuntley@…
4476	TracHours causes internal error after migration from SQLite to PostgreSQL	defect	0.11	EmeCas	assigned	2009-01-17T16:26:01+01:00	2018-06-05T03:33:42+02:00	"When I enable !TracHours on a Trac that I migrated from sqlite to postgresql, I get and !IndexError: list index out of range error every time I try to view a ticket. 

The traceback is 
{{{
File ""/usr/lib/python2.4/site-packages/trac/web/main.py"", line 423, in _dispatch_request
  dispatcher.dispatch(req)
File ""/usr/lib/python2.4/site-packages/trac/web/main.py"", line 219, in dispatch
  data, content_type)
File ""/usr/lib/python2.4/site-packages/trac/web/chrome.py"", line 690, in render_template
  stream |= self._filter_stream(req, method, filename, stream, data)
File ""/usr/lib64/python2.4/site-packages/genshi/core.py"", line 128, in __or__
  return Stream(_ensure(function(self)), serializer=self.serializer)
File ""/usr/lib/python2.4/site-packages/trac/web/chrome.py"", line 777, in inner
  data)
File ""/usr/lib/python2.4/site-packages/TracHoursPlugin-0.2.-py2.4.egg/trachours/hours.py"", line 244, in filter_stream
  stream = handler(req, stream, data)
File ""/usr/lib/python2.4/site-packages/TracHoursPlugin-0.2.-py2.4.egg/trachours/hours.py"", line 1017, in filter_ticket
  totalhours = [ field for field in data['fields'] if field['name'] == 'totalhours' ][0]
}}}

From reading [http://trac-hacks.org/ticket/4325 elsewhere], it appears that this might have something to do with sequences in Postgresql not being updated properly in the migration. However, I thought I'd report it here because [http://trac-hacks.org/ticket/4111 others seems might be having the same problem]."	chuntley@…
4663	/hours shows hours events, not tickets	enhancement	0.11	EmeCas	assigned	2009-02-19T17:17:27+01:00	2018-06-05T03:26:09+02:00	"the `/hours` query view shows hours-worked events.  Instead, these could be grouped by tickets and amalgamated.  Sometimes you want to see these events...sometimes you want them grouped by...whatever....sometimes you just want to see the hours on a per ticket basis and don't want to total the hours events themselves.

See screenshot.  Two hours events, one ticket."	Jeff Hammel
4979	Column 'time_started' content	defect	0.11	EmeCas	assigned	2009-04-24T17:24:32+02:00	2018-06-05T03:28:34+02:00	"Hi, when i add hours on a date different from sysdate, the plugin puts '00:00:00' on column 'time_started'. Ex: Today = '2009-04-24' , Hours worker = '2009-04-23'. When i filtered hours worked from '2009-04-23' to '2009-04-23' this hours don´t appear on the result, only on the filter '2009-04-22' to '2009-04-23'. 
Thanks."	anonymous
4998	Optimize a lot the Roadmap	enhancement	0.11	EmeCas	assigned	2009-04-28T16:50:23+02:00	2017-08-08T17:57:45+02:00	"Hi,

Since I've installed this plugin, I've experienced a lot of slowdown mainly due to the roadmap addition of TracHours (1 second without the plugin to 12~14 second with the plugin to see the roadmap).

Therefore here a patch to return to the old (and good) speed. The trick used to get rid of the date may not be liked but it works (tm).

{{{
Index: trachours/hours.py
===================================================================
--- trachours/hours.py  (révision 5559)
+++ trachours/hours.py  (copie de travail)
@@ -1191,28 +1191,23 @@

             db = self.env.get_db_cnx()
             cursor = db.cursor()
-            cursor.execute(""select id from ticket where milestone='%s'"" % milestone.name)
-            tickets = [i[0] for i in cursor.fetchall()]
+            cursor.execute(""select t.id, c.value, sum (h.seconds_worked) from ticket t left join ticket_custom c on (c.ticket = t.id and c.name = 'estimatedhours') left join ticket_time h on (h.ticket = t.id) where milestone = '%s' group by t.id, c.value"" % milestone.name)

-            if tickets:
-                hours[milestone.name]['date'] = Ticket(self.env, tickets[0]).time_created
-            for ticket in tickets:
-                ticket = Ticket(self.env, ticket)
-
+            for ticket, estimated, whours in cursor:
                 # estimated hours for the ticket
                 try:
-                    estimatedhours = float(ticket['estimatedhours'])
+                    estimatedhours = float(estimated)
                 except (ValueError, TypeError):
                     estimatedhours = 0.
                 hours[milestone.name]['estimatedhours'] += estimatedhours

                 # total hours for the ticket
-                totalhours = self.get_total_hours(ticket.id)
+                try:
+                    totalhours = float(whours)
+                except (ValueError, TypeError):
+                    totalhours = 0.
                 hours[milestone.name]['totalhours'] += totalhours
-
-                # update date for oldest ticket
-                if ticket.time_created < hours[milestone.name]['date']:
-                    hours[milestone.name]['date'] = ticket.time_created
+
             # seconds -> hours
             hours[milestone.name]['totalhours'] /= 3600.

@@ -1235,11 +1230,10 @@
                 if estimatedhours:
                     items.append(tag.dt(""Estimated Hours:""))
                     items.append(tag.dd(str(estimatedhours)))
-                date = hours['date']
                 link = self.href(""hours"", milestone=milestone,
-                                 from_year=date.year,
-                                 from_month=date.month,
-                                 from_day=date.day)
+                                 from_year=1980,
+                                 from_month=1,
+                                 from_day=1)
                 items.append(tag.dt(tag.a(""Total Hours:"", href=link)))
                 items.append(tag.dd(tag.a(hours_format % totalhours, href=link)))
                 return iter(tag.dl(*items))
}}}"	Sébastien Lucas
5510	How can i query to calculate my hours using trac hours plugin	enhancement	0.11	EmeCas	assigned	2009-07-14T15:20:18+02:00	2018-06-30T00:55:09+02:00	"Hi,

i have installed trachours plugin and im able to generate reports quite efficiently. But im feeling hard to calculate my hours. when i run a query for 1 month . Im getting the table which has ticket , summary, estimated hours, work done on, hours worked and worker..

The report contains the hours added on the same date repeatedly. Can i calculate the hours on the same date and give a report by date.

Can u please help me on this"	sivaprakash123@…
6312	Ability to add Custom Columns to /hours view	enhancement	0.11	EmeCas	assigned	2009-12-10T15:55:43+01:00	2017-08-08T17:53:45+02:00	"I would like to have the ability to add some custom columns to the /hours view.  For example, if I had a custom ticket field such as ""Company"", it would be beneficial to add it to /hours view and to be able to group by Company.

"	alc@…
8280	Make a page to organize the queries	enhancement	0.11	EmeCas	assigned	2010-12-07T03:18:22+01:00	2017-08-08T17:55:06+02:00	"Currently, the '''List Saved Queries''' page is pretty ugly, and two of the queries are just sitting at the top of the Hours page: '''Cross-project hours''' and '''User hours'''. There is also a saved query for ''hours from the past week'' on the Hours page, and another for ''hours from the past week on the User Hours page.

For lack of a better idea at the moment, lets make a page with a layout like the Reports page, which lists all of the Save Queries."	Ryan J Ollos
10553	Allow ticket hours to be reported to RSS/CSV	enhancement		EmeCas	assigned	2012-10-27T00:39:22+02:00	2018-06-06T00:39:27+02:00	As suggested in [/ticket/7723#comment:15 comment:15:ticket:7723].	Ryan J Ollos
10554	Text field should be clarified as either minutes or fractional hours.	enhancement		EmeCas	assigned	2012-10-27T00:40:57+02:00	2017-05-29T17:41:44+02:00	As suggested in [/ticket/7723#comment:15 comment:15:ticket:7723]. Currently it is in fractional hours.	Ryan J Ollos
11877	Add i18n/l10n	enhancement		EmeCas	assigned	2014-07-16T21:08:48+02:00	2017-08-08T17:47:33+02:00	Add i18n/l10n localization.	Ryan J Ollos
12365	Unable to update RSS feed	defect	0.12	EmeCas	assigned	2015-05-25T09:34:28+02:00	2018-06-06T00:40:32+02:00	"Hello,

When i press RSS Feed (Hours tab) i have the following information:

''Internet Explorer was unable to update this feed and will try again''

I can do this only one time. I set the feed properties in the IE but doesn't help.

Thanks in advance.

Best regards
"	Rastlin
13129	Make compatible with Trac 1.2	enhancement	1.2	EmeCas	assigned	2017-03-26T04:53:14+02:00	2017-05-29T22:06:11+02:00	Changes are likely needed to be compatible with Trac 1.2. See gmessage:trac-users:8PjFZQRSPgI/NnAsl9W-AQAJ.	Ryan J Ollos
13404	Deletion of Filters not possible	defect	1.2	EmeCas	assigned	2018-04-05T10:27:33+02:00	2018-04-06T17:50:18+02:00	After adding a filter, it is not possible to delete it by clicking on the (-) button (see Screenshot) - nothing happens	Andreas
8835	fields layout is broken if dynamicfields plugin enabled	enhancement	0.11	EmeCas	assigned	2011-05-26T07:09:48+02:00	2017-06-14T01:40:10+02:00	"the field totalhours is replaced from input field to simple text in hours.py, this will confuse DynamicFieldsPlugin, following is my quick fix:

{{{
Index: branches/0.11/trachours/hours.py
===================================================================
--- branches/0.11/trachours/hours.py    (revision 10223)
+++ branches/0.11/trachours/hours.py    (working copy)
@@ -318,11 +318,12 @@
             ticket_id = data['ticket'].id
             if ticket_id is None: # new ticket
                 field = '0'
+                stream |= Transformer(""//input[@id='field-totalhours']"").attr('disabled', 'disabled').attr('value', field)
             else:
                 hours = '%.1f' % (self.get_total_hours(ticket_id) / 3600.0)
                 field = tag.a(hours, href=req.href('hours', data['ticket'].id), title=""hours for ticket %s"" % data['ticket'].id)
+                stream |= Transformer(""//input[@id='field-totalhours']"").replace(field)
             totalhours['rendered'] = field
-            stream |= Transformer(""//input[@id='field-totalhours']"").replace(field)

         return stream
}}}"	uray
4373	support for mastertickets	enhancement	0.11	EmeCas	assigned	2009-01-04T14:59:25+01:00	2018-06-05T03:32:39+02:00	"If the MasterTicketsPlugin is used in conjunction with the TracHoursPlugin the total hours from ""child"" tickets could be counted towards a master ticket"	Jeff Hammel
4374	When adding hours and description no email notifications are sent	enhancement	0.11	EmeCas	assigned	2009-01-04T15:02:05+01:00	2018-06-06T00:41:48+02:00	When adding hours and description no email notifications are sent.  They should be, at least optionally.	Jeff Hammel
4415	hours could have 'types' (labels)	enhancement	0.11	EmeCas	assigned	2009-01-09T13:23:26+01:00	2017-05-29T17:40:03+02:00	hours could have types that could be queried on;  types would be selected via checkbox in the /query interface (types could be something like Client A, Client B).  this way, different occupations of time could be reported on, assessed, and managed	Jeff Hammel
4445	use a date picker	enhancement	0.11	EmeCas	assigned	2009-01-13T17:20:39+01:00	2017-06-14T01:06:14+02:00	"it would be nice to use a date picker for entering the date, e.g. like DateFieldPlugin.
"	anonymous
4414	other export formats should be defined	enhancement	0.11	EmeCas	assigned	2009-01-09T13:08:55+01:00	2017-10-27T23:49:06+02:00	various export formats could and should be supported by the TracHoursPlugin, for instance csv, tsv, etc.  this is necessary to interface with other software to build a complete time-tracking interfaceable solution	Jeff Hammel
4416	add ability to clock on/off of working on a ticket	enhancement	0.11	EmeCas	assigned	2009-01-09T13:28:16+01:00	2017-10-27T23:29:58+02:00	"TracHoursPlugin should have the ability to clock on/clock off for tickets, a la the WorkLogPlugin.  When a !RepositoryHooksSystemPlugin is written for annotating hours, it should also add the ability to clock off as well if the ticket status changes
"	Jeff Hammel
12396	Add option to force specific increments via UI control	enhancement	0.12	EmeCas	assigned	2015-06-11T15:49:14+02:00	2018-06-30T00:56:02+02:00	"An optional feature that when enabled will:
1. change the free text hour/minute entry boxes into a dropdown or spinner
2. allow incrementing/decrementing via this control only in configuration-specified amounts

Our workplace only wants hours reported in 30 minute or 1 hour increments. There's no reason to allow the user to type any number in."	zabeus@…
13700	Please publish on PyPI	task		EmeCas	new	2019-11-28T11:02:57+01:00	2019-11-28T11:02:57+01:00	Please publish the plugin on [https://pypi.org PyPI].	Massimo
14106	TemplateSyntaxError: Encountered unknown tag 'time', whenever TracHoursSidebarProvider is enabled.	defect	1.4	EmeCas	new	2022-01-08T11:24:06+01:00	2022-01-16T07:27:14+01:00	I know probably is an installation problem. I have already reinstalled TracHoursPlugin and dependencies two times but I can't find what I'm doing wrong.	anonymous
13197	TICKET_ADD_HOURS permission can edit Total Hours in browser	defect	1.2	EmeCas	accepted	2017-05-31T16:45:17+02:00	2017-06-09T00:35:16+02:00	"Using the Chrome browser, a developer can edit the hours field on the ticket page.

If the user has the TICKET_VIEW_HOURS permission, for the Total Hours field they get a link to the hours page.  If the user has the TICKET_ADD_HOURS permission, only in Chrome browser, they can edit the Total Hours field."	anonymous
13567	Please add permission HOURS_ADMIN	enhancement	1.2	EmeCas	accepted	2019-06-26T10:33:02+02:00	2019-06-26T22:05:55+02:00	"Hello,

the permission for ""the hours of others"" currently is TRAC_ADMIN. However I don't like to grant TRAC_ADMIN to every project manager."	Massimo
