context_processors.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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_ID'] = required_agreement.id
  29. legal_context['misago_agreement'] = {
  30. 'title': required_agreement.get_final_title(),
  31. 'link': required_agreement.link,
  32. 'text': get_parsed_agreement_text(request, required_agreement)
  33. }
  34. return legal_context