context_processors.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from django.urls import reverse
  2. from .models import Agreement
  3. from .utils import get_parsed_agreement_text, get_required_user_agreement
  4. # fixme: rename this context processor to more suitable name
  5. def legal_links(request):
  6. agreements = Agreement.objects.get_agreements()
  7. legal_context = {
  8. "TERMS_OF_SERVICE_ID": None,
  9. "TERMS_OF_SERVICE_URL": None,
  10. "PRIVACY_POLICY_ID": None,
  11. "PRIVACY_POLICY_URL": None,
  12. "misago_agreement": None,
  13. }
  14. terms_of_service = agreements.get(Agreement.TYPE_TOS)
  15. if terms_of_service:
  16. legal_context["TERMS_OF_SERVICE_ID"] = terms_of_service["id"]
  17. if terms_of_service["link"]:
  18. legal_context["TERMS_OF_SERVICE_URL"] = terms_of_service["link"]
  19. elif terms_of_service["text"]:
  20. legal_context["TERMS_OF_SERVICE_URL"] = reverse("misago:terms-of-service")
  21. privacy_policy = agreements.get(Agreement.TYPE_PRIVACY)
  22. if privacy_policy:
  23. legal_context["PRIVACY_POLICY_ID"] = privacy_policy["id"]
  24. if privacy_policy["link"]:
  25. legal_context["PRIVACY_POLICY_URL"] = privacy_policy["link"]
  26. elif privacy_policy["text"]:
  27. legal_context["PRIVACY_POLICY_URL"] = reverse("misago:privacy-policy")
  28. if legal_context:
  29. request.frontend_context.update(legal_context)
  30. required_agreement = get_required_user_agreement(request.user, agreements)
  31. if required_agreement:
  32. request.frontend_context["REQUIRED_AGREEMENT_API"] = reverse(
  33. "misago:api:submit-agreement", kwargs={"pk": required_agreement.pk}
  34. )
  35. legal_context["misago_agreement"] = {
  36. "type": required_agreement.get_type_display(),
  37. "title": required_agreement.get_final_title(),
  38. "link": required_agreement.link,
  39. "text": get_parsed_agreement_text(request, required_agreement),
  40. }
  41. return legal_context