context_processors.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from django.urls import reverse
  2. from .models import Agreement
  3. from .utils import get_required_user_agreement, get_parsed_content
  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 = agreements.get(Agreement.TYPE_TOS)
  9. if terms_of_service:
  10. if terms_of_service['link']:
  11. legal_context['TERMS_OF_SERVICE_URL'] = terms_of_service['link']
  12. elif terms_of_service['text']:
  13. legal_context['TERMS_OF_SERVICE_URL'] = reverse('misago:terms-of-service')
  14. privacy_policy = agreements.get(Agreement.TYPE_PRIVACY)
  15. if privacy_policy:
  16. if privacy_policy['link']:
  17. legal_context['PRIVACY_POLICY_URL'] = privacy_policy['link']
  18. elif privacy_policy['text']:
  19. legal_context['PRIVACY_POLICY_URL'] = reverse('misago:privacy-policy')
  20. if legal_context:
  21. request.frontend_context.update(legal_context)
  22. required_agreement = get_required_user_agreement(request.user, agreements)
  23. if required_agreement:
  24. request.frontend_context['REQUIRED_AGREEMENT_ID'] = required_agreement.id
  25. legal_context['misago_agreement'] = {
  26. 'title': required_agreement.get_final_title(),
  27. 'link': required_agreement.link,
  28. 'content': get_parsed_content(request, required_agreement)
  29. }
  30. else:
  31. legal_context['misago_agreement'] = None
  32. return legal_context