Add all languages to sitemap. Use configurable options
This commit is contained in:
parent
4ad7197980
commit
c23d86208d
4 changed files with 62 additions and 4 deletions
|
@ -14,6 +14,7 @@ HELPER_SETTINGS = dict(
|
||||||
'meta',
|
'meta',
|
||||||
'meta_mixin',
|
'meta_mixin',
|
||||||
'easy_thumbnails',
|
'easy_thumbnails',
|
||||||
|
'django.contrib.sitemaps',
|
||||||
'djangocms_text_ckeditor',
|
'djangocms_text_ckeditor',
|
||||||
'cmsplugin_filer_image',
|
'cmsplugin_filer_image',
|
||||||
'taggit',
|
'taggit',
|
||||||
|
|
|
@ -1,17 +1,35 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import absolute_import, print_function, unicode_literals
|
from __future__ import absolute_import, print_function, unicode_literals
|
||||||
|
|
||||||
|
from cms.utils import get_language_list
|
||||||
from django.contrib.sitemaps import Sitemap
|
from django.contrib.sitemaps import Sitemap
|
||||||
|
from parler.utils.context import smart_override
|
||||||
|
|
||||||
from ..models import Post
|
from ..models import Post
|
||||||
|
from ..settings import get_setting
|
||||||
|
|
||||||
|
|
||||||
class BlogSitemap(Sitemap):
|
class BlogSitemap(Sitemap):
|
||||||
changefreq = 'never'
|
|
||||||
priority = 0.5
|
def priority(self, obj):
|
||||||
|
if obj and obj.app_config:
|
||||||
|
return obj.app_config.sitemap_priority
|
||||||
|
return get_setting('SITEMAP_PRIORITY_DEFAULT')
|
||||||
|
|
||||||
|
def changefreq(self, obj):
|
||||||
|
if obj and obj.app_config:
|
||||||
|
return obj.app_config.sitemap_changefreq
|
||||||
|
return get_setting('SITEMAP_CHANGEFREQ_DEFAULT')
|
||||||
|
|
||||||
|
def location(self, obj):
|
||||||
|
with smart_override(obj.get_current_language()):
|
||||||
|
return obj.get_absolute_url(obj.get_current_language())
|
||||||
|
|
||||||
def items(self):
|
def items(self):
|
||||||
return Post.objects.published()
|
items = []
|
||||||
|
for lang in get_language_list():
|
||||||
|
items.extend(Post.objects.translated(lang).language(lang).published())
|
||||||
|
return items
|
||||||
|
|
||||||
def lastmod(self, obj):
|
def lastmod(self, obj):
|
||||||
return obj.date_modified
|
return obj.date_modified
|
||||||
|
|
|
@ -3,6 +3,7 @@ from __future__ import absolute_import, print_function, unicode_literals
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
from cms.sitemaps import CMSSitemap
|
||||||
from cms.utils.conf import get_cms_setting
|
from cms.utils.conf import get_cms_setting
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.conf.urls import include, patterns, url
|
from django.conf.urls import include, patterns, url
|
||||||
|
@ -10,6 +11,8 @@ from django.conf.urls.i18n import i18n_patterns
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
|
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
|
||||||
|
|
||||||
|
from djangocms_blog.sitemaps import BlogSitemap
|
||||||
|
|
||||||
admin.autodiscover()
|
admin.autodiscover()
|
||||||
|
|
||||||
urlpatterns = patterns(
|
urlpatterns = patterns(
|
||||||
|
@ -20,6 +23,11 @@ urlpatterns = patterns(
|
||||||
{'document_root': get_cms_setting('MEDIA_ROOT'), 'show_indexes': True}),
|
{'document_root': get_cms_setting('MEDIA_ROOT'), 'show_indexes': True}),
|
||||||
url(r'^jsi18n/(?P<packages>\S+?)/$', 'django.views.i18n.javascript_catalog'),
|
url(r'^jsi18n/(?P<packages>\S+?)/$', 'django.views.i18n.javascript_catalog'),
|
||||||
url(r'^taggit_autosuggest/', include('taggit_autosuggest.urls')),
|
url(r'^taggit_autosuggest/', include('taggit_autosuggest.urls')),
|
||||||
|
url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap',
|
||||||
|
{'sitemaps': {
|
||||||
|
'cmspages': CMSSitemap, 'blog': BlogSitemap,
|
||||||
|
}
|
||||||
|
}),
|
||||||
)
|
)
|
||||||
|
|
||||||
urlpatterns += staticfiles_urlpatterns()
|
urlpatterns += staticfiles_urlpatterns()
|
||||||
|
|
|
@ -17,6 +17,7 @@ from parler.utils.context import smart_override, switch_language
|
||||||
|
|
||||||
from djangocms_blog.feeds import LatestEntriesFeed, TagFeed
|
from djangocms_blog.feeds import LatestEntriesFeed, TagFeed
|
||||||
from djangocms_blog.models import BLOG_CURRENT_NAMESPACE
|
from djangocms_blog.models import BLOG_CURRENT_NAMESPACE
|
||||||
|
from djangocms_blog.settings import get_setting
|
||||||
from djangocms_blog.sitemaps import BlogSitemap
|
from djangocms_blog.sitemaps import BlogSitemap
|
||||||
from djangocms_blog.views import (
|
from djangocms_blog.views import (
|
||||||
AuthorEntriesView, CategoryEntriesView, PostArchiveView, PostDetailView, PostListView,
|
AuthorEntriesView, CategoryEntriesView, PostArchiveView, PostDetailView, PostListView,
|
||||||
|
@ -347,9 +348,39 @@ class ViewTest(BaseTest):
|
||||||
posts[0].set_current_language('en')
|
posts[0].set_current_language('en')
|
||||||
|
|
||||||
sitemap = BlogSitemap()
|
sitemap = BlogSitemap()
|
||||||
self.assertEqual(sitemap.items().count(), 3)
|
self.assertEqual(len(sitemap.items()), 6)
|
||||||
for item in sitemap.items():
|
for item in sitemap.items():
|
||||||
self.assertTrue(sitemap.lastmod(item).date(), now().today())
|
self.assertTrue(sitemap.lastmod(item).date(), now().today())
|
||||||
|
self.assertTrue(
|
||||||
|
sitemap.priority(item), get_setting('SITEMAP_PRIORITY_DEFAULT')
|
||||||
|
)
|
||||||
|
self.assertTrue(
|
||||||
|
sitemap.priority(item), get_setting('SITEMAP_CHANGEFREQ_DEFAULT')
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_sitemap_config(self):
|
||||||
|
posts = self.get_posts()
|
||||||
|
self.app_config_1.app_data.config.sitemap_changefreq = 'daily'
|
||||||
|
self.app_config_1.app_data.config.sitemap_priority = '0.2'
|
||||||
|
|
||||||
|
sitemap = BlogSitemap()
|
||||||
|
self.assertEqual(len(sitemap.items()), 4)
|
||||||
|
for item in sitemap.items():
|
||||||
|
self.assertTrue(sitemap.lastmod(item).date(), now().today())
|
||||||
|
if item.app_config == self.app_config_1:
|
||||||
|
self.assertTrue(
|
||||||
|
sitemap.priority(item), '0.2'
|
||||||
|
)
|
||||||
|
self.assertTrue(
|
||||||
|
sitemap.changefreq(item), 'daily'
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
self.assertTrue(
|
||||||
|
sitemap.priority(item), get_setting('SITEMAP_PRIORITY_DEFAULT')
|
||||||
|
)
|
||||||
|
self.assertTrue(
|
||||||
|
sitemap.changefreq(item), get_setting('SITEMAP_CHANGEFREQ_DEFAULT')
|
||||||
|
)
|
||||||
|
|
||||||
def test_templates(self):
|
def test_templates(self):
|
||||||
posts = self.get_posts()
|
posts = self.get_posts()
|
||||||
|
|
Loading…
Reference in a new issue