Re: [Django] #23397: Multipart base64 file decoding of fails with large files when the encoded string contains newlines.

2014-09-13 Thread Django
#23397: Multipart base64 file decoding of fails with large files when the 
encoded
string contains newlines.
---+
 Reporter:  jhobbs |Owner:  nobody
 Type:  Bug|   Status:  closed
Component:  HTTP handling  |  Version:  master
 Severity:  Normal |   Resolution:  fixed
 Keywords: | Triage Stage:  Accepted
Has patch:  1  |  Needs documentation:  0
  Needs tests:  0  |  Patch needs improvement:  0
Easy pickings:  0  |UI/UX:  0
---+
Changes (by Claude Paroz ):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 In [changeset:"e1424b237003723c12400b5e1cfd95c87650e62b"]:
 {{{
 #!CommitTicketReference repository=""
 revision="e1424b237003723c12400b5e1cfd95c87650e62b"
 Fixed #23397 -- Stripped whitespace from base64 during chunking

 This insures the actual base64 content has a length a multiple of 4.
 Also added a test case for the failure.
 }}}

--
Ticket URL: 
Django 
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/064.bf223b407e634b8bea7de5f2561c8e9a%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.


Re: [Django] #23397: Multipart base64 file decoding of fails with large files when the encoded string contains newlines.

2014-09-03 Thread Django
#23397: Multipart base64 file decoding of fails with large files when the 
encoded
string contains newlines.
---+
 Reporter:  jhobbs |Owner:  nobody
 Type:  Bug|   Status:  new
Component:  HTTP handling  |  Version:  master
 Severity:  Normal |   Resolution:
 Keywords: | Triage Stage:  Accepted
Has patch:  1  |  Needs documentation:  0
  Needs tests:  0  |  Patch needs improvement:  0
Easy pickings:  0  |UI/UX:  0
---+

Comment (by jhobbs):

 I hit this working on MAAS - http://launchpad.net/maas - which uses Django
 for its web interface and API. We recently added an API call for uploading
 large files, which is where I ran into this.

 MAAS's cli uses python stdlib's Email.generator to build multipart
 requests (http://bazaar.launchpad.net/~maas-
 maintainers/maas/trunk/view/head:/src/apiclient/multipart.py).

 Here's the original bug on launchpad:
 https://bugs.launchpad.net/maas/+bug/1363348

--
Ticket URL: 
Django 
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/064.c08672474d0ed2658f6ca99fabe9da7a%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.


Re: [Django] #23397: Multipart base64 file decoding of fails with large files when the encoded string contains newlines.

2014-09-03 Thread Django
#23397: Multipart base64 file decoding of fails with large files when the 
encoded
string contains newlines.
---+
 Reporter:  jhobbs |Owner:  nobody
 Type:  Bug|   Status:  new
Component:  HTTP handling  |  Version:  master
 Severity:  Normal |   Resolution:
 Keywords: | Triage Stage:  Accepted
Has patch:  1  |  Needs documentation:  0
  Needs tests:  0  |  Patch needs improvement:  0
Easy pickings:  0  |UI/UX:  0
---+
Changes (by timgraham):

 * needs_docs:  1 => 0


Comment:

 This looks like more of a bug fix than a "feature" so the release notes
 probably aren't required. Could you give some background how you
 encountered this issue so I can better understand it?

--
Ticket URL: 
Django 
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/064.42be7bc522be77bc1fe745715114651b%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.


Re: [Django] #23397: Multipart base64 file decoding of fails with large files when the encoded string contains newlines.

2014-09-02 Thread Django
#23397: Multipart base64 file decoding of fails with large files when the 
encoded
string contains newlines.
---+
 Reporter:  jhobbs |Owner:  nobody
 Type:  Bug|   Status:  new
Component:  HTTP handling  |  Version:  master
 Severity:  Normal |   Resolution:
 Keywords: | Triage Stage:  Accepted
