view website/issues/extensions/timezone.py @ 5086:2b551b6b0830

issue2550549 Postgres error on message templating Exception gets thrown and not captured if nodeid is too large on postgres. Added a check in rdbms_common layer that max nodeid is < 2^31 -1. This is also the limit for INTEGER on MySql. SqlLite can support up to 2^63-1, but I chose the smallest common denominator. Large nodeid should now returns no such id rather than a stack trace. Patch idea from: martin.v.loewis. (John Rouillard) This fixes the reason for patches: https://hg.python.org/tracker/roundup/rev/1548763e8273 and https://hg.python.org/tracker/roundup/rev/eb3be57f1ef2
author John Rouillard <rouilj@ieee.org>
date Sat, 18 Jun 2016 22:48:21 -0400
parents 7d8e0dbb0852
children
line wrap: on
line source

# Utility for replacing the simple input field for the timezone with
# a select-field that lists the available values.

import cgi

try:
    import pytz
except ImportError:
    pytz = None


def tzfield(prop, name, default):
    if pytz:
        value = prop.plain()        
        if '' == value:
            value = default
        else:
            try:
                value = "Etc/GMT%+d" % int(value)
            except ValueError:
                pass

        l = ['<select name="%s">' % name]
        for zone in pytz.all_timezones:
            s = ' '
            if zone == value:
                s = 'selected=selected '
            z = cgi.escape(zone)
            l.append('<option %svalue="%s">%s</option>' % (s, z, z))
        l.append('</select>')
        return '\n'.join(l)
        
    else:
        return prop.field()

def init(instance):
    instance.registerUtil('tzfield', tzfield)

Roundup Issue Tracker: http://roundup-tracker.org/