Posted by eXt |
|
The bug is reported because SCT is not compatibile with django.contrib.sitemaps.FlatPageSitemap.
Steps to reproduce: 1. configure SCT so that it uses: 'sphene.community.middleware.ThreadLocals', 'sphene.community.middleware.MultiHostMiddleware', 'sphene.community.middleware.GroupMiddleware', 2. add some flatpages to your project (see official Django docs) 3. make use of django.contrib.sitemaps.FlatPageSitemap (see official Django docs) 4. start you project and go to domain/sitemap.xml You should get: ValueError: 'Site' instance needs to have a primary key value before a many-to-many relationship can be used. The error is raised when Site.flatpages_set.all() is called. The reason is that this call is going to use m2m relation, which is not valid because Site object is not saved in db. Why? See what happends if group exists (from community.middleware.py): def my_get_current(self): group = get_current_group() if not group: from django.conf import settings return self.get(pk=settings.SITE_ID) else: return Site( domain = group.baseurl, name = group.name ) SiteManager.get_current = my_get_current In fact instance of Site is created and returned but it is not in db so it doesn't have a pk. Solution: replace return Site( domain = group.baseurl, name = group.name ) with return Site( pk=settings.SITE_ID, domain = group.baseurl, name = group.name ) (don't forget about from django.conf import settings). |
|
Posted by Herbert Poul |
|
hi, thanks i just committed your fix. Hey, we have Signatures !!! Great, isn't it ? ;) |
Please login to post a reply.