Prevent some pages from search indexing

This commit is contained in:
Raphael Michel
2017-09-25 10:04:37 +02:00
parent ef3eee7873
commit 43fc498297
6 changed files with 36 additions and 4 deletions

View File

@@ -40,7 +40,7 @@
{% if request.event.settings.locales|length > 1 %}
<div class="locales">
{% for l in languages %}
<a href="{% url "presale:locale.set" %}?locale={{ l.code }}&next={{ request.path }}%3F{{ request.META.QUERY_STRING|urlencode }}" class="{% if l.code == request.LANGUAGE_CODE %}active{% endif %}">
<a href="{% url "presale:locale.set" %}?locale={{ l.code }}&next={{ request.path }}%3F{{ request.META.QUERY_STRING|urlencode }}" class="{% if l.code == request.LANGUAGE_CODE %}active{% endif %}" rel="nofollow">
{{ l.name_local }}
</a>
{% endfor %}

View File

@@ -6,6 +6,7 @@ import pretix.presale.views.event
import pretix.presale.views.locale
import pretix.presale.views.order
import pretix.presale.views.organizer
import pretix.presale.views.robots
import pretix.presale.views.user
import pretix.presale.views.waiting
@@ -83,4 +84,5 @@ organizer_patterns = [
locale_patterns = [
url(r'^locale/set$', pretix.presale.views.locale.LocaleSet.as_view(), name='locale.set'),
url(r'^robots.txt$', pretix.presale.views.robots.robots_txt, name='robots.txt'),
]

View File

@@ -22,6 +22,7 @@ from pretix.multidomain.urlreverse import eventreverse
from pretix.presale.views import EventViewMixin
from pretix.presale.views.async import AsyncAction
from pretix.presale.views.event import item_group_by_category
from pretix.presale.views.robots import NoSearchIndexViewMixin
class CartActionMixin:
@@ -177,7 +178,7 @@ class CartAdd(EventViewMixin, CartActionMixin, AsyncAction, View):
return redirect(self.get_error_url())
class RedeemView(EventViewMixin, TemplateView):
class RedeemView(NoSearchIndexViewMixin, EventViewMixin, TemplateView):
template_name = "pretixpresale/event/voucher.html"
def get_context_data(self, **kwargs):

View File

@@ -5,8 +5,10 @@ from django.http import HttpResponseRedirect
from django.utils.http import is_safe_url
from django.views.generic import View
from .robots import NoSearchIndexViewMixin
class LocaleSet(View):
class LocaleSet(NoSearchIndexViewMixin, View):
def get(self, request, *args, **kwargs):
url = request.GET.get('next', request.META.get('HTTP_REFERER', '/'))

View File

@@ -29,9 +29,10 @@ from pretix.presale.forms.checkout import InvoiceAddressForm
from pretix.presale.views import CartMixin, EventViewMixin
from pretix.presale.views.async import AsyncAction
from pretix.presale.views.questions import QuestionsViewMixin
from pretix.presale.views.robots import NoSearchIndexViewMixin
class OrderDetailMixin:
class OrderDetailMixin(NoSearchIndexViewMixin):
@cached_property
def order(self):
order = self.request.event.orders.filter(code=self.kwargs['order']).select_related('event').first()

View File

@@ -0,0 +1,26 @@
from django.http import HttpResponse
from django.views.decorators.cache import cache_page
class NoSearchIndexViewMixin:
def dispatch(self, request, *args, **kwargs):
resp = super().dispatch(request, *args, **kwargs)
resp['X-Robots-Tag'] = "noindex"
return resp
@cache_page(3600)
def robots_txt(request):
return HttpResponse(
"""User-agent: *
Disallow: */cart/*
Disallow: */checkout/*
Disallow: */order/*
Disallow: */locale/set*
Disallow: /control/
Disallow: /download/
Disallow: /redirect/
Disallow: /api/
Disallow: /download/
""", content_type='text/plain'
)