# HG changeset patch # User raph # Date 1267608545 -3600 # Node ID e0032b64c314f5b2e5abc4ace7195f74cceb4347 # Parent e5e8cdfde78296ec39ce60532dbb4549e65b82f5 add try/except for local timezone conversion to prevent timezone error (mail admins) diff -r e5e8cdfde782 -r e0032b64c314 src/cm/templatetags/com.py --- a/src/cm/templatetags/com.py Tue Mar 02 10:57:44 2010 +0100 +++ b/src/cm/templatetags/com.py Wed Mar 03 10:29:05 2010 +0100 @@ -128,7 +128,8 @@ from datetime import datetime from time import struct_time from cm.utils.timezone import tz_convert - +from pytz import UnknownTimeZoneError +from cm.utils.log import error_mail_admins @register.filter def local_date(value, tz=None): """Formats a date according to the given local date format.""" @@ -137,7 +138,10 @@ if isinstance(value,struct_time): publication_date = datetime(value.tm_year,value.tm_mon,value.tm_mday,value.tm_hour,value.tm_min,value.tm_sec) - value = tz_convert(value,tz) + try: + value = tz_convert(value,tz) + except UnknownTimeZoneError: + error_mail_admins() arg = _(u"F j, Y \\a\\t g:i a") return format(value, arg) diff -r e5e8cdfde782 -r e0032b64c314 src/cm/utils/log.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/utils/log.py Wed Mar 03 10:29:05 2010 +0100 @@ -0,0 +1,21 @@ +from django.conf import settings +from django.core.mail import mail_admins +import sys + +def _get_traceback(exc_info): + import traceback + return '\n'.join(traceback.format_exception(*(exc_info or sys.exc_info()))) + +def error_mail_admins(subject='Error', request=None): + if request: + subject = 'Error (%s IP): %s' % ((request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS and 'internal' or 'EXTERNAL'), request.path) + + try: + request_repr = repr(request) + except: + request_repr = "Request repr() unavailable" + + exc_info = sys.exc_info() + message = "%s\n\n%s" % (_get_traceback(exc_info), request_repr) + + mail_admins(subject, message, fail_silently=True)