emencia / emencia-django-newsletter

An app for sending newsletter by email to a contact list.
189 stars 72 forks source link

Admin unicode' object has no attribute 'day' error/bug #41

Closed danielsokolowski closed 12 years ago

danielsokolowski commented 12 years ago

I am using the latest version of emencia-django-newsletter with all the dependencies satisfied. It appears everything is working - i can create a newsletter but than when I attempt to visit the admin: /admin/newsletter/newsletter/ -- I get the below error -- do you have any suggestions?

Environment:

Request Method: GET Request URL: http://dev.klinsight.com:1000/admin/newsletter/newsletter/

Django Version: 1.3 Python Version: 2.6.6 Installed Applications: ['django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.flatpages', 'django.contrib.admin', 'django.contrib.gis', 'taggit', 'tagging', 'ckeditor', 'simplemenu', 'emencia.django.newsletter', 'contact_form', 'registration', 'floppyforms', 'guardian', 'htmlpages', 'flatpages_ext', 'miscellaneous', 'filelibrary', 'showcase', 'accounts', 'golf_shafts', 'golf_tours', 'fitters', 'django.contrib.admindocs', 'django.contrib.webdesign', 'django_extensions'] Installed Middleware: ('django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware')

Traceback: File "/usr/lib/pymodules/python2.6/django/core/handlers/base.py" in get_response

  1. response = callback(request, _callback_args, *_callback_kwargs) File "/usr/lib/pymodules/python2.6/django/contrib/admin/options.py" in wrapper
  2. return self.admin_site.admin_view(view)(_args, *_kwargs) File "/usr/lib/pymodules/python2.6/django/utils/decorators.py" in _wrapped_view
  3. response = view_func(request, _args, *_kwargs) File "/usr/lib/pymodules/python2.6/django/views/decorators/cache.py" in _wrapped_view_func
  4. response = view_func(request, _args, *_kwargs) File "/usr/lib/pymodules/python2.6/django/contrib/admin/sites.py" in inner
  5. return view(request, _args, *_kwargs) File "/usr/lib/pymodules/python2.6/django/utils/decorators.py" in _wrapper
  6. return bound_func(_args, *_kwargs) File "/usr/lib/pymodules/python2.6/django/utils/decorators.py" in _wrapped_view
  7. response = view_func(request, _args, *_kwargs) File "/usr/lib/pymodules/python2.6/django/utils/decorators.py" in bound_func
  8. return func(self, _args2, *_kwargs2) File "/usr/lib/pymodules/python2.6/django/contrib/admin/options.py" in changelist_view
  9. ], context, context_instance=context_instance) File "/usr/lib/pymodules/python2.6/django/shortcuts/init.py" in render_to_response
  10. return HttpResponse(loader.render_to_string(_args, *_kwargs), **httpresponse_kwargs) File "/usr/lib/pymodules/python2.6/django/template/loader.py" in render_to_string
  11. return t.render(context_instance) File "/usr/lib/pymodules/python2.6/django/template/base.py" in render
  12. return self._render(context) File "/usr/lib/pymodules/python2.6/django/template/base.py" in _render
  13. return self.nodelist.render(context) File "/usr/lib/pymodules/python2.6/django/template/base.py" in render
  14. bits.append(self.render_node(node, context)) File "/usr/lib/pymodules/python2.6/django/template/base.py" in render_node
  15. return node.render(context) File "/usr/lib/pymodules/python2.6/django/template/loader_tags.py" in render
  16. return compiled_parent._render(context) File "/usr/lib/pymodules/python2.6/django/template/base.py" in _render
  17. return self.nodelist.render(context) File "/usr/lib/pymodules/python2.6/django/template/base.py" in render
  18. bits.append(self.render_node(node, context)) File "/usr/lib/pymodules/python2.6/django/template/base.py" in render_node
  19. return node.render(context) File "/usr/lib/pymodules/python2.6/django/template/loader_tags.py" in render
  20. return compiled_parent._render(context) File "/usr/lib/pymodules/python2.6/django/template/base.py" in _render
  21. return self.nodelist.render(context) File "/usr/lib/pymodules/python2.6/django/template/base.py" in render
  22. bits.append(self.render_node(node, context)) File "/usr/lib/pymodules/python2.6/django/template/base.py" in render_node
  23. return node.render(context) File "/usr/lib/pymodules/python2.6/django/template/loader_tags.py" in render
  24. result = block.nodelist.render(context) File "/usr/lib/pymodules/python2.6/django/template/base.py" in render
  25. bits.append(self.render_node(node, context)) File "/usr/lib/pymodules/python2.6/django/template/base.py" in render_node
  26. return node.render(context) File "/usr/lib/pymodules/python2.6/django/template/loader_tags.py" in render
  27. result = block.nodelist.render(context) File "/usr/lib/pymodules/python2.6/django/template/base.py" in render
  28. bits.append(self.render_node(node, context)) File "/usr/lib/pymodules/python2.6/django/template/base.py" in render_node
  29. return node.render(context) File "/usr/lib/pymodules/python2.6/django/template/base.py" in render
  30. dict = func(*args) File "/usr/lib/pymodules/python2.6/django/contrib/admin/templatetags/admin_list.py" in date_hierarchy
  31. } for day in days]

Exception Type: AttributeError at /admin/newsletter/newsletter/ Exception Value: 'unicode' object has no attribute 'day'

danielsokolowski commented 12 years ago

I have narrowed down this bug and it is not caused by this app:

date_hierarchy in the admin model options depends on .dates(...) query which returns different types of objects between a sqlite db vs spatialite db.

sqlite shell query returns:

>>> d = User.objects.all().dates('date_joined', 'day')
>>> d
[datetime.datetime(2010, 5, 21, 0, 0), datetime.datetime(2010, 6, 14, 0, 0)]

spatialite query returns:

d = User.objects.all().dates('date_joined', 'day')
>>> d
[u'2011-05-06 00:00:00', u'2011-06-30 00:00:00']