context_processors.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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_URL': None,
  9. 'PRIVACY_POLICY_URL': None,
  10. 'misago_agreement': None,
  11. }
  12. terms_of_service = agreements.get(Agreement.TYPE_TOS)
  13. if terms_of_service:
  14. if terms_of_service['link']:
  15. legal_context['TERMS_OF_SERVICE_URL'] = terms_of_service['link']
  16. elif terms_of_service['text']:
  17. legal_context['TERMS_OF_SERVICE_URL'] = reverse('misago:terms-of-service')
  18. privacy_policy = agreements.get(Agreement.TYPE_PRIVACY)
  19. if privacy_policy:
  20. if privacy_policy['link']:
  21. legal_context['PRIVACY_POLICY_URL'] = privacy_policy['link']
  22. elif privacy_policy['text']:
  23. legal_context['PRIVACY_POLICY_URL'] = reverse('misago:privacy-policy')
  24. if legal_context:
  25. request.frontend_context.update(legal_context)
  26. required_agreement = get_required_user_agreement(request.user, agreements)
  27. if required_agreement:
  28. request.frontend_context['REQUIRED_AGREEMENT_API'] = reverse(
  29. 'misago:api:submit-agreement', kwargs={'pk': required_agreement.pk})
  30. legal_context['misago_agreement'] = {
  31. 'type': required_agreement.get_type_display(),
  32. 'title': required_agreement.get_final_title(),
  33. 'link': required_agreement.link,
  34. 'text': get_parsed_agreement_text(request, required_agreement)
  35. }
  36. return legal_context