Bug #74675 'NoneType' object has no attribute 'strip'
Submitted: 4 Nov 2014 2:17 Modified: 19 Jun 2015 17:08
Reporter: Leandro Zanuz Email Updates:
Status: Closed Impact on me:
None 
Category:Connector / Python Severity:S3 (Non-critical)
Version:2.0.2 OS:Linux
Assigned to: CPU Architecture:Any
Tags: NoneType object attribute

[4 Nov 2014 2:17] Leandro Zanuz
Description:

'NoneType' object has no attribute 'strip'

FILE: mysql/connector/cursor.py

      try:
          return self._executed.strip().decode('utf8')
      except AttributeError:
          return self._executed.strip()  <== HERE IS THE BUG (line 858)

How to repeat:

 ▼ Local vars
Variable 	Value
cursor 	

<django.db.backends.util.CursorDebugWrapper object at 0x7fbcd017be10>

self 	

<mysql.connector.django.base.DatabaseOperations object at 0x7fbccd699250>

params 	

[u"'imovel'", u"'imoveis'"]

sql 	

u'SELECT `django_content_type`.`id`, `django_content_type`.`name`, `django_content_type`.`app_label`, `django_content_type`.`model` FROM `django_content_type` WHERE (`django_content_type`.`model` = %s  AND `django_content_type`.`app_label` = %s )'

Suggested fix:

If I execute this query on database it returns a row with this values:

'27', 'Imóvel', 'imoveis', 'imovel'
[5 Nov 2014 7:49] Peeyush Gupta
Can you paste the stack trace, I am not able to figure out, how to reproduce this bug.

Thanks :)
[6 Dec 2014 1:00] Bugs System
No feedback was provided for this bug for over a month, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
[18 Dec 2014 21:14] Radek Juppa
It its happened when I changed db driver from sqlite to mysql
Connector 1.2.2

Request Method: POST
Request URL: http://127.0.0.1:8000/en/admin/cms/page/add/?language=en

Django Version: 1.6.2
Python Version: 3.3.2
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.sites',
 'djangocms_file',
 'djangocms_flash',
 'djangocms_googlemap',
 'djangocms_inherit',
 'djangocms_picture',
 'djangocms_teaser',
 'djangocms_video',
 'djangocms_link',
 'djangocms_snippet',
 'djangocms_text_ckeditor',
 'cms',
 'mptt',
 'menus',
 'south',
 'sekizai',
 'djangocms_admin_style',
 'django.contrib.messages')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.middleware.doc.XViewMiddleware',
 'django.middleware.common.CommonMiddleware',
 'cms.middleware.user.CurrentUserMiddleware',
 'cms.middleware.page.CurrentPageMiddleware',
 'cms.middleware.toolbar.ToolbarMiddleware',
 'cms.middleware.language.LanguageCookieMiddleware')

Traceback:
File "/home/radek/py33/lib/python3.3/site-packages/django/core/handlers/base.py" in get_response
  114.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/radek/py33/lib/python3.3/site-packages/django/contrib/admin/options.py" in wrapper
  432.                 return self.admin_site.admin_view(view)(*args, **kwargs)
File "/home/radek/py33/lib/python3.3/site-packages/django/utils/decorators.py" in _wrapped_view
  99.                     response = view_func(request, *args, **kwargs)
File "/home/radek/py33/lib/python3.3/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
  52.         response = view_func(request, *args, **kwargs)
File "/home/radek/py33/lib/python3.3/site-packages/django/contrib/admin/sites.py" in inner
  198.             return view(request, *args, **kwargs)
File "/home/radek/py33/lib/python3.3/site-packages/cms/admin/pageadmin.py" in add_view
  406.         return super(PageAdmin, self).add_view(request, form_url, extra_context=extra_context)
File "/home/radek/py33/lib/python3.3/site-packages/django/utils/decorators.py" in _wrapper
  29.             return bound_func(*args, **kwargs)
File "/home/radek/py33/lib/python3.3/site-packages/django/utils/decorators.py" in _wrapped_view
  99.                     response = view_func(request, *args, **kwargs)
File "/home/radek/py33/lib/python3.3/site-packages/django/utils/decorators.py" in bound_func
  25.                 return func(self, *args2, **kwargs2)
File "/home/radek/py33/lib/python3.3/site-packages/django/db/transaction.py" in inner
  339.                 return func(*args, **kwargs)
File "/home/radek/py33/lib/python3.3/site-packages/django/contrib/admin/options.py" in add_view
  1113.             if form.is_valid():
File "/home/radek/py33/lib/python3.3/site-packages/django/forms/forms.py" in is_valid
  129.         return self.is_bound and not bool(self.errors)
File "/home/radek/py33/lib/python3.3/site-packages/django/forms/forms.py" in errors
  121.             self.full_clean()
File "/home/radek/py33/lib/python3.3/site-packages/django/forms/forms.py" in full_clean
  274.         self._clean_form()
File "/home/radek/py33/lib/python3.3/site-packages/django/forms/forms.py" in _clean_form
  300.             self.cleaned_data = self.clean()
File "/home/radek/py33/lib/python3.3/site-packages/cms/admin/forms.py" in clean
  134.         if site and not is_valid_page_slug(page, parent, lang, slug, site):
File "/home/radek/py33/lib/python3.3/site-packages/cms/utils/page.py" in is_valid_page_slug
  39.     if qs.filter(slug=slug).count():
File "/home/radek/py33/lib/python3.3/site-packages/django/db/models/query.py" in count
  291.         return self.query.get_count(using=self.db)
File "/home/radek/py33/lib/python3.3/site-packages/django/db/models/sql/query.py" in get_count
  390.         number = obj.get_aggregation(using=using)[None]
File "/home/radek/py33/lib/python3.3/site-packages/django/db/models/sql/query.py" in get_aggregation
  356.         result = query.get_compiler(using).execute_sql(SINGLE)
File "/home/radek/py33/lib/python3.3/site-packages/django/db/models/sql/compiler.py" in execute_sql
  782.         cursor.execute(sql, params)
File "/home/radek/py33/lib/python3.3/site-packages/django/db/backends/util.py" in execute
  73.             sql = self.db.ops.last_executed_query(self.cursor, sql, params)
File "/home/radek/py33/lib/python3.3/site-packages/mysql/connector/django/base.py" in last_executed_query
  330.         return cursor.statement
File "/home/radek/py33/lib/python3.3/site-packages/mysql/connector/django/base.py" in __getattr__
  129.         return getattr(self.cursor, attr)
File "/home/radek/py33/lib/python3.3/site-packages/mysql/connector/cursor.py" in statement
  868.             return self._executed.strip()

Exception Type: AttributeError at /en/admin/cms/page/add/
Exception Value: 'NoneType' object has no attribute 'strip'
[19 Dec 2014 5:41] Felip Serrano
Same problem using MacOS 10.7.5 DjangoCMS 3, Django 1.7, Python 3.4
[19 Jun 2015 17:08] Paul DuBois
Noted in 2.1.3 changelog.

Stripping NoneType objects from Django resulted in an AttributeError
exception.