#15129: Invalid order of applying formats ----------------------------------+----------------------------------------- Reporter: tonnzor | Owner: nobody Status: new | Milestone: 1.3 Component: Internationalization | Version: 1.2 Keywords: | Stage: Unreviewed Has_patch: 0 | ----------------------------------+----------------------------------------- I found that DATE_INPUT_FORMATS used for JS I18N is not format I defined in app/formats/*/formats.py file (FORMAT_MODULE_PATH = 'app.formats')
Django version is 1.2.4 I found that get_formats uses invalid order of formats - so format I defined is being overwritten by Django's default ones. That is serious bug as Django JS uses different formatting than server- side code. To prove that I changed file django/views/i18n.py to debug the issue: {{{ def get_formats(): """ Returns all formats strings required for i18n to work """ FORMAT_SETTINGS = ( 'DATE_FORMAT', 'DATETIME_FORMAT', 'TIME_FORMAT', 'YEAR_MONTH_FORMAT', 'MONTH_DAY_FORMAT', 'SHORT_DATE_FORMAT', 'SHORT_DATETIME_FORMAT', 'FIRST_DAY_OF_WEEK', 'DECIMAL_SEPARATOR', 'THOUSAND_SEPARATOR', 'NUMBER_GROUPING', 'DATE_INPUT_FORMATS', 'TIME_INPUT_FORMATS', 'DATETIME_INPUT_FORMATS' ) result = {} modules = [settings] + get_format_modules(reverse=True) # DEBUG log = '%r:\n' % modules # DEBUG for module in modules: for attr in FORMAT_SETTINGS: try: if attr == 'DATE_INPUT_FORMATS': # DEBUG log += " %r from %r\n" % (getattr(module, attr, None), module) #DEBUG result[attr] = getattr(module, attr) except AttributeError: pass log += "=> %r from %r" % (result.get('DATE_INPUT_FORMATS'), module) # DEBUG if result.get('DATE_INPUT_FORMATS') != ('%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y'): # DEBUG logging.getLogger('coupon.localebug').error(log) # DEBUG # remaining code is cut }}} That's the output I got: {{{ [<django.conf.LazySettings object at 0x2359fd0>, <module 'app.formats.fr.formats' from '/XXX/app/formats/fr/formats.pyc'>, <module 'django.conf.locale.fr.formats' from '/XXX/pyenv/lib/python2.5/site- packages/django/conf/locale/fr/formats.pyc'>]: ('%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y') from <django.conf.LazySettings object at 0x2359fd0> ('%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y') from <module 'app.formats.fr.formats' from '/XXX/app/formats/fr/formats.pyc'> ('%d/%m/%Y', '%d/%m/%y', '%d.%m.%Y', '%d.%m.%y', '%Y-%m-%d', '%y-%m-%d') from <module 'django.conf.locale.fr.formats' from '/XXX/pyenv/lib/python2.5/site- packages/django/conf/locale/fr/formats.pyc'> => ('%d/%m/%Y', '%d/%m/%y', '%d.%m.%Y', '%d.%m.%y', '%Y-%m-%d', '%y-%m-%d') from <module 'django.conf.locale.fr.formats' from '/XXX/pyenv/lib/python2.5/site- packages/django/conf/locale/fr/formats.pyc'> }}} That means that my format is used, but it is not the last in the order, so it is being overwritten. -- Ticket URL: <http://code.djangoproject.com/ticket/15129> Django <http://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To post to this group, send email to django-updates@googlegroups.com. To unsubscribe from this group, send email to django-updates+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-updates?hl=en.