-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
255 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
This directory contains eggs that were downloaded by setuptools to build, test, and run plug-ins. | ||
|
||
This directory caches those eggs to prevent repeated downloads. | ||
|
||
However, it is safe to delete this directory. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
30 changes: 30 additions & 0 deletions
30
djangocms_page_sitemap/migrations/0004_auto_20190504_1423.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
# -*- coding: utf-8 -*- | ||
# Generated by Django 1.10.8 on 2018-02-02 09:44 | ||
from __future__ import unicode_literals | ||
|
||
from django.db import migrations, models | ||
|
||
|
||
class Migration(migrations.Migration): | ||
|
||
dependencies = [ | ||
('djangocms_page_sitemap', '0003_auto_20151018_1612'), | ||
] | ||
|
||
operations = [ | ||
migrations.AddField( | ||
model_name='pagesitemapproperties', | ||
name='noarchive', | ||
field=models.BooleanField(default=False, help_text='Add meta tag robots with value noarchive', verbose_name='Mark as no archive'), | ||
), | ||
migrations.AddField( | ||
model_name='pagesitemapproperties', | ||
name='noindex', | ||
field=models.BooleanField(default=False, help_text='Add meta tag robots with value noindex', verbose_name='Mark as no index'), | ||
), | ||
migrations.AddField( | ||
model_name='pagesitemapproperties', | ||
name='robots_extra', | ||
field=models.CharField(default='', help_text='Extra values for robots meta tag', max_length=200, verbose_name='Extra robots value'), | ||
), | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# -*- coding: utf-8 -*- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
# -*- coding: utf-8 -*- | ||
from __future__ import absolute_import, print_function, unicode_literals | ||
|
||
from classytags.arguments import Argument | ||
from classytags.core import Options, Tag | ||
from cms.templatetags.cms_tags import _get_page_by_untyped_arg | ||
from django import template | ||
from django.contrib.sites.shortcuts import get_current_site | ||
from django.core.exceptions import ObjectDoesNotExist | ||
|
||
register = template.Library() | ||
|
||
|
||
@register.tag(name='page_robots') | ||
class PageRobots(Tag): | ||
""" | ||
Generates the robots meta tag according to the extension attributes | ||
""" | ||
name = 'page_robots' | ||
options = Options( | ||
Argument('page', required=False), | ||
Argument('site_id', required=False), | ||
) | ||
|
||
def render_tag(self, context, page, site_id): | ||
request = context.get('request') | ||
if not site_id: | ||
site_id = get_current_site(request).pk | ||
if not page: | ||
page = request.current_page | ||
else: | ||
page = _get_page_by_untyped_arg(page, request, site_id) | ||
content = [] | ||
if not page: | ||
return '' | ||
try: | ||
if page.pagesitemapproperties.noindex: | ||
content.append('noindex') | ||
if page.pagesitemapproperties.noarchive: | ||
content.append('noarchive') | ||
if page.pagesitemapproperties.robots_extra: | ||
content.append(page.pagesitemapproperties.robots_extra) | ||
return '<meta name="robots" content="%s">' % ','.join(content) | ||
except ObjectDoesNotExist: | ||
return '' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
# -*- coding: utf-8 -*- | ||
from __future__ import absolute_import, print_function, unicode_literals | ||
|
||
from django import template | ||
from django.contrib.auth.models import AnonymousUser | ||
from django.contrib.sites.models import Site | ||
|
||
from djangocms_page_sitemap.models import PageSitemapProperties | ||
|
||
from .base import BaseTest | ||
|
||
|
||
class RobotsTest(BaseTest): | ||
|
||
def _test_robots_tag(self, template_string, context, expected): | ||
|
||
tpl_obj = template.Template(template_string) | ||
ctx_obj = template.Context(context) | ||
rendered = tpl_obj.render(ctx_obj) | ||
self.assertEqual(rendered, expected) | ||
for key, value in context.items(): | ||
self.assertEqual(ctx_obj.get(key), value) | ||
|
||
def test_robots_options(self): | ||
page1, page2, page3 = self.get_pages() | ||
extension = PageSitemapProperties.objects.create( | ||
extended_object=page1, priority='0.2', changefreq='never' | ||
) | ||
|
||
template = '{% load robots_index %}{% page_robots %}' | ||
expected = '<meta name="robots" content="">' | ||
context = {'request': self.get_page_request(page1, AnonymousUser())} | ||
self._test_robots_tag(template, context, expected) | ||
|
||
extension.noindex = True | ||
extension.save() | ||
expected = '<meta name="robots" content="noindex">' | ||
self._test_robots_tag(template, context, expected) | ||
|
||
extension.noarchive = True | ||
extension.save() | ||
expected = '<meta name="robots" content="noindex,noarchive">' | ||
self._test_robots_tag(template, context, expected) | ||
|
||
extension.robots_extra = 'nodmoz' | ||
extension.save() | ||
expected = '<meta name="robots" content="noindex,noarchive,nodmoz">' | ||
self._test_robots_tag(template, context, expected) | ||
|
||
def test_robots_page_parameter(self): | ||
page1, page2, page3 = self.get_pages() | ||
extension = PageSitemapProperties.objects.create( | ||
extended_object=page1, priority='0.2', changefreq='never' | ||
) | ||
page1.publish('en') | ||
extension.refresh_from_db() | ||
|
||
template = '{% load robots_index %}{% page_robots %}' | ||
expected = '' | ||
context = {'request': self.get_page_request(page2.get_public_object(), AnonymousUser())} | ||
self._test_robots_tag(template, context, expected) | ||
|
||
extension.noindex = True | ||
extension.save() | ||
page1.publish('en') | ||
expected = '' | ||
self._test_robots_tag(template, context, expected) | ||
|
||
template = '{%% load robots_index %%}{%% page_robots %s %%}' % page1.pk | ||
expected = '<meta name="robots" content="noindex">' | ||
self._test_robots_tag(template, context, expected) | ||
|
||
extension.noarchive = True | ||
extension.save() | ||
page1.publish('en') | ||
expected = '<meta name="robots" content="noindex,noarchive">' | ||
self._test_robots_tag(template, context, expected) | ||
|
||
extension.robots_extra = 'nodmoz' | ||
extension.save() | ||
page1.publish('en') | ||
expected = '<meta name="robots" content="noindex,noarchive,nodmoz">' | ||
self._test_robots_tag(template, context, expected) | ||
|
||
def test_robots_page_no_site(self): | ||
page1, page2, page3 = self.get_pages() | ||
extension = PageSitemapProperties.objects.create( | ||
extended_object=page1, priority='0.2', changefreq='never' | ||
) | ||
page1.publish('en') | ||
extension.refresh_from_db() | ||
|
||
template = '{% load robots_index %}{% page_robots None "abc" %}' | ||
expected = '' | ||
context = {'request': self.get_page_request(page2.get_public_object(), AnonymousUser())} | ||
self._test_robots_tag(template, context, expected) | ||
|
||
def test_robots_page_no_page(self): | ||
page1, page2, page3 = self.get_pages() | ||
extension = PageSitemapProperties.objects.create( | ||
extended_object=page1, priority='0.2', changefreq='never' | ||
) | ||
page1.publish('en') | ||
extension.refresh_from_db() | ||
|
||
template = '{% load robots_index %}{% page_robots "abc" %}' | ||
expected = '' | ||
context = {'request': self.get_page_request(page2.get_public_object(), AnonymousUser())} | ||
self._test_robots_tag(template, context, expected) | ||
|
||
def test_robots_page_other_site(self): | ||
site_2 = Site.objects.create(domain='http://othersite.com') | ||
page1, page2, page3 = self.get_pages() | ||
extension = PageSitemapProperties.objects.create( | ||
extended_object=page1, priority='0.2', changefreq='never' | ||
) | ||
page1.publish('en') | ||
extension.refresh_from_db() | ||
|
||
template = '{%% load robots_index %%}{%% page_robots None %s %%}' % site_2.pk | ||
expected = '' | ||
context = {'request': self.get_page_request(page2.get_public_object(), AnonymousUser())} | ||
self._test_robots_tag(template, context, expected) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters