reactionTime() extension calculates time between the start of the issue and reaction to it from one of the responsible people (i.e. it does not count customers' follow up posts).
I am using "Adding a time log to your issues" from customization docs, if you are not, remove 'timelog'.
In the html folder of your tracker home add the following contents to a file 'issue.item.html':
<p tal:condition="python:request.user.hasPermission('Edit', 'timelog') and context.id">
Reaction time <b><tal:x replace="python:utils.reactionTime(context._klass.history(context._nodeid))" /></b>
, all time <b><tal:x replace="python:utils.allTime(context.creation.plain(), context.activity.plain())" /></b>
</p>In the extensions folder of your tracker home add a file called 'timespent.py' with the following contents:
import time, datetime, re
def reactionTime(history):
i = 0
while i < len(history):
if re.search(history[i][2], ('1 3 4 6')):
return allTime(str(history[0][1]), str(history[i][1]))
i += 1
return "none"
def allTime(time1, time2):
time_tuple1 = time.strptime(time1, "%Y-%m-%d.%H:%M:%S")
time_tuple2 = time.strptime(time2, "%Y-%m-%d.%H:%M:%S")
d1 = datetime.datetime(*time_tuple1[:6])
d2 = datetime.datetime(*time_tuple2[:6])
return d2 - d1
def init(instance):
instance.registerUtil('reactionTime', reactionTime)
instance.registerUtil('allTime', allTime)reactionTime() counts time between issue creation and the first reaction of users 1, 3, 4 or 6. If you want to count reaction time for issues created by users 1, 3, 4 or 6, replace "i = 0" with "i = 1" in reactionTime(). allTime() counts time delta between 2 dates and writes result in format like this: "16 days, 0:17:45".