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
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
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()