diff -urN trac-0.9.6.orig/trac/Search.py trac-0.9.6/trac/Search.py
old
|
new
|
|
186 | 186 | req.hdf['search.result'] = [ |
187 | 187 | { 'href': result[0], |
188 | 188 | 'title': result[1], |
189 | | 'date': format_datetime(result[2]), |
| 189 | 'date': format_datetime(result[2], self.env.config.get('i18n', 'datetime_format')), |
190 | 190 | 'author': result[3], |
191 | 191 | 'excerpt': result[4] |
192 | 192 | } for result in results] |
diff -urN trac-0.9.6.orig/trac/Timeline.py trac-0.9.6/trac/Timeline.py
old
|
new
|
|
96 | 96 | t = time.localtime() |
97 | 97 | if req.args.has_key('from'): |
98 | 98 | try: |
99 | | t = time.strptime(req.args.get('from'), '%x') |
| 99 | t = time.strptime(req.args.get('from'), self.env.config.get('i18n', 'date_format')) |
100 | 100 | except: |
101 | 101 | pass |
102 | 102 | |
… |
… |
|
105 | 105 | daysback = max(0, int(req.args.get('daysback', ''))) |
106 | 106 | except ValueError: |
107 | 107 | daysback = int(self.config.get('timeline', 'default_daysback')) |
108 | | req.hdf['timeline.from'] = format_date(fromdate) |
| 108 | req.hdf['timeline.from'] = format_date(fromdate, self.env.config.get('i18n', 'date_format')) |
109 | 109 | req.hdf['timeline.daysback'] = daysback |
110 | 110 | |
111 | 111 | available_filters = [] |
… |
… |
|
154 | 154 | for kind, href, title, date, author, message in events: |
155 | 155 | event = {'kind': kind, 'title': title, 'href': href, |
156 | 156 | 'author': author or 'anonymous', |
157 | | 'date': format_date(date), |
| 157 | 'date': format_date(date, self.env.config.get('i18n', 'date_format')), |
158 | 158 | 'time': format_time(date, '%H:%M'), |
159 | 159 | 'message': message} |
160 | 160 | |
diff -urN trac-0.9.6.orig/trac/attachment.py trac-0.9.6/trac/attachment.py
old
|
new
|
|
200 | 200 | 'author': attachment.author, |
201 | 201 | 'ipnr': attachment.ipnr, |
202 | 202 | 'size': util.pretty_size(attachment.size), |
203 | | 'time': util.format_datetime(attachment.time), |
| 203 | 'time': util.format_datetime(attachment.time, env.config.get('i18n', 'datetime_format')), |
204 | 204 | 'href': attachment.href() |
205 | 205 | } |
206 | 206 | return hdf |
diff -urN trac-0.9.6.orig/trac/db_default.py trac-0.9.6/trac/db_default.py
old
|
new
|
|
435 | 435 | ('timeline', 'ticket_show_details', 'false'), |
436 | 436 | ('browser', 'hide_properties', 'svk:merge'), |
437 | 437 | ('wiki', 'ignore_missing_pages', 'false'), |
| 438 | ('i18n', 'date_format', '%x'), |
| 439 | ('i18n', 'time_format', '%X'), |
| 440 | ('i18n', 'datetime_format', '%x %X'), |
438 | 441 | ) |
439 | 442 | |
440 | 443 | default_components = ('trac.About', 'trac.attachment', |
diff -urN trac-0.9.6.orig/trac/ticket/query.py trac-0.9.6/trac/ticket/query.py
old
|
new
|
|
559 | 559 | ticket['changed'] = True |
560 | 560 | for field, value in ticket.items(): |
561 | 561 | if field == 'time': |
562 | | ticket[field] = format_datetime(value) |
| 562 | ticket[field] = format_datetime(value, self.env.config.get('i18n', 'datetime_format')) |
563 | 563 | elif field == 'description': |
564 | 564 | ticket[field] = wiki_to_html(value or '', self.env, req, db) |
565 | 565 | else: |
diff -urN trac-0.9.6.orig/trac/ticket/report.py trac-0.9.6/trac/ticket/report.py
old
|
new
|
|
351 | 351 | elif column == 'report': |
352 | 352 | value['report_href'] = self.env.href.report(cell) |
353 | 353 | elif column in ('time', 'date','changetime', 'created', 'modified'): |
354 | | value['date'] = util.format_date(cell) |
355 | | value['time'] = util.format_time(cell) |
356 | | value['datetime'] = util.format_datetime(cell) |
| 354 | value['date'] = util.format_date(cell, self.env.config.get('i18n', 'date_format')) |
| 355 | value['time'] = util.format_time(cell, self.env.config.get('i18n', 'date_format')) |
| 356 | value['datetime'] = util.format_datetime(cell, self.env.config.get('i18n', 'date_format')) |
357 | 357 | value['gmt'] = util.http_date(cell) |
358 | 358 | prefix = 'report.items.%d.%s' % (row_idx, str(column)) |
359 | 359 | req.hdf[prefix] = str(cell) |
diff -urN trac-0.9.6.orig/trac/ticket/roadmap.py trac-0.9.6/trac/ticket/roadmap.py
old
|
new
|
|
96 | 96 | hdf['description'] = wiki_to_html(milestone.description, env, req, db) |
97 | 97 | if milestone.due: |
98 | 98 | hdf['due'] = milestone.due |
99 | | hdf['due_date'] = format_date(milestone.due) |
| 99 | hdf['due_date'] = format_date(milestone.due, env.config.get('i18n', 'date_format')) |
100 | 100 | hdf['due_delta'] = pretty_timedelta(milestone.due + 86400) |
101 | 101 | hdf['late'] = milestone.is_late |
102 | 102 | if milestone.completed: |
103 | 103 | hdf['completed'] = milestone.completed |
104 | | hdf['completed_date'] = format_datetime(milestone.completed) |
| 104 | hdf['completed_date'] = format_datetime(milestone.completed, env.config.get('i18n', 'datetime_format')) |
105 | 105 | hdf['completed_delta'] = pretty_timedelta(milestone.completed) |
106 | 106 | return hdf |
107 | 107 | |
… |
… |
|
390 | 390 | |
391 | 391 | due = req.args.get('duedate', '') |
392 | 392 | try: |
393 | | milestone.due = due and parse_date(due) or 0 |
| 393 | milestone.due = due and parse_date(due, self.env.config.get('i18n', 'date_format')) or 0 |
394 | 394 | except ValueError, e: |
395 | 395 | raise TracError(e, 'Invalid Date Format') |
396 | 396 | if req.args.has_key('completed'): |
397 | 397 | completed = req.args.get('completeddate', '') |
398 | 398 | try: |
399 | | milestone.completed = completed and parse_date(completed) or 0 |
| 399 | milestone.completed = completed and parse_date(completed, self.env.config.get('i18n', 'datetime_format')) or 0 |
400 | 400 | except ValueError, e: |
401 | 401 | raise TracError(e, 'Invalid Date Format') |
402 | 402 | if milestone.completed > time(): |
… |
… |
|
440 | 440 | |
441 | 441 | from trac.util import get_date_format_hint, get_datetime_format_hint |
442 | 442 | req.hdf['milestone'] = milestone_to_hdf(self.env, db, req, milestone) |
443 | | req.hdf['milestone.date_hint'] = get_date_format_hint() |
444 | | req.hdf['milestone.datetime_hint'] = get_datetime_format_hint() |
445 | | req.hdf['milestone.datetime_now'] = format_datetime() |
| 443 | req.hdf['milestone.date_hint'] = get_date_format_hint(self.env.config.get('i18n', 'date_format')) |
| 444 | req.hdf['milestone.datetime_hint'] = get_datetime_format_hint(self.env.config.get('i18n', 'datetime_format')) |
| 445 | req.hdf['milestone.datetime_now'] = format_datetime(None, self.env.config.get('i18n', 'datetime_format')) |
446 | 446 | |
447 | 447 | def _render_view(self, req, db, milestone): |
448 | 448 | req.hdf['title'] = 'Milestone %s' % milestone.name |
diff -urN trac-0.9.6.orig/trac/ticket/web_ui.py trac-0.9.6/trac/ticket/web_ui.py
old
|
new
|
|
383 | 383 | req.hdf['ticket.description.formatted'] = wiki_to_html(ticket['description'], |
384 | 384 | self.env, req, db) |
385 | 385 | |
386 | | req.hdf['ticket.opened'] = util.format_datetime(ticket.time_created) |
| 386 | req.hdf['ticket.opened'] = util.format_datetime(ticket.time_created, self.env.config.get('i18n', 'datetime_format')) |
387 | 387 | req.hdf['ticket.opened_delta'] = util.pretty_timedelta(ticket.time_created) |
388 | 388 | if ticket.time_changed != ticket.time_created: |
389 | | req.hdf['ticket.lastmod'] = util.format_datetime(ticket.time_changed) |
| 389 | req.hdf['ticket.lastmod'] = util.format_datetime(ticket.time_changed, self.env.config.get('i18n', 'datetime_format')) |
390 | 390 | req.hdf['ticket.lastmod_delta'] = util.pretty_timedelta(ticket.time_changed) |
391 | 391 | |
392 | 392 | changelog = ticket.get_changelog(db=db) |
… |
… |
|
396 | 396 | for date, author, field, old, new in changelog: |
397 | 397 | if date != curr_date or author != curr_author: |
398 | 398 | changes.append({ |
399 | | 'date': util.format_datetime(date), |
| 399 | 'date': util.format_datetime(date, self.env.config.get('i18n', 'datetime_format')), |
400 | 400 | 'author': author, |
401 | 401 | 'fields': {} |
402 | 402 | }) |
diff -urN trac-0.9.6.orig/trac/util.py trac-0.9.6/trac/util.py
old
|
new
|
|
414 | 414 | def format_time(t=None, format='%X', gmt=False): |
415 | 415 | return format_datetime(t, format, gmt) |
416 | 416 | |
417 | | def get_date_format_hint(): |
| 417 | def get_date_format_hint(format='%x'): |
418 | 418 | t = time.localtime(0) |
419 | 419 | t = (1999, 10, 29, t[3], t[4], t[5], t[6], t[7], t[8]) |
420 | | tmpl = time.strftime('%x', t) |
| 420 | tmpl = time.strftime(format, t) |
421 | 421 | return tmpl.replace('1999', 'YYYY', 1).replace('99', 'YY', 1) \ |
422 | 422 | .replace('10', 'MM', 1).replace('29', 'DD', 1) |
423 | 423 | |
424 | | def get_datetime_format_hint(): |
| 424 | def get_datetime_format_hint(format='%x %X'): |
425 | 425 | t = time.localtime(0) |
426 | 426 | t = (1999, 10, 29, 23, 59, 58, t[6], t[7], t[8]) |
427 | | tmpl = time.strftime('%x %X', t) |
| 427 | tmpl = time.strftime(format, t) |
428 | 428 | return tmpl.replace('1999', 'YYYY', 1).replace('99', 'YY', 1) \ |
429 | 429 | .replace('10', 'MM', 1).replace('29', 'DD', 1) \ |
430 | 430 | .replace('23', 'hh', 1).replace('59', 'mm', 1) \ |
… |
… |
|
443 | 443 | weekdays[t.tm_wday], t.tm_mday, months[t.tm_mon - 1], t.tm_year, |
444 | 444 | t.tm_hour, t.tm_min, t.tm_sec) |
445 | 445 | |
446 | | def parse_date(text): |
| 446 | def parse_date(text, default_format='%x %X'): |
447 | 447 | seconds = None |
448 | 448 | text = text.strip() |
449 | | for format in ['%x %X', '%x, %X', '%X %x', '%X, %x', '%x', '%c', |
| 449 | for format in [default_format, '%x %X', '%x, %X', '%X %x', '%X, %x', '%x', '%c', |
450 | 450 | '%b %d, %Y']: |
451 | 451 | try: |
452 | 452 | date = time.strptime(text, format) |
diff -urN trac-0.9.6.orig/trac/versioncontrol/web_ui/browser.py trac-0.9.6/trac/versioncontrol/web_ui/browser.py
old
|
new
|
|
160 | 160 | req.hdf['file'] = { |
161 | 161 | 'rev': node.rev, |
162 | 162 | 'changeset_href': self.env.href.changeset(node.rev), |
163 | | 'date': util.format_datetime(changeset.date), |
| 163 | 'date': util.format_datetime(changeset.date, self.env.config.get('i18n', 'datetime_format')), |
164 | 164 | 'age': util.pretty_timedelta(changeset.date), |
165 | 165 | 'author': changeset.author or 'anonymous', |
166 | 166 | 'message': wiki_to_html(changeset.message or '--', self.env, req, |
diff -urN trac-0.9.6.orig/trac/versioncontrol/web_ui/changeset.py trac-0.9.6/trac/versioncontrol/web_ui/changeset.py
old
|
new
|
|
152 | 152 | req.hdf['title'] = '[%s]' % chgset.rev |
153 | 153 | req.hdf['changeset'] = { |
154 | 154 | 'revision': chgset.rev, |
155 | | 'time': util.format_datetime(chgset.date), |
| 155 | 'time': util.format_datetime(chgset.date, self.env.config.get('i18n', 'datetime_format')), |
156 | 156 | 'author': chgset.author or 'anonymous', |
157 | 157 | 'message': wiki_to_html(chgset.message or '--', self.env, req, |
158 | 158 | escape_newlines=True) |
diff -urN trac-0.9.6.orig/trac/versioncontrol/web_ui/util.py trac-0.9.6/trac/versioncontrol/web_ui/util.py
old
|
new
|
|
48 | 48 | message = str(message) |
49 | 49 | changes[rev] = { |
50 | 50 | 'date_seconds': changeset.date, |
51 | | 'date': format_datetime(changeset.date), |
| 51 | 'date': format_datetime(changeset.date, env.config.get('i18n', 'datetime_format')), |
52 | 52 | 'age': pretty_timedelta(changeset.date), |
53 | 53 | 'author': changeset.author or 'anonymous', |
54 | 54 | 'message': message, |
diff -urN trac-0.9.6.orig/trac/web/main.py trac-0.9.6/trac/web/main.py
old
|
new
|
|
149 | 149 | from trac import __version__ |
150 | 150 | hdf['trac'] = { |
151 | 151 | 'version': __version__, |
152 | | 'time': format_datetime(), |
| 152 | 'time': format_datetime(None, env.config.get('i18n', 'datetime_format')), |
153 | 153 | 'time.gmt': http_date() |
154 | 154 | } |
155 | 155 | hdf['trac.href'] = { |
diff -urN trac-0.9.6.orig/trac/wiki/macros.py trac-0.9.6/trac/wiki/macros.py
old
|
new
|
|
114 | 114 | prevdate = None |
115 | 115 | |
116 | 116 | for name, time in cursor: |
117 | | date = format_date(time) |
| 117 | date = format_date(time, self.env.config.get('i18n', 'date_format')) |
118 | 118 | if date != prevdate: |
119 | 119 | if prevdate: |
120 | 120 | buf.write('</ul>') |
diff -urN trac-0.9.6.orig/trac/wiki/web_ui.py trac-0.9.6/trac/wiki/web_ui.py
old
|
new
|
|
241 | 241 | for version,t,author,comment,ipnr in page.get_history(): |
242 | 242 | if version == page.version: |
243 | 243 | if t: |
244 | | info['time'] = format_datetime(t) |
| 244 | info['time'] = format_datetime(t, self.env.config.get('i18n', 'datetime_format')) |
245 | 245 | info['time_delta'] = pretty_timedelta(t) |
246 | 246 | info['author'] = author or 'anonymous' |
247 | 247 | info['comment'] = comment or '--' |
… |
… |
|
334 | 334 | version=version, |
335 | 335 | action='diff'), |
336 | 336 | 'version': version, |
337 | | 'time': format_datetime(t), |
| 337 | 'time': format_datetime(t, self.env.config.get('i18n', 'datetime_format')), |
338 | 338 | 'time_delta': pretty_timedelta(t), |
339 | 339 | 'author': author, |
340 | 340 | 'comment': wiki_to_oneliner(comment or '', self.env, db), |