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 %} {% if request.event.settings.locales|length > 1 %}
<div class="locales"> <div class="locales">
{% for l in languages %} {% 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 }} {{ l.name_local }}
</a> </a>
{% endfor %} {% endfor %}

View File

@@ -6,6 +6,7 @@ import pretix.presale.views.event
import pretix.presale.views.locale import pretix.presale.views.locale
import pretix.presale.views.order import pretix.presale.views.order
import pretix.presale.views.organizer import pretix.presale.views.organizer
import pretix.presale.views.robots
import pretix.presale.views.user import pretix.presale.views.user
import pretix.presale.views.waiting import pretix.presale.views.waiting
@@ -83,4 +84,5 @@ organizer_patterns = [
locale_patterns = [ locale_patterns = [
url(r'^locale/set$', pretix.presale.views.locale.LocaleSet.as_view(), name='locale.set'), 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 import EventViewMixin
from pretix.presale.views.async import AsyncAction from pretix.presale.views.async import AsyncAction
from pretix.presale.views.event import item_group_by_category from pretix.presale.views.event import item_group_by_category
from pretix.presale.views.robots import NoSearchIndexViewMixin
class CartActionMixin: class CartActionMixin:
@@ -177,7 +178,7 @@ class CartAdd(EventViewMixin, CartActionMixin, AsyncAction, View):
return redirect(self.get_error_url()) return redirect(self.get_error_url())
class RedeemView(EventViewMixin, TemplateView): class RedeemView(NoSearchIndexViewMixin, EventViewMixin, TemplateView):
template_name = "pretixpresale/event/voucher.html" template_name = "pretixpresale/event/voucher.html"
def get_context_data(self, **kwargs): 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.utils.http import is_safe_url
from django.views.generic import View from django.views.generic import View
from .robots import NoSearchIndexViewMixin
class LocaleSet(View):
class LocaleSet(NoSearchIndexViewMixin, View):
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
url = request.GET.get('next', request.META.get('HTTP_REFERER', '/')) 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 import CartMixin, EventViewMixin
from pretix.presale.views.async import AsyncAction from pretix.presale.views.async import AsyncAction
from pretix.presale.views.questions import QuestionsViewMixin from pretix.presale.views.questions import QuestionsViewMixin
from pretix.presale.views.robots import NoSearchIndexViewMixin
class OrderDetailMixin: class OrderDetailMixin(NoSearchIndexViewMixin):
@cached_property @cached_property
def order(self): def order(self):
order = self.request.event.orders.filter(code=self.kwargs['order']).select_related('event').first() 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'
)