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. legal_context['misago_agreement'] = {
  35. 'type': required_agreement.get_type_display(),
  36. 'title': required_agreement.get_final_title(),
  37. 'link': required_agreement.link,
  38. 'text': get_parsed_agreement_text(request, required_agreement)
  39. }
  40. return legal_context