From 2867856d407fd48afc09abde70f7c19a1be8182e Mon Sep 17 00:00:00 2001
From: rubenwardy
Date: Mon, 4 Mar 2024 18:05:16 +0000
Subject: [PATCH] Add config for admin contact url
---
app/__init__.py | 16 +++++++++++++++-
app/flatpages/about.md | 6 ++++--
app/flatpages/help/contact_us.md | 2 +-
app/flatpages/help/copyright.md | 3 ++-
app/flatpages/help/editors.md | 3 +--
app/flatpages/help/faq.md | 2 +-
app/flatpages/help/metrics.md | 4 +++-
app/template_filters.py | 4 +++-
app/templates/emails/unable_to_find_account.html | 4 ++--
app/templates/report/index.html | 4 ++--
config.example.cfg | 3 +++
utils/ci/config.cfg | 2 ++
12 files changed, 39 insertions(+), 14 deletions(-)
diff --git a/app/__init__.py b/app/__init__.py
index e406f509..c1aa6a83 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -18,9 +18,10 @@ import datetime
import os
import redis
-from flask import redirect, url_for, render_template, flash, request, Flask, send_from_directory, make_response
+from flask import redirect, url_for, render_template, flash, request, Flask, send_from_directory, make_response, render_template_string
from flask_babel import Babel, gettext
from flask_flatpages import FlatPages
+from flask_flatpages.utils import pygmented_markdown
from flask_github import GitHub
from flask_gravatar import Gravatar
from flask_login import logout_user, current_user, LoginManager
@@ -30,10 +31,20 @@ from flask_wtf.csrf import CSRFProtect
from app.markdown import init_markdown, MARKDOWN_EXTENSIONS, MARKDOWN_EXTENSION_CONFIG
app = Flask(__name__, static_folder="public/static")
+
+
+def my_flatpage_renderer(text):
+ # Render with jinja first
+ prerendered_body = render_template_string(text)
+ return pygmented_markdown(prerendered_body)
+
+
app.config["FLATPAGES_ROOT"] = "flatpages"
app.config["FLATPAGES_EXTENSION"] = ".md"
app.config["FLATPAGES_MARKDOWN_EXTENSIONS"] = MARKDOWN_EXTENSIONS
app.config["FLATPAGES_EXTENSION_CONFIG"] = MARKDOWN_EXTENSION_CONFIG
+app.config["FLATPAGES_HTML_RENDERER"] = my_flatpage_renderer
+
app.config["BABEL_TRANSLATION_DIRECTORIES"] = "../translations"
app.config["LANGUAGES"] = {
"en": "English",
@@ -55,6 +66,9 @@ app.config["LANGUAGES"] = {
app.config.from_pyfile(os.environ["FLASK_CONFIG"])
+if not app.config["ADMIN_CONTACT_URL"]:
+ raise Exception("Missing config property: ADMIN_CONTACT_URL")
+
redis_client = redis.Redis.from_url(app.config["REDIS_URL"])
github = GitHub(app)
diff --git a/app/flatpages/about.md b/app/flatpages/about.md
index 7d7d7edf..4fe013f4 100644
--- a/app/flatpages/about.md
+++ b/app/flatpages/about.md
@@ -12,8 +12,10 @@ ContentDB is open source software, licensed under AGPLv3.0.
Source code
Issue tracker
-Contact admin
-Stats / monitoring
+Contact admin
+{% if monitoring_url -%}
+Stats / monitoring
+{%- endif %}
## Why was ContentDB created?
diff --git a/app/flatpages/help/contact_us.md b/app/flatpages/help/contact_us.md
index c41970ec..cfc7d654 100644
--- a/app/flatpages/help/contact_us.md
+++ b/app/flatpages/help/contact_us.md
@@ -11,4 +11,4 @@ We take copyright violation and other offenses very seriously.
## Other
-Contact the admin
+Contact the admin
diff --git a/app/flatpages/help/copyright.md b/app/flatpages/help/copyright.md
index b52b108d..654813f8 100644
--- a/app/flatpages/help/copyright.md
+++ b/app/flatpages/help/copyright.md
@@ -135,7 +135,8 @@ ContentDB editors will check packages to make sure the package page's license ma
inside the package download, but do not investigate each piece of media or line of code.
If a copyright violation is reported to us, we will unlist the package and contact the author/maintainers.
-Once the problem has been fixed, the package can be restored.
+Once the problem has been fixed, the package can be restored. Repeated copyright infringement may lead to
+permanent bans.
## Where can I get help?
diff --git a/app/flatpages/help/editors.md b/app/flatpages/help/editors.md
index 3f9ef3fe..b0c3f533 100644
--- a/app/flatpages/help/editors.md
+++ b/app/flatpages/help/editors.md
@@ -54,5 +54,4 @@ A simplified process for reviewing a package is as follows:
usually incorrect.
4. check source, etc links to make sure they work and are correct.
5. verify that the package has license file that matches what is on the contentdb fields
-6. verify that all assets and code are licensed correctly
-7. if the above steps pass, approve the package, else request changes needed from the author
+6. if the above steps pass, approve the package, else request changes needed from the author
diff --git a/app/flatpages/help/faq.md b/app/flatpages/help/faq.md
index 949e9af9..61b5388d 100644
--- a/app/flatpages/help/faq.md
+++ b/app/flatpages/help/faq.md
@@ -34,7 +34,7 @@ then you can just set a new email in
[Settings > Email and Notifications](/user/settings/email/).
If you have previously unsubscribed this email, then ContentDB is completely prevented from sending emails to that
-address. You'll need to use a different email address, or [contact rubenwardy](https://rubenwardy.com/contact/) to
+address. You'll need to use a different email address, or [contact the admin]({{ admin_contact_url }}) to
remove your email from the blacklist.
diff --git a/app/flatpages/help/metrics.md b/app/flatpages/help/metrics.md
index c40aab98..36ab50a7 100644
--- a/app/flatpages/help/metrics.md
+++ b/app/flatpages/help/metrics.md
@@ -9,11 +9,13 @@ and modern alerting approach".
Prometheus Metrics can be accessed at [/metrics](/metrics), or you can view them
on the Grafana instance below.
+{% if monitoring_url %}
-
+
View ContentDB on Grafana
+{% endif %}
## Metrics
diff --git a/app/template_filters.py b/app/template_filters.py
index e430787f..77c11a51 100644
--- a/app/template_filters.py
+++ b/app/template_filters.py
@@ -34,7 +34,9 @@ def inject_misc():
hide_nonfree = False
if has_request_context():
hide_nonfree = request.cookies.get("hide_nonfree") == "1"
- return dict(debug=app.debug, hide_nonfree=hide_nonfree, locale=get_locale())
+ return dict(debug=app.debug, hide_nonfree=hide_nonfree, locale=get_locale(),
+ admin_contact_url=app.config["ADMIN_CONTACT_URL"],
+ monitoring_url=app.config.get("MONITORING_URL"))
@app.context_processor
diff --git a/app/templates/emails/unable_to_find_account.html b/app/templates/emails/unable_to_find_account.html
index 22971e6a..aa087edf 100644
--- a/app/templates/emails/unable_to_find_account.html
+++ b/app/templates/emails/unable_to_find_account.html
@@ -6,8 +6,8 @@
{{ _("You can use GitHub to log in if it is associated with your account.") }}
- {{ _("Otherwise, you may need to contact rubenwardy for help.") }}
+ {{ _("Otherwise, you may need to contact the admin for help.") }}
{{ _("If you weren't expecting to receive this email, then you can safely ignore it.") }}
-
\ No newline at end of file
+
diff --git a/app/templates/report/index.html b/app/templates/report/index.html
index 5a8b5252..ee1d0d40 100644
--- a/app/templates/report/index.html
+++ b/app/templates/report/index.html
@@ -13,11 +13,11 @@
{{ _("Due to spam, we no longer accept reports from anonymous users on this form.") }}
- {{ _("Please sign in or contact the admin in another way") }}
+ {{ _("Please sign in or contact the admin using the link below.") }}
Login
- Contact the admin
+ Contact the admin
{% else %}
diff --git a/config.example.cfg b/config.example.cfg
index 2f5de9f8..d789bacc 100644
--- a/config.example.cfg
+++ b/config.example.cfg
@@ -35,3 +35,6 @@ TEMPLATES_AUTO_RELOAD = False
LOG_SQL = False
BLOCKED_DOMAINS = []
+
+ADMIN_CONTACT_URL = ""
+MONITORING_URL = None
diff --git a/utils/ci/config.cfg b/utils/ci/config.cfg
index f83ac627..74de8089 100644
--- a/utils/ci/config.cfg
+++ b/utils/ci/config.cfg
@@ -29,3 +29,5 @@ TEMPLATES_AUTO_RELOAD = True
LANGUAGES = {
'en': 'English',
}
+
+ADMIN_CONTACT_URL = "https://example.org"