Opened 8 years ago

Last modified 8 years ago

#26939 closed Bug

sitemaps crashes with "isinstance() arg 2 must be a class, type, or tuple of classes and types" — at Version 2

Reported by: Chen Xu Owned by: nobody
Component: contrib.sitemaps Version: 1.9
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Tim Graham)

I am using Django version 1.9.8, and mezzanine version 4.1.0.
The following code failed:

from django.contrib.sitemaps.views import sitemap
from mezzanine.core.sitemaps import DisplayableSitemap
sitemaps = {"sitemaps": {"displayable": DisplayableSitemap}}
urlpatterns += [url("^sitemap\.xml$", sitemap, sitemaps)]

The trace back:

TypeError at /sitemap.xml
isinstance() arg 2 must be a class, type, or tuple of classes and types
Request Method:	GET
Request URL:	https://xxxxxxxxxx.com:8787/sitemap.xml
Django Version:	1.9.8
Exception Type:	TypeError
Exception Value:	
isinstance() arg 2 must be a class, type, or tuple of classes and types
Exception Location:	/srv/xxxxxxxxxx/virtualenvs/corpsite/local/lib/python2.7/site-packages/django/db/models/fields/related.py in get_default, line 908
Python Executable:	/srv/xxxxxxxxxx/virtualenvs/corpsite/bin/uwsgi
Python Version:	2.7.6
Python Path:	
['.',
 '',
 '/srv/xxxxxxxxxx/virtualenvs/corpsite/src/supervisor',
 '/srv/xxxxxxxxxx/virtualenvs/corpsite/lib/python2.7',
 '/srv/xxxxxxxxxx/virtualenvs/corpsite/lib/python2.7/plat-x86_64-linux-gnu',
 '/srv/xxxxxxxxxx/virtualenvs/corpsite/lib/python2.7/lib-tk',
 '/srv/xxxxxxxxxx/virtualenvs/corpsite/lib/python2.7/lib-old',
 '/srv/xxxxxxxxxx/virtualenvs/corpsite/lib/python2.7/lib-dynload',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/srv/xxxxxxxxxx/virtualenvs/corpsite/local/lib/python2.7/site-packages',
 '/srv/xxxxxxxxxx/www/private']
Server time:	Fri, 22 Jul 2016 17:48:22 -0700
...
...

/srv/xxxxxxxxxx/virtualenvs/corpsite/local/lib/python2.7/site-packages/django/db/models/fields/related.py in get_default
        if isinstance(field_default, self.remote_field.model): ...
▶ Local vars
Variable	Value
self: <django.db.models.fields.related.ForeignKey: site>
field_default: None

The problem is here: self.remote_field.model is not a type of class, but unicode.

Change History (2)

comment:1 by Chen Xu, 8 years ago

Description: modified (diff)

comment:2 by Tim Graham, 8 years ago

Component: Uncategorizedcontrib.sitemaps
Description: modified (diff)
Summary: Django 1.9.8 Sitemaps is broken due to "isinstance() arg 2 must be a class, type, or tuple of classes and types"sitemaps crashes with "isinstance() arg 2 must be a class, type, or tuple of classes and types"
Triage Stage: UnreviewedAccepted

Seems to be a regression in 1.9 (the sample code works in 1.8) although I've having trouble bisecting it due to other crashes in mezzanine at various points in Django's history. If you could create a minimal project that reproduces the problem without mezzazine, that would be ideal as we'll need a regression test anyway.

Note: See TracTickets for help on using tickets.
Back to Top