views.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from hashlib import md5
  2. from django.http import Http404
  3. from django.shortcuts import redirect, render
  4. from django.utils.translation import gettext as _
  5. from misago.conf import settings
  6. from misago.core.cache import cache
  7. from misago.markup import common_flavour
  8. def get_parsed_content(setting_name):
  9. cache_name = 'misago_legal_%s' % setting_name
  10. cached_content = cache.get(cache_name)
  11. unparsed_content = settings.get_lazy_setting(setting_name)
  12. checksum_source = '%s:%s' % (unparsed_content, settings.SECRET_KEY)
  13. unparsed_checksum = md5(checksum_source).hexdigest()
  14. if cached_content and cached_content.get('checksum') == unparsed_checksum:
  15. return cached_content['parsed']
  16. else:
  17. cached_content = {
  18. 'checksum': unparsed_checksum,
  19. 'parsed': common_flavour(unparsed_content)['parsed_text'],
  20. }
  21. cache.set(cache_name, cached_content)
  22. return cached_content['parsed']
  23. def terms(request):
  24. if not (settings.terms_of_service or settings.terms_of_service_link):
  25. raise Http404()
  26. if settings.terms_of_service_link:
  27. return redirect(settings.terms_of_service_link)
  28. parsed_content = get_parsed_content('terms_of_service')
  29. return render(request, 'misago/legal/terms_of_service.html', {
  30. 'title': settings.terms_of_service_title or _("Terms of service"),
  31. 'content': parsed_content,
  32. })
  33. def privacy_policy(request):
  34. if not (settings.privacy_policy or settings.privacy_policy_link):
  35. raise Http404()
  36. if settings.privacy_policy_link:
  37. return redirect(settings.privacy_policy_link)
  38. parsed_content = get_parsed_content('privacy_policy')
  39. return render(request, 'misago/legal/privacy_policy.html', {
  40. 'title': settings.privacy_policy_title or _("Privacy policy"),
  41. 'content': parsed_content,
  42. })