You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bloodhound.apache.org by hu...@apache.org on 2013/07/23 02:16:16 UTC

svn commit: r1505863 - in /bloodhound/trunk: bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html bloodhound_theme/bhtheme/templates/bh_report_view.html trac/trac/ticket/api.py trac/trac/ticket/report.py

Author: huaxiang
Date: Tue Jul 23 00:16:15 2013
New Revision: 1505863

URL: http://svn.apache.org/r1505863
Log:
https://issues.apache.org/bloodhound/ticket/574
Display historical status changes for all tickets

Modified:
    bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html
    bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html
    bloodhound/trunk/trac/trac/ticket/api.py
    bloodhound/trunk/trac/trac/ticket/report.py

Modified: bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html
URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html?rev=1505863&r1=1505862&r2=1505863&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html (original)
+++ bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html Tue Jul 23 00:16:15 2013
@@ -61,7 +61,7 @@
                 }${'__style__' in row and row.__style__+';' or None
                 }${fullrow and 'border: none; padding: 0;' or None}">
 
-              <td py:if="use_groups" py:choose="" 
+              <td py:if="use_groups" py:choose=""
                   style="background: none repeat scroll 0 0 #FFFFFF; color: #333333;">
                 <py:when test="idx == 0 and value_for_group and not fullrow">
                   $value_for_group
@@ -75,33 +75,33 @@
                 <py:if test="not cell.header.hidden">
                   <py:with vars="col = cell.header.col.strip('_')">
                     <py:choose>
-  
+
                       <!--! for the report listing -->
                       <py:when test="col == 'report'">
                         <td class="$col" py:attrs="td_attrs">
                           <a title="View report" href="${href.report(cell.value)}">{$cell.value}</a>
                         </td>
                       </py:when>
-  
+
                       <py:when test="col == 'title'">
                         <td class="$col" py:attrs="td_attrs">
                           <a title="View report" href="${href.report(row.id)}">$cell.value</a>
                         </td>
                       </py:when>
-  
+
                       <!--! for the ticket listing -->
                       <py:when test="col in ('ticket', 'id')">
                         <td class="ticket" py:attrs="td_attrs">
                           <a title="View ${row.resource.realm}" href="${row.href if row.href else url_of(row.resource)}">${shortname_of(row.resource)}</a>
                         </td>
                       </py:when>
-  
+
                       <py:when test="col == 'summary' and row.id">
                         <td class="$col" py:attrs="td_attrs">
                           <a title="View ${row.resource.realm}" href="${row.href if row.href else url_of(row.resource)}">$cell.value</a>
                         </td>
                       </py:when>
-  
+
                       <!--! generic fields -->
                       <py:when test="col == 'time'" py:with="value = int(cell.value) if isinstance(cell.value, basestring) else cell.value">
                         <td class="date" py:attrs="td_attrs">${cell.value != '' and format_time(value) or '--'}
@@ -113,7 +113,7 @@
                         </td>
                       </py:when>
 
-                      <py:when test="col == 'datetime'" py:with="value = int(cell.value) if isinstance(cell.value, basestring) else cell.value">
+                      <py:when test="col in ('datetime','tctime')" py:with="value = int(cell.value) if isinstance(cell.value, basestring) else cell.value">
                         <td class="date" py:attrs="td_attrs">${cell.value != '' and format_datetime(value) or '--'}
                         </td>
                       </py:when>
@@ -123,18 +123,18 @@
                           ${wiki_to_html(context(row.resource), cell.value)}
                         </td>
                       </py:when>
-  
+
                       <py:when test="col == 'milestone'">
                         <td class="$col" py:attrs="td_attrs">
                           <a title="View milestone" href="${href.milestone(cell.value)}">$cell.value</a>
                         </td>
                       </py:when>
-  
+
                       <py:otherwise>
                         <td class="$col" py:attrs="td_attrs">$cell.value
                         </td>
                       </py:otherwise>
-  
+
                     </py:choose>
                   </py:with>
                 </py:if>

Modified: bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html
URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html?rev=1505863&r1=1505862&r2=1505863&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html (original)
+++ bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html Tue Jul 23 00:16:15 2013
@@ -35,6 +35,7 @@
   </head>
 
   <body>
+
     <div id="content" class="report row">
       <span class='span12'><h1>$title
         <small py:if="numrows" class="numrows">(${ngettext('%(num)s match', '%(num)s matches', numrows)})</small>
@@ -44,12 +45,12 @@
         <div py:if="description" id="description" xml:space="preserve">
           ${wiki_to_html(context, description)}
         </div>
-  
+
         <div class="buttons control-group">
           <form py:if="'REPORT_MODIFY' in perm(report.resource)" action="" method="get">
             <div>
               <input type="hidden" name="action" value="edit" />
-              <input type="submit" value="${_('Edit report')}" accesskey="e" 
+              <input type="submit" value="${_('Edit report')}" accesskey="e"
                   class="btn" />
             </div>
           </form>
@@ -62,7 +63,7 @@
           <form py:if="'REPORT_DELETE' in perm(report.resource)" action="" method="get">
             <div>
               <input type="hidden" name="action" value="delete" />
-              <input type="submit" value="${_('Delete report')}" 
+              <input type="submit" value="${_('Delete report')}"
                   class="btn" />
             </div>
           </form>
@@ -74,7 +75,7 @@
             <div>
               <label>
                 Max items per page
-                <input type="text" naime="max" size="10" value="${max}" 
+                <input type="text" naime="max" size="10" value="${max}"
                     class="input-mini" />
               </label>
               <fieldset id="reportfilters" py:if="show_args_form">

