918: Error editing file diff in admin UI

eric****@gmai***** (Google Code) (Is this you? Claim this profile.)
chipx86
chipx86
Feb. 26, 2009
What's the URL of the page containing the problem?
http://example.com/admin/db/diffviewer/filediff/15905/

What steps will reproduce the problem?
1. Select any file diff in the admin ui.
2. Click "save" with or without changing anything.

What is the expected output? What do you see instead?
It fails with an "Incorrect padding" error.  Here is the traceback:

Traceback:
File "/usr/local/lib/python2.5/site-packages/django/core/handlers/base.py"
in get_response
  86.                 response = callback(request, *callback_args,
**callback_kwargs)
File "/usr/local/lib/python2.5/site-packages/django/contrib/admin/sites.py"
in root
  157.                 return self.model_page(request, *url.split('/', 2))
File
"/usr/local/lib/python2.5/site-packages/django/views/decorators/cache.py"
in _wrapped_view_func
  44.         response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.5/site-packages/django/contrib/admin/sites.py"
in model_page
  176.         return admin_obj(request, rest_of_url)
File
"/usr/local/lib/python2.5/site-packages/django/contrib/admin/options.py" in
__call__
  197.             return self.change_view(request, unquote(url))
File "/usr/local/lib/python2.5/site-packages/django/db/transaction.py" in
_commit_on_success
  238.                 res = func(*args, **kw)
File
"/usr/local/lib/python2.5/site-packages/django/contrib/admin/options.py" in
change_view
  580.                 self.save_model(request, new_object, form, change=True)
File
"/usr/local/lib/python2.5/site-packages/django/contrib/admin/options.py" in
save_model
  376.         obj.save()
File "/usr/local/lib/python2.5/site-packages/django/db/models/base.py" in save
  311.         self.save_base(force_insert=force_insert,
force_update=force_update)
File "/usr/local/lib/python2.5/site-packages/django/db/models/base.py" in
save_base
  361.                     values = [(f, None, f.get_db_prep_save(raw and
getattr(self, f.attname) or f.pre_save(self, False))) for f in non_pks]
File
"/usr/local/lib/python2.5/site-packages/django/db/models/fields/__init__.py" in
pre_save
  179.         return getattr(model_instance, self.attname)
File
"/data/home/ehuss/download/reviewboard/svn/reviewboard/reviewboard/djblets/util/fields.py"
in __get__
  69.             return Base64DecodedValue(base64.decodestring(value))
File "/usr/local/lib/python2.5/base64.py" in decodestring
  321.     return binascii.a2b_base64(s)

Exception Type: Error at /admin/db/diffviewer/filediff/15905/
Exception Value: Incorrect padding


Please provide any additional information below.
This is with djblets r11997 and rb1798 with django 1.0.2.

I suspect this is some weird interaction with the custom Base64Field in
djblets and the admin tool.  Not sure if this is any different in django 1.1.
chipx86
#1 chipx86
Should be fixed in Djblets r11999.
  • +Fixed
  • +Milestone-Release1.0
    +Djblets
    +Component-Admin
  • +chipx86