#19417: Django 1.4.2 does not support Jython 2.5.3 (strptime issue)
-------------------------------------+-------------------------------------
Reporter: fvox13 | Owner: nobody
Type: Uncategorized | Status: new
Component: Forms | Version: 1.4
Severity: Normal | Resolution:
Keywords: strptime jython | Triage Stage:
forms datetimefield | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by aaugustin):
* needs_docs: => 0
* needs_tests: => 0
* needs_better_patch: => 0
Old 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
> 111. 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
> 111. 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
> 41. return func(request, *args, **kwargs)
> File "/usr/share/msa/ui/mykui/decorators.py" in _inner
> 49. return view(*args, **kwargs)
> File "/usr/share/msa/ui/mykui/decorators.py" in _inner
> 31. return view(*args, **kwargs)
> File "/usr/share/msa/ui/mykui/reports/views.py" in reports_ondemand
> 38. 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
> 124. 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
> 115. 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
> 270. 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
> 287. 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
> 287. 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
> 153. 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
> 437. 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
> 342. 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
> 342. 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
> 441. return datetime.datetime.strptime(value, format)
> File "/usr/share/msa/jython/Lib/datetime.py" in strptime
> 1499. 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.
New 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
111. 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
111. 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
41. return func(request, *args, **kwargs)
File "/usr/share/msa/ui/mykui/decorators.py" in _inner
49. return view(*args, **kwargs)
File "/usr/share/msa/ui/mykui/decorators.py" in _inner
31. return view(*args, **kwargs)
File "/usr/share/msa/ui/mykui/reports/views.py" in reports_ondemand
38. 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
124. 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
115. 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
270. 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
287. 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
287. 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
153. 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
437. 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
342. 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
342. 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
441. return datetime.datetime.strptime(value, format)
File "/usr/share/msa/jython/Lib/datetime.py" in strptime
1499. 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.
--
Comment:
This behavior was introduced by the fix for #9459.
--
Ticket URL: <https://code.djangoproject.com/ticket/19417#comment:1>
Django <https://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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit https://groups.google.com/groups/opt_out.