diff --git a/gracedb/templatetags/__init__.py b/gracedb/templatetags/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/gracedb/templatetags/timeutil.py b/gracedb/templatetags/timeutil.py new file mode 100644 index 0000000000000000000000000000000000000000..07f1827cd4a3259796b540092b24d8a91150e334 --- /dev/null +++ b/gracedb/templatetags/timeutil.py @@ -0,0 +1,65 @@ + +from django import template +from django.conf import settings +from django.utils import dateformat + +import pytz + +# DATETIME_SETTINGS is guaranteed to be set. GRACE_DATETIME_FORMAT is not. +FORMAT = getattr(settings, 'GRACE_DATETIME_FORMAT', settings.DATETIME_FORMAT) + +LOCAL_TZ = pytz.timezone(settings.TIME_ZONE) + +register = template.Library() + +@register.filter(name='utc') +def utc(dt, format=FORMAT): + if not dt.tzinfo: + dt = LOCAL_TZ.localize(dt) + dt = dt.astimezone(pytz.utc) + return dateformat.format(dt, format) + +@register.filter(name='gpsdate') +def gpsdate(gpstime, format=FORMAT): + return dateformat.format(gpsToUTC(gpstime), format) + + + +# GPS time conversion + +# This is kind of awful in that leapSeconds +# are hard coded and needs to be kept up to date. +# Also, this should be somewhere else. + +import calendar, datetime + +gpsEpoch = calendar.timegm((1980, 1, 6, 0, 0, 0, 0, 0, 0)) + +leapSeconds = map(calendar.timegm, [ + (1981, 7, 0, 0, 0, 0, 0, 0, 0), + (1982, 7, 0, 0, 0, 0, 0, 0, 0), + (1983, 7, 0, 0, 0, 0, 0, 0, 0), + (1985, 7, 0, 0, 0, 0, 0, 0, 0), + (1988, 1, 0, 0, 0, 0, 0, 0, 0), + (1990, 1, 0, 0, 0, 0, 0, 0, 0), + (1991, 1, 0, 0, 0, 0, 0, 0, 0), + (1992, 7, 0, 0, 0, 0, 0, 0, 0), + (1993, 7, 0, 0, 0, 0, 0, 0, 0), + (1994, 7, 0, 0, 0, 0, 0, 0, 0), + (1996, 1, 0, 0, 0, 0, 0, 0, 0), + (1997, 7, 0, 0, 0, 0, 0, 0, 0), + (1999, 1, 0, 0, 0, 0, 0, 0, 0), + (2006, 1, 0, 0, 0, 0, 0, 0, 0), + (2009, 1, 0, 0, 0, 0, 0, 0, 0), +]) + +def gpsToPosixTime(gpsTime): + t = gpsEpoch + gpsTime + for leap in leapSeconds: + if t >= leap: + t = t - 1 + return t + +def gpsToUTC(gpsTime): + t = gpsToPosixTime(gpsTime) + return datetime.datetime.fromtimestamp(t, pytz.utc) diff --git a/settings.py b/settings.py index 52f5f0d086e70d4dec6ad483f31b3397b6822a30..67740dd4570cddc8374660e798ea77f778b61834 100644 --- a/settings.py +++ b/settings.py @@ -39,7 +39,9 @@ DATABASE_PORT = '' # Set to empty string for default. # although not all choices may be available on all operating systems. # If running in a Windows environment this must be set to the same as your # system time zone. + TIME_ZONE = 'America/Chicago' +GRACE_DATETIME_FORMAT = 'Y-m-d H:i:s T' # Language code for this installation. All choices can be found here: # http://www.i18nguy.com/unicode/language-identifiers.html @@ -104,9 +106,9 @@ TEMPLATE_DIRS = ( INSTALLED_APPS = ( 'django.contrib.auth', + 'django.contrib.admin', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', - 'django.contrib.admin', 'gracedb.gracedb', ) diff --git a/settings_dev.py b/settings_dev.py index 2f764cc87e8d66737ca54564c7e51997ddae2641..8baa7da37489051962d17d32a50f08d89c8e68bb 100644 --- a/settings_dev.py +++ b/settings_dev.py @@ -32,7 +32,9 @@ DATABASE_PORT = '' # Set to empty string for default. # although not all choices may be available on all operating systems. # If running in a Windows environment this must be set to the same as your # system time zone. + TIME_ZONE = 'America/Chicago' +GRACE_DATETIME_FORMAT = 'Y-m-d H:i:s T' # Language code for this installation. All choices can be found here: # http://www.i18nguy.com/unicode/language-identifiers.html diff --git a/templates/feeds/latest_description.html b/templates/feeds/latest_description.html index 61dd235691b95003fc83352b5119af871325d40e..db8d88f78f47e8f9fec1023324a24d798e889a09 100644 --- a/templates/feeds/latest_description.html +++ b/templates/feeds/latest_description.html @@ -1,6 +1,7 @@ +{% load timeutil %} <ul> <li><a href="{{ obj.weburl }}">Data</a></li> <li><a href="{{ obj.wikiurl }}">TWiki</a></li> </ul> Sumbmitter: {{ obj.submitter.name }}<br/> -Created: {{ obj.created }} +Created: {{ obj.created|utc }} diff --git a/templates/gracedb/event_detail.html b/templates/gracedb/event_detail.html index 9482201121477c94778c39cedb40092e807dabcd..c6e8983fa8f1e5f9d79f597b4358d702bb0952bb 100644 --- a/templates/gracedb/event_detail.html +++ b/templates/gracedb/event_detail.html @@ -1,4 +1,5 @@ {% extends "base.html" %} +{% load timeutil %} {% block title %}View {{ object.graceid }}{% endblock %} {% block heading %}View {{ object.graceid }}{% endblock %} @@ -11,7 +12,8 @@ <tr><th>Group</th><td>{{ object.group.name }}</td></tr> <tr><th>Type</th><td>{{ object.get_analysisType_display }}</td></tr> {% if object.gpstime %} - <tr><th>GPS Time</th><td>{{ object.gpstime }}</td></tr> + <tr><th>GPS Time</th><td> + <span title="{{ object.gpstime|gpsdate }}">{{ object.gpstime }}</span></td></tr> {% endif %} <tr><th>Data</th><td> <a href="{{ object.weburl }}">{{ object.weburl }}</a> @@ -20,7 +22,8 @@ <a href="{{ object.wikiurl }}">{{ object.wikiurl }}</a> </td></tr> <tr><th>Sumitter</th><td>{{ object.submitter.name }}</td></tr> - <tr><th>Created</th><td>{{ object.created }}</td></tr> + <tr><th>Created</th><td>{{ object.created|utc }} + </td></tr> </table> {% if object.eventlog_set.count %} @@ -34,7 +37,7 @@ </tr> {% for log in object.eventlog_set.iterator %} <tr class={% cycle 'odd' 'even' %}> - <td>{{ log.created }}</td> + <td>{{ log.created|utc }}</td> <td>{{ log.issuer }}</td> <td><a href="{{ log.fileurl }}">{{ log.filename }}</a></td> <td>{{ log.comment }}</td> diff --git a/templates/gracedb/event_list.html b/templates/gracedb/event_list.html index f8792f12707f1f88101aab64c03a6a981a73173e..5bdac7bed938cee8e02d1f72c765a517e8e3d3ae 100644 --- a/templates/gracedb/event_list.html +++ b/templates/gracedb/event_list.html @@ -1,4 +1,5 @@ {% extends "base.html" %} +{% load timeutil %} {% block title %}{{ title }}{% endblock %} {% block heading %}{{ title }}{% endblock %} @@ -47,7 +48,9 @@ <td>{{ obj.submitter }} </td> <td>{{ obj.group }} </td> <td>{{ obj.get_analysisType_display }} </td> - <td>{% if obj.gpstime%}{{ obj.gpstime }}{% endif %}</td> + <td>{% if obj.gpstime%} + <span title="{{ obj.gpstime|gpsdate }}">{{ obj.gpstime }}</span> + {% endif %}</td> <td><a href="{{ obj.weburl }}">Web: {{ obj.graceid }}</a></td> <td><a href="{{ obj.wikiurl }}">Wiki: {{ obj.graceid }}</a></td> </tr>