﻿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
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
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
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
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
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@…
