Exemple #1
0
    def post(self, request, *args, **kwargs):
        response = HttpResponseRedirect("/")

        redirect_url = request.META.get("HTTP_REFERER", request.build_absolute_uri())

        args = [redirect_url]
        kwargs = {"require_https": request.is_secure()}

        allowed_hosts = self.get_success_url_allowed_hosts()
        if __version__.startswith("2.0"):
            kwargs["allowed_hosts"] = allowed_hosts
        else:
            args.append(allowed_hosts)

        url_is_safe = is_safe_url(*args, **kwargs)
        if url_is_safe:
            response = HttpResponseRedirect(redirect_url)

        form = ConsentForm(request.POST)
        if form.is_valid():
            set_consent(
                request,
                response,
                {key: str(value).lower() for key, value in form.cleaned_data.items()},
                explicit=True,
            )

        return response
Exemple #2
0
    def process_template_response(self, request, response):
        if (getattr(request, "method", None) == "GET"
                and getattr(response, "status_code", None) == 200
                and not getattr(response, "streaming", False)):
            strategy = TagStrategy(request)
            set_consent(
                request,
                response,
                {key: value
                 for key, value in strategy.consent.items()},
            )

        return response
    def __call__(self, request):
        response = self.get_response(request)
        strategy = TagStrategy(request)

        if (getattr(request, "method", None) == "GET"
                and getattr(response, "status_code", None) == 200):
            set_consent(
                request,
                response,
                {key: value
                 for key, value in strategy.consent.items()},
            )

        return response
    def __call__(self, request):
        self.request = request
        self.response = self.get_response(request)
        self.strategy = TagStrategy(request)

        if (
            getattr(self.request, "method", None) == "GET"
            and getattr(self.response, "status_code", None) == 200
        ):
            set_consent(
                self.response,
                {key: value for key, value in self.strategy.consent.items()},
            )

            if isinstance(self.response, TemplateResponse):
                self._add_instant_tags()
                self._add_lazy_manager()

        return self.response
Exemple #5
0
def lazy_endpoint(request):
    data = {"tags": []}
    response = JsonResponse(data)

    if getattr(request, "method", None) == "POST" and hasattr(request, "body"):
        try:
            payload = json.loads(request.body)
        except json.JSONDecodeError:
            return HttpResponseBadRequest()

        request.path = payload.get("pathname", request.path)
        request.META["QUERY_STRING"] = payload.get("search", "")

        strategy = TagStrategy(request, payload)

        set_consent(response,
                    {key: value
                     for key, value in strategy.consent.items()})

        for tag in strategy.result:
            element = tag.get("element")

            for content in element.contents:
                if content.name:
                    data["tags"].append({
                        "name":
                        content.name,
                        "attributes":
                        getattr(content, "attrs", {}),
                        "string":
                        content.string,
                    })

        response.content = json.dumps(data)
        return response

    return HttpResponseBadRequest()