Has patch:  1  |  Needs documentation:  1
  Needs tests:  0  |  Patch needs improvement:  0
Easy pickings:  0  |UI/UX:  0
---+
Changes (by jhobbs):

 * needs_better_patch:  1 => 0


Comment:

 I've fixed the python3 test failures and added documentation to the
 release note.

--
Ticket URL: 
Django 
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/064.5b14ba819dab3a14132fe36812583070%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.


Re: [Django] #23397: Multipart base64 file decoding of fails with large files when the encoded string contains newlines.

2014-09-02 Thread Django
#23397: Multipart base64 file decoding of fails with large files when the 
encoded
string contains newlines.
---+
 Reporter:  jhobbs |Owner:  nobody
 Type:  Bug|   Status:  new
Component:  HTTP handling  |  Version:  master
 Severity:  Normal |   Resolution:
 Keywords: | Triage Stage:  Accepted
Has patch:  1  |  Needs documentation:  1
  Needs tests:  0  |  Patch needs improvement:  1
Easy pickings:  0  |UI/UX:  0
---+
Changes (by bmispelon):

 * needs_better_patch:  0 => 1
 * stage:  Unreviewed => Accepted
 * version:  1.6 => master
 * needs_docs:  0 => 1


Comment:

 Hi,

 Indeed, there seem to be a bug here.

 I can't say whether your fix is the right approach, but it does seem to
 fix the issue and the testcase you added currently fails which is a good
 sign.
 The testcase fails on python3 however, and the PR is missing some
 documentation (a mention in the release notes for 1.8).

 I'm checking `patch needs improvement`. Please uncheck it when you've
 fixed the two points above.

 Thanks

--
Ticket URL: 
Django 
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/064.da3a5f1a6e915c0b72c1926e90fda071%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.


Re: [Django] #23397: Multipart base64 file decoding of fails with large files when the encoded string contains newlines.

2014-09-02 Thread Django
#23397: Multipart base64 file decoding of fails with large files when the 
encoded
string contains newlines.
---+--
 Reporter:  jhobbs |Owner:  nobody
 Type:  Bug|   Status:  new
Component:  HTTP handling  |  Version:  1.6
 Severity:  Normal |   Resolution:
 Keywords: | Triage Stage:  Unreviewed
Has patch:  1  |  Needs documentation:  0
  Needs tests:  0  |  Patch needs improvement:  0
Easy pickings:  0  |UI/UX:  0
---+--
Changes (by jhobbs):

 * has_patch:  0 => 1


Old description:

> Large files are files larger than the chunk size in
> MultiPartParser.parse().
>
> parse() tries to process base64 encoded files in chunks with lengths a
> multiple of 4. The base64 encoded string can contain newline characters,
> which aren't significant in base64 and should be ignored, but are counted
> toward's a chunk's length in parse(). This means when whitespace is
> stripped from the string, the count of base64 encoded characters may not
> be a multiple of 4, leading to an "Incorrect padding" error.
>
> Here's a testcase for creating this failure:
>
> https://github.com/jhobbs/django/commit/98347e396133990b82b596310e4490369ba676d5
>
> Stacktrace:
> {{{
> Traceback (most recent call last):
>   File "/home/jason/canonical/code/django/tests/file_uploads/tests.py",
> line 109, in test_big_base64_newlines_upload
> "Big data" * 68000, encode=base64.encodestring)
>   File "/home/jason/canonical/code/django/tests/file_uploads/tests.py",
> line 96, in _test_base64_upload
> response = self.client.request(**r)
>   File "/home/jason/canonical/code/django/django/test/client.py", line
> 443, in request
> six.reraise(*exc_info)
>   File "/home/jason/canonical/code/django/django/core/handlers/base.py",
> line 121, in get_response
> response = wrapped_callback(request, *callback_args,
> **callback_kwargs)
>   File "/home/jason/canonical/code/django/tests/file_uploads/views.py",
> line 103, in file_upload_echo_content
> r = dict((k, f.read().decode('utf-8')) for k, f in
> request.FILES.items())
>   File "/home/jason/canonical/code/django/django/core/handlers/wsgi.py",
> line 152, in _get_files
> self._load_post_and_files()
>   File "/home/jason/canonical/code/django/django/http/request.py", line
> 249, in _load_post_and_files
> self._post, self._files = self.parse_file_upload(self.META, data)
>   File "/home/jason/canonical/code/django/django/http/request.py", line
> 214, in parse_file_upload
> return parser.parse()
>   File
> "/home/jason/canonical/code/django/django/http/multipartparser.py", line
> 220, in parse
> six.reraise(MultiPartParserError, MultiPartParserError(msg),
> sys.exc_info()[2])
>   File
> "/home/jason/canonical/code/django/django/http/multipartparser.py", line
> 216, in parse
> chunk = base64.b64decode(chunk)
>   File "/usr/lib/python2.7/base64.py", line 76, in b64decode
> raise TypeError(msg)
> MultiPartParserError: Could not decode base64 data:
> TypeError(Error('Incorrect padding',),)
> }}}

