Opened 11 years ago

Last modified 11 years ago

#19417 closed Bug

Django 1.4.2 does not support Jython 2.5.3 (strptime issue) — at Initial Version

Reported by: Steven L Smith Owned by: nobody
Component: Documentation Version: 1.4
Severity: Normal Keywords: strptime jython forms datetimefield
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

As near as I can tell, this is a problem with Django / Jython compatibility and not my code... if I'm wrong feel free to slap my wrist...

A form was created with the following field:
start_date = forms.DateTimeField(required=True, widget=forms.DateTimeInput({'class': 'datetime'}))

The following POST data was passed:
start_date u'11/03/2012 00:00:00'

The following traceback was received when I check for form.is_valid() in the view:
---

Environment:

Request Method: POST
Request URL: http://127.0.0.1:6701/reports/ondemand/Top_Incident_Types/

Django Version: 1.4.2
Python Version: 2.5.3
Installed Applications:
('django.contrib.formtools',

'django.contrib.humanize',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'mykui.accounts',
'mykui.console',
'mykui.mykonfig',
'mykui.reports',
'mykui.status',
'mykui.updates',
'mykui.util')

Installed Middleware:
('django.middleware.gzip.GZipMiddleware',

'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'mykui.middleware.UserMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'mykui.middleware.UnavailableMiddleware',
'mykui.middleware.SystemMessageMiddleware',
'mykui.middleware.TimezoneMiddleware')

Traceback:
File "/usr/share/msa/jython/Lib/site-packages/Django-1.4.2-py2.5.egg/django/core/handlers/base.py" in get_response

  1. response = callback(request, *callback_args, callback_kwargs)

File "/usr/share/msa/jython/Lib/site-packages/Django-1.4.2-py2.5.egg/django/core/handlers/base.py" in get_response

  1. response = callback(request, *callback_args, callback_kwargs)

File "/usr/share/msa/jython/Lib/site-packages/Django-1.4.2-py2.5.egg/django/views/decorators/http.py" in inner

  1. return func(request, *args, kwargs)

File "/usr/share/msa/ui/mykui/decorators.py" in _inner

  1. return view(*args, kwargs)

File "/usr/share/msa/ui/mykui/decorators.py" in _inner

  1. return view(*args, kwargs)

File "/usr/share/msa/ui/mykui/reports/views.py" in reports_ondemand

  1. if form.is_valid():

File "/usr/share/msa/jython/Lib/site-packages/Django-1.4.2-py2.5.egg/django/forms/forms.py" in is_valid

  1. return self.is_bound and not bool(self.errors)

File "/usr/share/msa/jython/Lib/site-packages/Django-1.4.2-py2.5.egg/django/forms/forms.py" in _get_errors

  1. self.full_clean()

File "/usr/share/msa/jython/Lib/site-packages/Django-1.4.2-py2.5.egg/django/forms/forms.py" in full_clean

  1. self._clean_fields()

File "/usr/share/msa/jython/Lib/site-packages/Django-1.4.2-py2.5.egg/django/forms/forms.py" in _clean_fields

  1. value = field.clean(value)

File "/usr/share/msa/jython/Lib/site-packages/Django-1.4.2-py2.5.egg/django/forms/forms.py" in _clean_fields

  1. value = field.clean(value)

File "/usr/share/msa/jython/Lib/site-packages/Django-1.4.2-py2.5.egg/django/forms/fields.py" in clean

  1. value = self.to_python(value)

File "/usr/share/msa/jython/Lib/site-packages/Django-1.4.2-py2.5.egg/django/forms/fields.py" in to_python

  1. result = super(DateTimeField, self).to_python(value)

File "/usr/share/msa/jython/Lib/site-packages/Django-1.4.2-py2.5.egg/django/forms/fields.py" in to_python

  1. return self.strptime(value, format)

File "/usr/share/msa/jython/Lib/site-packages/Django-1.4.2-py2.5.egg/django/forms/fields.py" in to_python

  1. return self.strptime(value, format)

File "/usr/share/msa/jython/Lib/site-packages/Django-1.4.2-py2.5.egg/django/forms/fields.py" in strptime

  1. return datetime.datetime.strptime(value, format)

File "/usr/share/msa/jython/Lib/datetime.py" in strptime

  1. return cls(*(_time.strptime(date_string, format))[0:6])

Exception Type: IllegalArgumentException at /reports/ondemand/Top_Incident_Types/
Exception Value: java.lang.IllegalArgumentException: Illegal pattern character 'f'

---

At 441, format = '%Y-%m-%d %H:%M:%S.%f'

The %f formatting character was introduced in Python 2.6, but it is not supported in Jython, even in the 2.7 alphas. http://bugs.jython.org/issue1964

I remember this code working fine in Django 1.4.1, but I cannot seem to find a commit that would have broken it during the timeframe between the 1.4.1 and 1.4.2 releases.

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top