diff -r 3a78894effbd -r 84fcff2829a6 roundup/cgi/templating.py --- a/roundup/cgi/templating.py Mon Mar 02 19:06:45 2015 +0300 +++ b/roundup/cgi/templating.py Wed Mar 04 20:52:35 2015 +0300 @@ -1830,6 +1830,31 @@ s += self.popcal() return s + def periodof(self, pretty=1, othdate='.'): + """ Render the duration between this date and other date (default is now). + + If the "pretty" flag is true, then make the display human readable. + """ + if not self.is_view_ok(): + return self._('[hidden]') + + if not self._value: + return '' + + if isinstance(othdate, self.__class__) : + if not othdate._value: + return '' + cmp_date = othdate._value + + if isinstance(othdate, ''.__class__) : + cmp_date = date.Date(othdate, translator=self._client.translator) + + # figure the interval + interval = self._value - cmp_date + if pretty: + return interval.period() + return str(interval) + def reldate(self, pretty=1): """ Render the interval between the date and now. diff -r 3a78894effbd -r 84fcff2829a6 roundup/date.py --- a/roundup/date.py Mon Mar 02 19:06:45 2015 +0300 +++ b/roundup/date.py Wed Mar 04 20:52:35 2015 +0300 @@ -841,8 +841,9 @@ def __repr__(self): return ''%self.__str__() - def pretty(self): - ''' print up the date date using one of these nice formats.. + def period(self): + ''' return interval in human readable format + such as "1 month", "2 week" etc. ''' _quarters = self.minute / 15 if self.year: @@ -894,11 +895,16 @@ else: s = self.ngettext('%(number)s/4 hour', '%(number)s/4 hours', _quarters) % {'number': _quarters} + return s + + def pretty(self): + ''' print up the interval using one of these nice formats.. + ''' # XXX this is internationally broken if self.sign < 0: - s = self._('%s ago') % s + s = self._('%s ago') % self.period() else: - s = self._('in %s') % s + s = self._('in %s') % self.period() return s def get_tuple(self):