Modified: bloodhound/trunk/trac/trac/ticket/api.py
URL: http://svn.apache.org/viewvc/bloodhound/trunk/trac/trac/ticket/api.py?rev=1505863&r1=1505862&r2=1505863&view=diff
==============================================================================
--- bloodhound/trunk/trac/trac/ticket/api.py (original)
+++ bloodhound/trunk/trac/trac/ticket/api.py Tue Jul 23 00:16:15 2013
@@ -165,13 +165,13 @@ class ITicketFieldProvider(Interface):
         """Returns a list of select fields, each as a tuple of
         (rank, field)
         where field is a dictionary that defines:
-            * name: the field name 
+            * name: the field name
             * pk: the primary key of the field table
             * label: the label to display, preferably wrapped with N_()
             * cls: the model describing the field
         the following keys can also usefully be defined:
             * optional: a boolean specifying that the select can be empty
-        
+
         The rank is expected to be an integer to specify the sorting of the
         select and radio fields. This is not intended to allow for the extent
         of configurability of the custom fields but allows a plugin to mix in
@@ -342,11 +342,11 @@ class TicketSystem(Component):
 
         # Default select and radio fields
         selects = []
-        [selects.extend(field_provider.get_select_fields()) 
+        [selects.extend(field_provider.get_select_fields())
                     for field_provider in self.ticket_field_providers]
         [select.update({'type': 'select'}) for n, select in selects]
         radios = []
-        [radios.extend(field_provider.get_radio_fields()) 
+        [radios.extend(field_provider.get_radio_fields())
                     for field_provider in self.ticket_field_providers]
         [radio.update({'type': 'radio',
                        'optional': True}) for n, radio in radios]
@@ -379,6 +379,8 @@ class TicketSystem(Component):
                        'label': N_('Created')})
         fields.append({'name': 'changetime', 'type': 'time',
                        'label': N_('Modified')})
+        fields.append({'name':'tctime','type':'time',
+                        'label': N_('Change Time')})
 
         for field in self.get_custom_fields():
             if field['name'] in [f['name'] for f in fields]:
@@ -643,17 +645,17 @@ class TicketSystem(Component):
     def get_select_fields(self):
         """Default select and radio fields"""
         from trac.ticket import model
-        selects = [(10, {'name': 'type', 'label': N_('Type'), 
+        selects = [(10, {'name': 'type', 'label': N_('Type'),
                          'cls': model.Type}),
-                   (30, {'name':'priority', 'label': N_('Priority'), 
+                   (30, {'name':'priority', 'label': N_('Priority'),
                          'cls': model.Priority}),
-                   (40, {'name': 'milestone', 'label': N_('Milestone'), 
+                   (40, {'name': 'milestone', 'label': N_('Milestone'),
                          'cls': model.Milestone, 'optional': True}),
-                   (50, {'name': 'component', 'label': N_('Component'), 
+                   (50, {'name': 'component', 'label': N_('Component'),
                          'cls': model.Component}),
-                   (60, {'name': 'version', 'label': N_('Version'), 
+                   (60, {'name': 'version', 'label': N_('Version'),
                          'cls': model.Version, 'optional': True}),
-                   (70, {'name': 'severity', 'label': N_('Severity'), 
+                   (70, {'name': 'severity', 'label': N_('Severity'),
                          'cls': model.Severity})]
         return selects
 
@@ -662,6 +664,6 @@ class TicketSystem(Component):
         from trac.ticket import model
         radios = [(20, {'name': 'status', 'label': N_('Status'),
                         'cls': model.Status}),
-                  (80, {'name': 'resolution', 'label': N_('Resolution'), 
+                  (80, {'name': 'resolution', 'label': N_('Resolution'),
                         'cls': model.Resolution})]
         return radios

Modified: bloodhound/trunk/trac/trac/ticket/report.py
URL: http://svn.apache.org/viewvc/bloodhound/trunk/trac/trac/ticket/report.py?rev=1505863&r1=1505862&r2=1505863&view=diff
==============================================================================
--- bloodhound/trunk/trac/trac/ticket/report.py (original)
+++ bloodhound/trunk/trac/trac/ticket/report.py Tue Jul 23 00:16:15 2013
@@ -847,6 +847,7 @@ class ReportModule(Component):
             'date': iso_datetime,
             'created': iso_datetime,
             'modified': iso_datetime,
+			'tctime':iso_datetime,
         }
 
         converters = [col_conversions.get(c.strip('_'), cell_value)



Re: svn commit: r1505863 - in /bloodhound/trunk: bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html bloodhound_theme/bhtheme/templates/bh_report_view.html trac/trac/ticket/api.py trac/trac/ticket/report.py

Posted by Ryan Ollos <ry...@wandisco.com>.
On Mon, Jul 22, 2013 at 6:25 PM, Hua Xiang <hu...@gmail.com> wrote:

>
> "I've rolled back your commit on the trunk in [1505871]. Please checkout
> the
> following branch and push your changes there,
>
> http://svn.apache.org/viewvc/bloodhound/branches/bep_0008_time_series_reports/
> "
>
> Hi! Ryan,
>
> I checked out the branch and tried to commit, but failed.
>
>
>
> [image: 内嵌图片 1]


Yeah, sorry about that. The URL I pasted above is incorrect. Please refer
to the other email I replied to just a few minutes ago.
http://markmail.org/message/ul3cjwfcf7bw54ms

Re: svn commit: r1505863 - in /bloodhound/trunk: bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html bloodhound_theme/bhtheme/templates/bh_report_view.html trac/trac/ticket/api.py trac/trac/ticket/report.py

Posted by Hua Xiang <hu...@gmail.com>.
"I've rolled back your commit on the trunk in [1505871]. Please checkout the
following branch and push your changes there,
http://svn.apache.org/viewvc/bloodhound/branches/bep_0008_time_series_reports/
"

Hi! Ryan,

I checked out the branch and tried to commit, but failed.



[image: 内嵌图片 1]


2013/7/23 Ryan Ollos <ry...@wandisco.com>

> On Mon, Jul 22, 2013 at 5:34 PM, Ryan Ollos <ry...@wandisco.com>
> wrote:
>
> > On Mon, Jul 22, 2013 at 5:16 PM, <hu...@apache.org> wrote:
> >
> >> Author: huaxiang
> >> Date: Tue Jul 23 00:16:15 2013
> >> New Revision: 1505863
> >>
> >> URL: http://svn.apache.org/r1505863
> >> Log:
> >> https://issues.apache.org/bloodhound/ticket/574
> >> Display historical status changes for all tickets
> >>
> >> Modified:
> >>
> >>
> bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html
> >>
> >> bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html
> >>     bloodhound/trunk/trac/trac/ticket/api.py
> >>     bloodhound/trunk/trac/trac/ticket/report.py
> >>
> >> Modified:
> >>
> bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html
> >> URL:
> >>
> http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html?rev=1505863&r1=1505862&r2=1505863&view=diff
> >>
> >>
> ==============================================================================
> >> ---
> >>
> bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html
> >> (original)
> >> +++
> >>
> bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html
> >> Tue Jul 23 00:16:15 2013
> >> @@ -61,7 +61,7 @@
> >>                  }${'__style__' in row and row.__style__+';' or None
> >>                  }${fullrow and 'border: none; padding: 0;' or None}">
> >>
> >> -              <td py:if="use_groups" py:choose=""
> >> +              <td py:if="use_groups" py:choose=""
> >>                    style="background: none repeat scroll 0 0 #FFFFFF;
> >> color: #333333;">
> >>                  <py:when test="idx == 0 and value_for_group and not
> >> fullrow">
> >>                    $value_for_group
> >> @@ -75,33 +75,33 @@
> >>                  <py:if test="not cell.header.hidden">
> >>                    <py:with vars="col = cell.header.col.strip('_')">
> >>                      <py:choose>
> >> -
> >> +
> >>                        <!--! for the report listing -->
> >>                        <py:when test="col == 'report'">
> >>                          <td class="$col" py:attrs="td_attrs">
> >>                            <a title="View report"
> >> href="${href.report(cell.value)}">{$cell.value}</a>
> >>                          </td>
> >>                        </py:when>
> >> -
> >> +
> >>                        <py:when test="col == 'title'">
> >>                          <td class="$col" py:attrs="td_attrs">
> >>                            <a title="View report" href="${href.report(
> >> row.id)}">$cell.value</a>
> >>                          </td>
> >>                        </py:when>
> >> -
> >> +
> >>                        <!--! for the ticket listing -->
> >>                        <py:when test="col in ('ticket', 'id')">
> >>                          <td class="ticket" py:attrs="td_attrs">
> >>                            <a title="View ${row.resource.realm}"
> >> href="${row.href if row.href else
> >> url_of(row.resource)}">${shortname_of(row.resource)}</a>
> >>                          </td>
> >>                        </py:when>
> >> -
> >> +
> >>                        <py:when test="col == 'summary' and row.id">
> >>                          <td class="$col" py:attrs="td_attrs">
> >>                            <a title="View ${row.resource.realm}"
> >> href="${row.href if row.href else url_of(row.resource)}">$cell.value</a>
> >>                          </td>
> >>                        </py:when>
> >> -
> >> +
> >>                        <!--! generic fields -->
> >>                        <py:when test="col == 'time'" py:with="value =
> >> int(cell.value) if isinstance(cell.value, basestring) else cell.value">
> >>                          <td class="date"
> >> py:attrs="td_attrs">${cell.value != '' and format_time(value) or '--'}
> >> @@ -113,7 +113,7 @@
> >>                          </td>
> >>                        </py:when>
> >>
> >> -                      <py:when test="col == 'datetime'" py:with="value
> =
> >> int(cell.value) if isinstance(cell.value, basestring) else cell.value">
> >> +                      <py:when test="col in ('datetime','tctime')"
> >> py:with="value = int(cell.value) if isinstance(cell.value, basestring)
> else
> >> cell.value">
> >>                          <td class="date"
> >> py:attrs="td_attrs">${cell.value != '' and format_datetime(value) or
> '--'}
> >>                          </td>
> >>                        </py:when>
> >> @@ -123,18 +123,18 @@
> >>                            ${wiki_to_html(context(row.resource),
> >> cell.value)}
> >>                          </td>
> >>                        </py:when>
> >> -
> >> +
> >>                        <py:when test="col == 'milestone'">
> >>                          <td class="$col" py:attrs="td_attrs">
> >>                            <a title="View milestone"
> >> href="${href.milestone(cell.value)}">$cell.value</a>
> >>                          </td>
> >>                        </py:when>
> >> -
> >> +
> >>                        <py:otherwise>
> >>                          <td class="$col"
> py:attrs="td_attrs">$cell.value
> >>                          </td>
> >>                        </py:otherwise>
> >> -
> >> +
> >>                      </py:choose>
> >>                    </py:with>
> >>                  </py:if>
> >>
> >> Modified:
> >> bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html
> >> URL:
> >>
> http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html?rev=1505863&r1=1505862&r2=1505863&view=diff
> >>
> >>
> ==============================================================================
> >> ---
> >> bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html
> >> (original)
> >> +++
> >> bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html
> Tue
> >> Jul 23 00:16:15 2013
> >> @@ -35,6 +35,7 @@
> >>    </head>
> >>
> >>    <body>
> >> +
> >>      <div id="content" class="report row">
> >>        <span class='span12'><h1>$title
> >>          <small py:if="numrows" class="numrows">(${ngettext('%(num)s
> >> match', '%(num)s matches', numrows)})</small>
> >> @@ -44,12 +45,12 @@
> >>          <div py:if="description" id="description" xml:space="preserve">
> >>            ${wiki_to_html(context, description)}
> >>          </div>
> >> -
> >> +
> >>          <div class="buttons control-group">
> >>            <form py:if="'REPORT_MODIFY' in perm(report.resource)"
> >> action="" method="get">
> >>              <div>
> >>                <input type="hidden" name="action" value="edit" />
> >> -              <input type="submit" value="${_('Edit report')}"
> >> accesskey="e"
> >> +              <input type="submit" value="${_('Edit report')}"
> >> accesskey="e"
> >>                    class="btn" />
> >>              </div>
> >>            </form>
> >> @@ -62,7 +63,7 @@
> >>            <form py:if="'REPORT_DELETE' in perm(report.resource)"
> >> action="" method="get">
> >>              <div>
> >>                <input type="hidden" name="action" value="delete" />
> >> -              <input type="submit" value="${_('Delete report')}"
> >> +              <input type="submit" value="${_('Delete report')}"
> >>                    class="btn" />
> >>              </div>
> >>            </form>
> >> @@ -74,7 +75,7 @@
> >>              <div>
> >>                <label>
> >>                  Max items per page
> >> -                <input type="text" naime="max" size="10" value="${max}"
> >> +                <input type="text" naime="max" size="10" value="${max}"
> >>                      class="input-mini" />
> >>                </label>
> >>                <fieldset id="reportfilters" py:if="show_args_form">
> >>
> >> Modified: bloodhound/trunk/trac/trac/ticket/api.py
> >> URL:
> >>
> http://svn.apache.org/viewvc/bloodhound/trunk/trac/trac/ticket/api.py?rev=1505863&r1=1505862&r2=1505863&view=diff
> >>
> >>
> ==============================================================================
> >> --- bloodhound/trunk/trac/trac/ticket/api.py (original)
> >> +++ bloodhound/trunk/trac/trac/ticket/api.py Tue Jul 23 00:16:15 2013
> >> @@ -165,13 +165,13 @@ class ITicketFieldProvider(Interface):
> >>          """Returns a list of select fields, each as a tuple of
> >>          (rank, field)
> >>          where field is a dictionary that defines:
> >> -            * name: the field name
> >> +            * name: the field name
> >>              * pk: the primary key of the field table
> >>              * label: the label to display, preferably wrapped with N_()
> >>              * cls: the model describing the field
> >>          the following keys can also usefully be defined:
> >>              * optional: a boolean specifying that the select can be
> empty
> >> -
> >> +
> >>          The rank is expected to be an integer to specify the sorting of
> >> the
> >>          select and radio fields. This is not intended to allow for the
> >> extent
> >>          of configurability of the custom fields but allows a plugin to
> >> mix in
> >> @@ -342,11 +342,11 @@ class TicketSystem(Component):
> >>
> >>          # Default select and radio fields
> >>          selects = []
> >> -        [selects.extend(field_provider.get_select_fields())
> >> +        [selects.extend(field_provider.get_select_fields())
> >>                      for field_provider in self.ticket_field_providers]
> >>          [select.update({'type': 'select'}) for n, select in selects]
> >>          radios = []
> >> -        [radios.extend(field_provider.get_radio_fields())
> >> +        [radios.extend(field_provider.get_radio_fields())
> >>                      for field_provider in self.ticket_field_providers]
> >>          [radio.update({'type': 'radio',
> >>                         'optional': True}) for n, radio in radios]
> >> @@ -379,6 +379,8 @@ class TicketSystem(Component):
> >>                         'label': N_('Created')})
> >>          fields.append({'name': 'changetime', 'type': 'time',
> >>                         'label': N_('Modified')})
> >> +        fields.append({'name':'tctime','type':'time',
> >> +                        'label': N_('Change Time')})
> >>
> >>          for field in self.get_custom_fields():
> >>              if field['name'] in [f['name'] for f in fields]:
> >> @@ -643,17 +645,17 @@ class TicketSystem(Component):
> >>      def get_select_fields(self):
> >>          """Default select and radio fields"""
> >>          from trac.ticket import model
> >> -        selects = [(10, {'name': 'type', 'label': N_('Type'),
> >> +        selects = [(10, {'name': 'type', 'label': N_('Type'),
> >>                           'cls': model.Type}),
> >> -                   (30, {'name':'priority', 'label': N_('Priority'),
> >> +                   (30, {'name':'priority', 'label': N_('Priority'),
> >>                           'cls': model.Priority}),
> >> -                   (40, {'name': 'milestone', 'label': N_('Milestone'),
> >> +                   (40, {'name': 'milestone', 'label': N_('Milestone'),
> >>                           'cls': model.Milestone, 'optional': True}),
> >> -                   (50, {'name': 'component', 'label': N_('Component'),
> >> +                   (50, {'name': 'component', 'label': N_('Component'),
> >>                           'cls': model.Component}),
> >> -                   (60, {'name': 'version', 'label': N_('Version'),
> >> +                   (60, {'name': 'version', 'label': N_('Version'),
> >>                           'cls': model.Version, 'optional': True}),
> >> -                   (70, {'name': 'severity', 'label': N_('Severity'),
> >> +                   (70, {'name': 'severity', 'label': N_('Severity'),
> >>                           'cls': model.Severity})]
> >>          return selects
> >>
> >> @@ -662,6 +664,6 @@ class TicketSystem(Component):
> >>          from trac.ticket import model
> >>          radios = [(20, {'name': 'status', 'label': N_('Status'),
> >>                          'cls': model.Status}),
> >> -                  (80, {'name': 'resolution', 'label':
> N_('Resolution'),
> >> +                  (80, {'name': 'resolution', 'label':
> N_('Resolution'),
> >>                          'cls': model.Resolution})]
> >>          return radios
> >>
> >> Modified: bloodhound/trunk/trac/trac/ticket/report.py
> >> URL:
> >>
> http://svn.apache.org/viewvc/bloodhound/trunk/trac/trac/ticket/report.py?rev=1505863&r1=1505862&r2=1505863&view=diff
> >>
> >>
> ==============================================================================
> >> --- bloodhound/trunk/trac/trac/ticket/report.py (original)
> >> +++ bloodhound/trunk/trac/trac/ticket/report.py Tue Jul 23 00:16:15 2013
> >> @@ -847,6 +847,7 @@ class ReportModule(Component):
> >>              'date': iso_datetime,
> >>              'created': iso_datetime,
> >>              'modified': iso_datetime,
> >> +                       'tctime':iso_datetime,
> >>          }
> >>
> >>          converters = [col_conversions.get(c.strip('_'), cell_value)
> >>
> >>
> >>
> > It appears that you've mistakenly committed to the trunk rather than your
> > BEP-0008 branch.
> >
>
>

Re: svn commit: r1505863 - in /bloodhound/trunk: bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html bloodhound_theme/bhtheme/templates/bh_report_view.html trac/trac/ticket/api.py trac/trac/ticket/report.py

Posted by Ryan Ollos <ry...@wandisco.com>.
On Mon, Jul 22, 2013 at 5:34 PM, Ryan Ollos <ry...@wandisco.com> wrote:

> On Mon, Jul 22, 2013 at 5:16 PM, <hu...@apache.org> wrote:
>
>> Author: huaxiang
>> Date: Tue Jul 23 00:16:15 2013
>> New Revision: 1505863
>>
>> URL: http://svn.apache.org/r1505863
>> Log:
>> https://issues.apache.org/bloodhound/ticket/574
>> Display historical status changes for all tickets
>>
>> Modified:
>>
>> bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html
>>
>> bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html
>>     bloodhound/trunk/trac/trac/ticket/api.py
>>     bloodhound/trunk/trac/trac/ticket/report.py
>>
>> Modified:
>> bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html
>> URL:
>> http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html?rev=1505863&r1=1505862&r2=1505863&view=diff
>>
>> ==============================================================================
>> ---
>> bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html
>> (original)
>> +++
>> bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html
>> Tue Jul 23 00:16:15 2013
>> @@ -61,7 +61,7 @@
>>                  }${'__style__' in row and row.__style__+';' or None
>>                  }${fullrow and 'border: none; padding: 0;' or None}">
>>
>> -              <td py:if="use_groups" py:choose=""
>> +              <td py:if="use_groups" py:choose=""
>>                    style="background: none repeat scroll 0 0 #FFFFFF;
>> color: #333333;">
>>                  <py:when test="idx == 0 and value_for_group and not
>> fullrow">
>>                    $value_for_group
>> @@ -75,33 +75,33 @@
>>                  <py:if test="not cell.header.hidden">
>>                    <py:with vars="col = cell.header.col.strip('_')">
>>                      <py:choose>
>> -
>> +
>>                        <!--! for the report listing -->
>>                        <py:when test="col == 'report'">
>>                          <td class="$col" py:attrs="td_attrs">
>>                            <a title="View report"
>> href="${href.report(cell.value)}">{$cell.value}</a>
>>                          </td>
>>                        </py:when>
>> -
>> +
>>                        <py:when test="col == 'title'">
>>                          <td class="$col" py:attrs="td_attrs">
>>                            <a title="View report" href="${href.report(
>> row.id)}">$cell.value</a>
>>                          </td>
>>                        </py:when>
>> -
>> +
>>                        <!--! for the ticket listing -->
>>                        <py:when test="col in ('ticket', 'id')">
>>                          <td class="ticket" py:attrs="td_attrs">
>>                            <a title="View ${row.resource.realm}"
>> href="${row.href if row.href else
>> url_of(row.resource)}">${shortname_of(row.resource)}</a>
>>                          </td>
>>                        </py:when>
>> -
>> +
>>                        <py:when test="col == 'summary' and row.id">
>>                          <td class="$col" py:attrs="td_attrs">
>>                            <a title="View ${row.resource.realm}"
>> href="${row.href if row.href else url_of(row.resource)}">$cell.value</a>
>>                          </td>
>>                        </py:when>
>> -
>> +
>>                        <!--! generic fields -->
>>                        <py:when test="col == 'time'" py:with="value =
>> int(cell.value) if isinstance(cell.value, basestring) else cell.value">
>>                          <td class="date"
>> py:attrs="td_attrs">${cell.value != '' and format_time(value) or '--'}
>> @@ -113,7 +113,7 @@
>>                          </td>
>>                        </py:when>
>>
>> -                      <py:when test="col == 'datetime'" py:with="value =
>> int(cell.value) if isinstance(cell.value, basestring) else cell.value">
>> +                      <py:when test="col in ('datetime','tctime')"
>> py:with="value = int(cell.value) if isinstance(cell.value, basestring) else
>> cell.value">
>>                          <td class="date"
>> py:attrs="td_attrs">${cell.value != '' and format_datetime(value) or '--'}
>>                          </td>
>>                        </py:when>
>> @@ -123,18 +123,18 @@
>>                            ${wiki_to_html(context(row.resource),
>> cell.value)}
>>                          </td>
>>                        </py:when>
>> -
>> +
>>                        <py:when test="col == 'milestone'">
>>                          <td class="$col" py:attrs="td_attrs">
>>                            <a title="View milestone"
>> href="${href.milestone(cell.value)}">$cell.value</a>
>>                          </td>
>>                        </py:when>
>> -
>> +
>>                        <py:otherwise>
>>                          <td class="$col" py:attrs="td_attrs">$cell.value
>>                          </td>
>>                        </py:otherwise>
>> -
>> +
>>                      </py:choose>
>>                    </py:with>
>>                  </py:if>
>>
>> Modified:
>> bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html
>> URL:
>> http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html?rev=1505863&r1=1505862&r2=1505863&view=diff
>>
>> ==============================================================================
>> ---
>> bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html
>> (original)
>> +++
>> bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html Tue
>> Jul 23 00:16:15 2013
>> @@ -35,6 +35,7 @@
>>    </head>
>>
>>    <body>
>> +
>>      <div id="content" class="report row">
>>        <span class='span12'><h1>$title
>>          <small py:if="numrows" class="numrows">(${ngettext('%(num)s
>> match', '%(num)s matches', numrows)})</small>
>> @@ -44,12 +45,12 @@
>>          <div py:if="description" id="description" xml:space="preserve">
>>            ${wiki_to_html(context, description)}
>>          </div>
>> -
>> +
>>          <div class="buttons control-group">
>>            <form py:if="'REPORT_MODIFY' in perm(report.resource)"
>> action="" method="get">
>>              <div>
>>                <input type="hidden" name="action" value="edit" />
>> -              <input type="submit" value="${_('Edit report')}"
>> accesskey="e"
>> +              <input type="submit" value="${_('Edit report')}"
>> accesskey="e"
>>                    class="btn" />
>>              </div>
>>            </form>
>> @@ -62,7 +63,7 @@
>>            <form py:if="'REPORT_DELETE' in perm(report.resource)"
>> action="" method="get">
>>              <div>
>>                <input type="hidden" name="action" value="delete" />
>> -              <input type="submit" value="${_('Delete report')}"
>> +              <input type="submit" value="${_('Delete report')}"
>>                    class="btn" />
>>              </div>
>>            </form>
>> @@ -74,7 +75,7 @@
>>              <div>
>>                <label>
>>                  Max items per page
>> -                <input type="text" naime="max" size="10" value="${max}"
>> +                <input type="text" naime="max" size="10" value="${max}"
>>                      class="input-mini" />
>>                </label>
>>                <fieldset id="reportfilters" py:if="show_args_form">
>>
>> Modified: bloodhound/trunk/trac/trac/ticket/api.py
>> URL:
>> http://svn.apache.org/viewvc/bloodhound/trunk/trac/trac/ticket/api.py?rev=1505863&r1=1505862&r2=1505863&view=diff
>>
>> ==============================================================================
>> --- bloodhound/trunk/trac/trac/ticket/api.py (original)
>> +++ bloodhound/trunk/trac/trac/ticket/api.py Tue Jul 23 00:16:15 2013
>> @@ -165,13 +165,13 @@ class ITicketFieldProvider(Interface):
>>          """Returns a list of select fields, each as a tuple of
>>          (rank, field)
>>          where field is a dictionary that defines:
>> -            * name: the field name
>> +            * name: the field name
>>              * pk: the primary key of the field table
>>              * label: the label to display, preferably wrapped with N_()
>>              * cls: the model describing the field
>>          the following keys can also usefully be defined:
>>              * optional: a boolean specifying that the select can be empty
>> -
>> +
>>          The rank is expected to be an integer to specify the sorting of
>> the
>>          select and radio fields. This is not intended to allow for the
>> extent
>>          of configurability of the custom fields but allows a plugin to
>> mix in
>> @@ -342,11 +342,11 @@ class TicketSystem(Component):
>>
>>          # Default select and radio fields
>>          selects = []
>> -        [selects.extend(field_provider.get_select_fields())
>> +        [selects.extend(field_provider.get_select_fields())
>>                      for field_provider in self.ticket_field_providers]
>>          [select.update({'type': 'select'}) for n, select in selects]
>>          radios = []
>> -        [radios.extend(field_provider.get_radio_fields())
>> +        [radios.extend(field_provider.get_radio_fields())
>>                      for field_provider in self.ticket_field_providers]
>>          [radio.update({'type': 'radio',
>>                         'optional': True}) for n, radio in radios]
>> @@ -379,6 +379,8 @@ class TicketSystem(Component):
>>                         'label': N_('Created')})
>>          fields.append({'name': 'changetime', 'type': 'time',
>>                         'label': N_('Modified')})
>> +        fields.append({'name':'tctime','type':'time',
>> +                        'label': N_('Change Time')})
>>
>>          for field in self.get_custom_fields():
>>              if field['name'] in [f['name'] for f in fields]:
>> @@ -643,17 +645,17 @@ class TicketSystem(Component):
>>      def get_select_fields(self):
>>          """Default select and radio fields"""
>>          from trac.ticket import model
>> -        selects = [(10, {'name': 'type', 'label': N_('Type'),
>> +        selects = [(10, {'name': 'type', 'label': N_('Type'),
>>                           'cls': model.Type}),
>> -                   (30, {'name':'priority', 'label': N_('Priority'),
>> +                   (30, {'name':'priority', 'label': N_('Priority'),
>>                           'cls': model.Priority}),
>> -                   (40, {'name': 'milestone', 'label': N_('Milestone'),
>> +                   (40, {'name': 'milestone', 'label': N_('Milestone'),
>>                           'cls': model.Milestone, 'optional': True}),
>> -                   (50, {'name': 'component', 'label': N_('Component'),
>> +                   (50, {'name': 'component', 'label': N_('Component'),
>>                           'cls': model.Component}),
>> -                   (60, {'name': 'version', 'label': N_('Version'),
>> +                   (60, {'name': 'version', 'label': N_('Version'),
>>                           'cls': model.Version, 'optional': True}),
>> -                   (70, {'name': 'severity', 'label': N_('Severity'),
>> +                   (70, {'name': 'severity', 'label': N_('Severity'),
>>                           'cls': model.Severity})]
>>          return selects
>>
>> @@ -662,6 +664,6 @@ class TicketSystem(Component):
>>          from trac.ticket import model
>>          radios = [(20, {'name': 'status', 'label': N_('Status'),
>>                          'cls': model.Status}),
>> -                  (80, {'name': 'resolution', 'label': N_('Resolution'),
>> +                  (80, {'name': 'resolution', 'label': N_('Resolution'),
>>                          'cls': model.Resolution})]
>>          return radios
>>
>> Modified: bloodhound/trunk/trac/trac/ticket/report.py
>> URL:
>> http://svn.apache.org/viewvc/bloodhound/trunk/trac/trac/ticket/report.py?rev=1505863&r1=1505862&r2=1505863&view=diff
>>
>> ==============================================================================
>> --- bloodhound/trunk/trac/trac/ticket/report.py (original)
>> +++ bloodhound/trunk/trac/trac/ticket/report.py Tue Jul 23 00:16:15 2013
>> @@ -847,6 +847,7 @@ class ReportModule(Component):
>>              'date': iso_datetime,
>>              'created': iso_datetime,
>>              'modified': iso_datetime,
>> +                       'tctime':iso_datetime,
>>          }
>>
>>          converters = [col_conversions.get(c.strip('_'), cell_value)
>>
>>
>>
> It appears that you've mistakenly committed to the trunk rather than your
> BEP-0008 branch.
>

I've rolled back your commit on the trunk in [1505871]. Please checkout the
following branch and push your changes there,
http://svn.apache.org/viewvc/bloodhound/branches/bep_0008_time_series_reports/

Re: svn commit: r1505863 - in /bloodhound/trunk: bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html bloodhound_theme/bhtheme/templates/bh_report_view.html trac/trac/ticket/api.py trac/trac/ticket/report.py

Posted by Ryan Ollos <ry...@wandisco.com>.
On Mon, Jul 22, 2013 at 5:16 PM, <hu...@apache.org> wrote:

> Author: huaxiang
> Date: Tue Jul 23 00:16:15 2013
> New Revision: 1505863
>
> URL: http://svn.apache.org/r1505863
> Log:
> https://issues.apache.org/bloodhound/ticket/574
> Display historical status changes for all tickets
>
> Modified:
>
> bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html
>     bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html
>     bloodhound/trunk/trac/trac/ticket/api.py
>     bloodhound/trunk/trac/trac/ticket/report.py
>
> Modified:
> bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html
> URL:
> http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html?rev=1505863&r1=1505862&r2=1505863&view=diff
>
> ==============================================================================
> ---
> bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html
> (original)
> +++
> bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_grid.html
> Tue Jul 23 00:16:15 2013
> @@ -61,7 +61,7 @@
>                  }${'__style__' in row and row.__style__+';' or None
>                  }${fullrow and 'border: none; padding: 0;' or None}">
>
> -              <td py:if="use_groups" py:choose=""
> +              <td py:if="use_groups" py:choose=""
>                    style="background: none repeat scroll 0 0 #FFFFFF;
> color: #333333;">
>                  <py:when test="idx == 0 and value_for_group and not
> fullrow">
>                    $value_for_group
> @@ -75,33 +75,33 @@
>                  <py:if test="not cell.header.hidden">
>                    <py:with vars="col = cell.header.col.strip('_')">
>                      <py:choose>
> -
> +
>                        <!--! for the report listing -->
>                        <py:when test="col == 'report'">
>                          <td class="$col" py:attrs="td_attrs">
>                            <a title="View report"
> href="${href.report(cell.value)}">{$cell.value}</a>
>                          </td>
>                        </py:when>
> -
> +
>                        <py:when test="col == 'title'">
>                          <td class="$col" py:attrs="td_attrs">
>                            <a title="View report" href="${href.report(
> row.id)}">$cell.value</a>
>                          </td>
>                        </py:when>
> -
> +
>                        <!--! for the ticket listing -->
>                        <py:when test="col in ('ticket', 'id')">
>                          <td class="ticket" py:attrs="td_attrs">
>                            <a title="View ${row.resource.realm}"
> href="${row.href if row.href else
> url_of(row.resource)}">${shortname_of(row.resource)}</a>
>                          </td>
>                        </py:when>
> -
> +
>                        <py:when test="col == 'summary' and row.id">
>                          <td class="$col" py:attrs="td_attrs">
>                            <a title="View ${row.resource.realm}"
> href="${row.href if row.href else url_of(row.resource)}">$cell.value</a>
>                          </td>
>                        </py:when>
> -
> +
>                        <!--! generic fields -->
>                        <py:when test="col == 'time'" py:with="value =
> int(cell.value) if isinstance(cell.value, basestring) else cell.value">
>                          <td class="date" py:attrs="td_attrs">${cell.value
> != '' and format_time(value) or '--'}
> @@ -113,7 +113,7 @@
>                          </td>
>                        </py:when>
>
> -                      <py:when test="col == 'datetime'" py:with="value =
> int(cell.value) if isinstance(cell.value, basestring) else cell.value">
> +                      <py:when test="col in ('datetime','tctime')"
> py:with="value = int(cell.value) if isinstance(cell.value, basestring) else
> cell.value">
>                          <td class="date" py:attrs="td_attrs">${cell.value
> != '' and format_datetime(value) or '--'}
>                          </td>
>                        </py:when>
> @@ -123,18 +123,18 @@
>                            ${wiki_to_html(context(row.resource),
> cell.value)}
>                          </td>
>                        </py:when>
> -
> +
>                        <py:when test="col == 'milestone'">
>                          <td class="$col" py:attrs="td_attrs">
>                            <a title="View milestone"
> href="${href.milestone(cell.value)}">$cell.value</a>
>                          </td>
>                        </py:when>
> -
> +
>                        <py:otherwise>
>                          <td class="$col" py:attrs="td_attrs">$cell.value
>                          </td>
>                        </py:otherwise>
> -
> +
>                      </py:choose>
>                    </py:with>
>                  </py:if>
>
> Modified:
> bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html
> URL:
> http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html?rev=1505863&r1=1505862&r2=1505863&view=diff
>
> ==============================================================================
> ---
> bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html
> (original)
> +++
> bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_report_view.html Tue
> Jul 23 00:16:15 2013
> @@ -35,6 +35,7 @@
>    </head>
>
>    <body>
> +
>      <div id="content" class="report row">
>        <span class='span12'><h1>$title
>          <small py:if="numrows" class="numrows">(${ngettext('%(num)s
> match', '%(num)s matches', numrows)})</small>
> @@ -44,12 +45,12 @@
>          <div py:if="description" id="description" xml:space="preserve">
>            ${wiki_to_html(context, description)}
>          </div>
> -
> +
>          <div class="buttons control-group">
>            <form py:if="'REPORT_MODIFY' in perm(report.resource)"
> action="" method="get">
>              <div>
>                <input type="hidden" name="action" value="edit" />
> -              <input type="submit" value="${_('Edit report')}"
> accesskey="e"
> +              <input type="submit" value="${_('Edit report')}"
> accesskey="e"
>                    class="btn" />
>              </div>
>            </form>
> @@ -62,7 +63,7 @@
>            <form py:if="'REPORT_DELETE' in perm(report.resource)"
> action="" method="get">
>              <div>
>                <input type="hidden" name="action" value="delete" />
> -              <input type="submit" value="${_('Delete report')}"
> +              <input type="submit" value="${_('Delete report')}"
>                    class="btn" />
>              </div>
>            </form>
> @@ -74,7 +75,7 @@
>              <div>
>                <label>
>                  Max items per page
> -                <input type="text" naime="max" size="10" value="${max}"
> +                <input type="text" naime="max" size="10" value="${max}"
>                      class="input-mini" />
>                </label>
>                <fieldset id="reportfilters" py:if="show_args_form">
>
> Modified: bloodhound/trunk/trac/trac/ticket/api.py
> URL:
> http://svn.apache.org/viewvc/bloodhound/trunk/trac/trac/ticket/api.py?rev=1505863&r1=1505862&r2=1505863&view=diff
>
> ==============================================================================
> --- bloodhound/trunk/trac/trac/ticket/api.py (original)
> +++ bloodhound/trunk/trac/trac/ticket/api.py Tue Jul 23 00:16:15 2013
> @@ -165,13 +165,13 @@ class ITicketFieldProvider(Interface):
>          """Returns a list of select fields, each as a tuple of
>          (rank, field)
>          where field is a dictionary that defines:
> -            * name: the field name
> +            * name: the field name
>              * pk: the primary key of the field table
>              * label: the label to display, preferably wrapped with N_()
>              * cls: the model describing the field
>          the following keys can also usefully be defined:
>              * optional: a boolean specifying that the select can be empty
> -
> +
>          The rank is expected to be an integer to specify the sorting of
> the
>          select and radio fields. This is not intended to allow for the
> extent
>          of configurability of the custom fields but allows a plugin to
> mix in
> @@ -342,11 +342,11 @@ class TicketSystem(Component):
>
>          # Default select and radio fields
>          selects = []
> -        [selects.extend(field_provider.get_select_fields())
> +        [selects.extend(field_provider.get_select_fields())
>                      for field_provider in self.ticket_field_providers]
>          [select.update({'type': 'select'}) for n, select in selects]
>          radios = []
> -        [radios.extend(field_provider.get_radio_fields())
> +        [radios.extend(field_provider.get_radio_fields())
>                      for field_provider in self.ticket_field_providers]
>          [radio.update({'type': 'radio',
>                         'optional': True}) for n, radio in radios]
> @@ -379,6 +379,8 @@ class TicketSystem(Component):
>                         'label': N_('Created')})
>          fields.append({'name': 'changetime', 'type': 'time',
>                         'label': N_('Modified')})
> +        fields.append({'name':'tctime','type':'time',
> +                        'label': N_('Change Time')})
>
>          for field in self.get_custom_fields():
>              if field['name'] in [f['name'] for f in fields]:
> @@ -643,17 +645,17 @@ class TicketSystem(Component):
>      def get_select_fields(self):
>          """Default select and radio fields"""
>          from trac.ticket import model
> -        selects = [(10, {'name': 'type', 'label': N_('Type'),
> +        selects = [(10, {'name': 'type', 'label': N_('Type'),
>                           'cls': model.Type}),
> -                   (30, {'name':'priority', 'label': N_('Priority'),
> +                   (30, {'name':'priority', 'label': N_('Priority'),
>                           'cls': model.Priority}),
> -                   (40, {'name': 'milestone', 'label': N_('Milestone'),
> +                   (40, {'name': 'milestone', 'label': N_('Milestone'),
>                           'cls': model.Milestone, 'optional': True}),
> -                   (50, {'name': 'component', 'label': N_('Component'),
> +                   (50, {'name': 'component', 'label': N_('Component'),
>                           'cls': model.Component}),
> -                   (60, {'name': 'version', 'label': N_('Version'),
> +                   (60, {'name': 'version', 'label': N_('Version'),
>                           'cls': model.Version, 'optional': True}),
> -                   (70, {'name': 'severity', 'label': N_('Severity'),
> +                   (70, {'name': 'severity', 'label': N_('Severity'),
>                           'cls': model.Severity})]
>          return selects
>
> @@ -662,6 +664,6 @@ class TicketSystem(Component):
>          from trac.ticket import model
>          radios = [(20, {'name': 'status', 'label': N_('Status'),
>                          'cls': model.Status}),
> -                  (80, {'name': 'resolution', 'label': N_('Resolution'),
> +                  (80, {'name': 'resolution', 'label': N_('Resolution'),
>                          'cls': model.Resolution})]
>          return radios
>
> Modified: bloodhound/trunk/trac/trac/ticket/report.py
> URL:
> http://svn.apache.org/viewvc/bloodhound/trunk/trac/trac/ticket/report.py?rev=1505863&r1=1505862&r2=1505863&view=diff
>
> ==============================================================================
> --- bloodhound/trunk/trac/trac/ticket/report.py (original)
> +++ bloodhound/trunk/trac/trac/ticket/report.py Tue Jul 23 00:16:15 2013
> @@ -847,6 +847,7 @@ class ReportModule(Component):
>              'date': iso_datetime,
>              'created': iso_datetime,
>              'modified': iso_datetime,
> +                       'tctime':iso_datetime,
>          }
>
>          converters = [col_conversions.get(c.strip('_'), cell_value)
>
>
>
It appears that you've mistakenly committed to the trunk rather than your
BEP-0008 branch.