From 4d71da7ae1c961f9ecc59b449f5c5d6661931988 Mon Sep 17 00:00:00 2001 From: Andrew Godwin Date: Sat, 17 Dec 2022 15:30:51 -0700 Subject: Allow for remote policy pages --- core/views.py | 19 ++++++++++++++----- users/views/admin/settings.py | 6 +++--- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/core/views.py b/core/views.py index 71db5fd..462a041 100644 --- a/core/views.py +++ b/core/views.py @@ -1,5 +1,6 @@ import markdown_it from django.http import JsonResponse +from django.shortcuts import redirect from django.templatetags.static import static from django.utils.decorators import method_decorator from django.utils.safestring import mark_safe @@ -79,13 +80,21 @@ class FlatPage(TemplateView): config_option = None title = None - def get_context_data(self): + def get(self, request, *args, **kwargs): if self.config_option is None: raise ValueError("No config option provided") - # Get raw content - content = getattr(Config.system, self.config_option) - # Render it - html = markdown_it.MarkdownIt().render(content) + self.content = getattr(Config.system, self.config_option) + # If the content is a plain URL, then redirect to it instead + if ( + "\n" not in self.content + and " " not in self.content + and "://" in self.content + ): + return redirect(self.content) + return super().get(request, *args, **kwargs) + + def get_context_data(self): + html = markdown_it.MarkdownIt().render(self.content) return { "title": self.title, "content": mark_safe(html), diff --git a/users/views/admin/settings.py b/users/views/admin/settings.py index 4786d83..f72c0bd 100644 --- a/users/views/admin/settings.py +++ b/users/views/admin/settings.py @@ -174,17 +174,17 @@ class PoliciesSettings(AdminSettingsPage): options = { "policy_terms": { "title": "Terms of Service Page", - "help_text": "Will only be shown if it has content. Use Markdown for formatting.", + "help_text": "Will only be shown if it has content. Use Markdown for formatting.\nIf you would like to redirect elsewhere, enter just a URL.", "display": "textarea", }, "policy_privacy": { "title": "Privacy Policy Page", - "help_text": "Will only be shown if it has content. Use Markdown for formatting.", + "help_text": "Will only be shown if it has content. Use Markdown for formatting.\nIf you would like to redirect elsewhere, enter just a URL.", "display": "textarea", }, "policy_rules": { "title": "Server Rules Page", - "help_text": "Will only be shown if it has content. Use Markdown for formatting.", + "help_text": "Will only be shown if it has content. Use Markdown for formatting.\nIf you would like to redirect elsewhere, enter just a URL.", "display": "textarea", }, } -- cgit v1.2.3