#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 django-updates@googlegroups.com.
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to