New description:

 Large files are files larger than the chunk size in
 MultiPartParser.parse().

 parse() tries to process base64 encoded files in chunks with lengths a
 multiple of 4. The base64 encoded string can contain newline characters,
 which aren't significant in base64 and should be ignored, but are counted
 toward's a chunk's length in parse(). This means when whitespace is
 stripped from the string, the count of base64 encoded characters may not
 be a multiple of 4, leading to an "Incorrect padding" error.

 This pull request has a testcase for producing the failure and a proposed
 patch to fix the issue.

 https://github.com/django/django/pull/3151/files

 Stacktrace:
 {{{
 Traceback (most recent call last):
   File "/home/jason/canonical/code/django/tests/file_uploads/tests.py",
 line 109, in test_big_base64_newlines_upload
 "Big data" * 68000, encode=base64.encodestring)
   File "/home/jason/canonical/code/django/tests/file_uploads/tests.py",
 line 96, in _test_base64_upload
 response = self.client.request(**r)
   File "/home/jason/canonical/code/django/django/test/client.py", line
 443, in request
 six.reraise(*exc_info)
   File "/home/jason/canonical/code/django/django/core/handlers/base.py",
 line 121, in get_response
 response = wrapped_callback(request, *callback_args,
 **callback_kwargs)
   File "/home/jason/canonical/code/django/tests/file_uploads/views.py",
 line 103, in file_upload_echo_content
 r = dict((k, f.read().decode('utf-8')) for k, f in
 request.FILES.items())
   File "/home/jason/canonical/code/django/django/core/handlers/wsgi.py",
 line 152, in _get_files
 self._load_post_and_files()
   File "/

Re: [Django] #23397: Multipart base64 file decoding of fails with large files when the encoded string contains newlines.

2014-09-02 Thread Django
#23397: Multipart base64 file decoding of fails with large files when the 
encoded
string contains newlines.
---+--
 Reporter:  jhobbs |Owner:  nobody
 Type:  Bug|   Status:  new
Component:  HTTP handling  |  Version:  1.6
 Severity:  Normal |   Resolution:
 Keywords: | Triage Stage:  Unreviewed
Has patch:  0  |  Needs documentation:  0
  Needs tests:  0  |  Patch needs improvement:  0
Easy pickings:  0  |UI/UX:  0
---+--
Description changed by jhobbs:

Old description:

> Large files are files larger than the chunk size in
> MultiPartParser.parse().
>
> Parse tries to process base64 encoded files in chunks with lengths a
> multiple of 4. The base64 encoded string can contain newline characters,
> which aren't significant in base64 and should be ignored, but are counted
> toward's a chunk's length in parse(). This means when whitespace is
> stripped from the string, the count of base64 encoded characters may not
> be a multiple of 4, leading to an "Incorrect padding" error.
>
> Here's a testcase for creating this failure:
>
> https://github.com/jhobbs/django/commit/98347e396133990b82b596310e4490369ba676d5
>
> Stacktrace:
> {{{
> Traceback (most recent call last):
>   File "/home/jason/canonical/code/django/tests/file_uploads/tests.py",
> line 109, in test_big_base64_newlines_upload
> "Big data" * 68000, encode=base64.encodestring)
>   File "/home/jason/canonical/code/django/tests/file_uploads/tests.py",
> line 96, in _test_base64_upload
> response = self.client.request(**r)
>   File "/home/jason/canonical/code/django/django/test/client.py", line
> 443, in request
> six.reraise(*exc_info)
>   File "/home/jason/canonical/code/django/django/core/handlers/base.py",
> line 121, in get_response
> response = wrapped_callback(request, *callback_args,
> **callback_kwargs)
>   File "/home/jason/canonical/code/django/tests/file_uploads/views.py",
> line 103, in file_upload_echo_content
> r = dict((k, f.read().decode('utf-8')) for k, f in
> request.FILES.items())
>   File "/home/jason/canonical/code/django/django/core/handlers/wsgi.py",
> line 152, in _get_files
> self._load_post_and_files()
>   File "/home/jason/canonical/code/django/django/http/request.py", line
> 249, in _load_post_and_files
> self._post, self._files = self.parse_file_upload(self.META, data)
>   File "/home/jason/canonical/code/django/django/http/request.py", line
> 214, in parse_file_upload
> return parser.parse()
>   File
> "/home/jason/canonical/code/django/django/http/multipartparser.py", line
> 220, in parse
> six.reraise(MultiPartParserError, MultiPartParserError(msg),
> sys.exc_info()[2])
>   File
> "/home/jason/canonical/code/django/django/http/multipartparser.py", line
> 216, in parse
> chunk = base64.b64decode(chunk)
>   File "/usr/lib/python2.7/base64.py", line 76, in b64decode
> raise TypeError(msg)
> MultiPartParserError: Could not decode base64 data:
> TypeError(Error('Incorrect padding',),)
> }}}

New description:

 Large files are files larger than the chunk size in
 MultiPartParser.parse().

 parse() tries to process base64 encoded files in chunks with lengths a
 multiple of 4. The base64 encoded string can contain newline characters,
 which aren't significant in base64 and should be ignored, but are counted
 toward's a chunk's length in parse(). This means when whitespace is
 stripped from the string, the count of base64 encoded characters may not
 be a multiple of 4, leading to an "Incorrect padding" error.

 Here's a testcase for creating this failure:

 
https://github.com/jhobbs/django/commit/98347e396133990b82b596310e4490369ba676d5

 Stacktrace:
 {{{
 Traceback (most recent call last):
   File "/home/jason/canonical/code/django/tests/file_uploads/tests.py",
 line 109, in test_big_base64_newlines_upload
 "Big data" * 68000, encode=base64.encodestring)
   File "/home/jason/canonical/code/django/tests/file_uploads/tests.py",
 line 96, in _test_base64_upload
 response = self.client.request(**r)
   File "/home/jason/canonical/code/django/django/test/client.py", line
 443, in request
 six.reraise(*exc_info)
   File "/home/jason/canonical/code/django/django/core/handlers/base.py",
 line 121, in get_response
 response = wrapped_callback(request, *callback_args,
 **callback_kwargs)
   File "/home/jason/canonical/code/django/tests/file_uploads/views.py",
 line 103, in file_upload_echo_content
 r = dict((k, f.read().decode('utf-8')) for k, f in
 request.FILES.items())
   File "/home/jason/canonical/code/django/django/core/handlers/wsgi.py",
 line 152, in _get_files
 self._load_post_and_files()
   File "/home/jason/canonical/code/django/djan

Re: [Django] #23397: Multipart base64 file decoding of fails with large files when the encoded string contains newlines.

2014-09-02 Thread Django
#23397: Multipart base64 file decoding of fails with large files when the 
encoded
string contains newlines.
---+--
 Reporter:  jhobbs |Owner:  nobody
 Type:  Bug|   Status:  new
Component:  HTTP handling  |  Version:  1.6
 Severity:  Normal |   Resolution:
 Keywords: | Triage Stage:  Unreviewed
Has patch:  0  |  Needs documentation:  0
  Needs tests:  0  |  Patch needs improvement:  0
Easy pickings:  0  |UI/UX:  0
---+--
Changes (by jhobbs):

 * needs_better_patch:   => 0
 * needs_tests:   => 0
 * needs_docs:   => 0


Old description:

> Large files are files larger than the chunk size in
> MultiPartParser.parse().
>
> Parse tries to process base64 encoded files in chunks with lengths a
> multiple of 4. The base64 encoded string can contain newline characters,
> which aren't significant in base64 and should be ignored, but are counted
> toward's a chunk's length in parse(). This means when whitespace is
> stripped from the string, the count of base64 encoded characters may not
> be a multiple of 4, leading to an "Incorrect padding" error.
>
> Stacktrace:
> {{{
> Traceback (most recent call last):
>   File "/home/jason/canonical/code/django/tests/file_uploads/tests.py",
> line 109, in test_big_base64_newlines_upload
> "Big data" * 68000, encode=base64.encodestring)
>   File "/home/jason/canonical/code/django/tests/file_uploads/tests.py",
> line 96, in _test_base64_upload
> response = self.client.request(**r)
>   File "/home/jason/canonical/code/django/django/test/client.py", line
> 443, in request
> six.reraise(*exc_info)
>   File "/home/jason/canonical/code/django/django/core/handlers/base.py",
> line 121, in get_response
> response = wrapped_callback(request, *callback_args,
> **callback_kwargs)
>   File "/home/jason/canonical/code/django/tests/file_uploads/views.py",
> line 103, in file_upload_echo_content
> r = dict((k, f.read().decode('utf-8')) for k, f in
> request.FILES.items())
>   File "/home/jason/canonical/code/django/django/core/handlers/wsgi.py",
> line 152, in _get_files
> self._load_post_and_files()
>   File "/home/jason/canonical/code/django/django/http/request.py", line
> 249, in _load_post_and_files
> self._post, self._files = self.parse_file_upload(self.META, data)
>   File "/home/jason/canonical/code/django/django/http/request.py", line
> 214, in parse_file_upload
> return parser.parse()
>   File
> "/home/jason/canonical/code/django/django/http/multipartparser.py", line
> 220, in parse
> six.reraise(MultiPartParserError, MultiPartParserError(msg),
> sys.exc_info()[2])
>   File
> "/home/jason/canonical/code/django/django/http/multipartparser.py", line
> 216, in parse
> chunk = base64.b64decode(chunk)
>   File "/usr/lib/python2.7/base64.py", line 76, in b64decode
> raise TypeError(msg)
> MultiPartParserError: Could not decode base64 data:
> TypeError(Error('Incorrect padding',),)
> }}}

New description:

 Large files are files larger than the chunk size in
 MultiPartParser.parse().

 Parse tries to process base64 encoded files in chunks with lengths a
 multiple of 4. The base64 encoded string can contain newline characters,
 which aren't significant in base64 and should be ignored, but are counted
 toward's a chunk's length in parse(). This means when whitespace is
 stripped from the string, the count of base64 encoded characters may not
 be a multiple of 4, leading to an "Incorrect padding" error.

 Here's a testcase for creating this failure:

 
https://github.com/jhobbs/django/commit/98347e396133990b82b596310e4490369ba676d5

 Stacktrace:
 {{{
 Traceback (most recent call last):
   File "/home/jason/canonical/code/django/tests/file_uploads/tests.py",
 line 109, in test_big_base64_newlines_upload
 "Big data" * 68000, encode=base64.encodestring)
   File "/home/jason/canonical/code/django/tests/file_uploads/tests.py",
 line 96, in _test_base64_upload
 response = self.client.request(**r)
   File "/home/jason/canonical/code/django/django/test/client.py", line
 443, in request
 six.reraise(*exc_info)
   File "/home/jason/canonical/code/django/django/core/handlers/base.py",
 line 121, in get_response
 response = wrapped_callback(request, *callback_args,
 **callback_kwargs)
   File "/home/jason/canonical/code/django/tests/file_uploads/views.py",
 line 103, in file_upload_echo_content
 r = dict((k, f.read().decode('utf-8')) for k, f in
 request.FILES.items())
   File "/home/jason/canonical/code/django/django/core/handlers/wsgi.py",
 line 152, in _get_files
 self._load_post_and_files()
   File "/home/jason/canonical/code/django/django/http/request.py", line
 249, in _load_post_and_files
 self._po

[Django] #23397: Multipart base64 file decoding of fails with large files when the encoded string contains newlines.

2014-09-02 Thread Django
#23397: Multipart base64 file decoding of fails with large files when the 
encoded
string contains newlines.
---+
 Reporter:  jhobbs |  Owner:  nobody
 Type:  Bug| Status:  new
Component:  HTTP handling  |Version:  1.6
 Severity:  Normal |   Keywords:
 Triage Stage:  Unreviewed |  Has patch:  0
Easy pickings:  0  |  UI/UX:  0
---+
 Large files are files larger than the chunk size in
 MultiPartParser.parse().

 Parse tries to process base64 encoded files in chunks with lengths a
 multiple of 4. The base64 encoded string can contain newline characters,
 which aren't significant in base64 and should be ignored, but are counted
 toward's a chunk's length in parse(). This means when whitespace is
 stripped from the string, the count of base64 encoded characters may not
 be a multiple of 4, leading to an "Incorrect padding" error.

 Stacktrace:
 {{{
 Traceback (most recent call last):
   File "/home/jason/canonical/code/django/tests/file_uploads/tests.py",
 line 109, in test_big_base64_newlines_upload
 "Big data" * 68000, encode=base64.encodestring)
   File "/home/jason/canonical/code/django/tests/file_uploads/tests.py",
 line 96, in _test_base64_upload
 response = self.client.request(**r)
   File "/home/jason/canonical/code/django/django/test/client.py", line
 443, in request
 six.reraise(*exc_info)
   File "/home/jason/canonical/code/django/django/core/handlers/base.py",
 line 121, in get_response
 response = wrapped_callback(request, *callback_args,
 **callback_kwargs)
   File "/home/jason/canonical/code/django/tests/file_uploads/views.py",
 line 103, in file_upload_echo_content
 r = dict((k, f.read().decode('utf-8')) for k, f in
 request.FILES.items())
   File "/home/jason/canonical/code/django/django/core/handlers/wsgi.py",
 line 152, in _get_files
 self._load_post_and_files()
   File "/home/jason/canonical/code/django/django/http/request.py", line
 249, in _load_post_and_files
 self._post, self._files = self.parse_file_upload(self.META, data)
   File "/home/jason/canonical/code/django/django/http/request.py", line
 214, in parse_file_upload
 return parser.parse()
   File "/home/jason/canonical/code/django/django/http/multipartparser.py",
 line 220, in parse
 six.reraise(MultiPartParserError, MultiPartParserError(msg),
 sys.exc_info()[2])
   File "/home/jason/canonical/code/django/django/http/multipartparser.py",
 line 216, in parse
 chunk = base64.b64decode(chunk)
   File "/usr/lib/python2.7/base64.py", line 76, in b64decode
 raise TypeError(msg)
 MultiPartParserError: Could not decode base64 data:
 TypeError(Error('Incorrect padding',),)
 }}}

--
Ticket URL: 
Django 
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/049.71093baad18e937317a91207a23dcf7f%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.