From dce7a74f7e16f5f48b6b766a491c0bc01e66a942 Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Thu, 19 Sep 2019 11:14:21 +0200
Subject: [PATCH] See #872: rules and contact email settings
---
.../instance/dynamic_preferences_registry.py | 23 +++++++++++++++++++
api/funkwhale_api/instance/nodeinfo.py | 2 ++
api/tests/instance/test_nodeinfo.py | 4 ++++
front/src/views/admin/Settings.vue | 2 ++
4 files changed, 31 insertions(+)
diff --git a/api/funkwhale_api/instance/dynamic_preferences_registry.py b/api/funkwhale_api/instance/dynamic_preferences_registry.py
index ed2cef527..0d6260a83 100644
--- a/api/funkwhale_api/instance/dynamic_preferences_registry.py
+++ b/api/funkwhale_api/instance/dynamic_preferences_registry.py
@@ -59,6 +59,29 @@ class InstanceTerms(types.StringPreference):
field_kwargs = {"required": False}
+@global_preferences_registry.register
+class InstanceRules(types.StringPreference):
+ show_in_api = True
+ section = instance
+ name = "rules"
+ verbose_name = "Rules"
+ default = ""
+ help_text = "Rules/Code of Conduct (markdown allowed)."
+ widget = widgets.Textarea
+ field_kwargs = {"required": False}
+
+
+@global_preferences_registry.register
+class InstanceContactEmail(types.StringPreference):
+ show_in_api = True
+ section = instance
+ name = "contact_email"
+ verbose_name = "Contact email"
+ default = ""
+ help_text = "A contact email for visitors who need to contact an admin or moderator"
+ field_kwargs = {"required": False}
+
+
@global_preferences_registry.register
class RavenDSN(types.StringPreference):
show_in_api = True
diff --git a/api/funkwhale_api/instance/nodeinfo.py b/api/funkwhale_api/instance/nodeinfo.py
index dc495108e..15f2b1b41 100644
--- a/api/funkwhale_api/instance/nodeinfo.py
+++ b/api/funkwhale_api/instance/nodeinfo.py
@@ -42,6 +42,8 @@ def get():
"private": all_preferences.get("instance__nodeinfo_private"),
"shortDescription": all_preferences.get("instance__short_description"),
"longDescription": all_preferences.get("instance__long_description"),
+ "rules": all_preferences.get("instance__rules"),
+ "contactEmail": all_preferences.get("instance__contact_email"),
"terms": all_preferences.get("instance__terms"),
"nodeName": all_preferences.get("instance__name"),
"banner": federation_utils.full_url(banner.url) if banner else None,
diff --git a/api/tests/instance/test_nodeinfo.py b/api/tests/instance/test_nodeinfo.py
index d30873ec2..d1816ff3d 100644
--- a/api/tests/instance/test_nodeinfo.py
+++ b/api/tests/instance/test_nodeinfo.py
@@ -40,6 +40,8 @@ def test_nodeinfo_dump(preferences, mocker, avatar):
"shortDescription": preferences["instance__short_description"],
"longDescription": preferences["instance__long_description"],
"nodeName": preferences["instance__name"],
+ "rules": preferences["instance__rules"],
+ "contactEmail": preferences["instance__contact_email"],
"terms": preferences["instance__terms"],
"banner": federation_utils.full_url(preferences["instance__banner"].url),
"library": {
@@ -109,6 +111,8 @@ def test_nodeinfo_dump_stats_disabled(preferences, mocker):
"shortDescription": preferences["instance__short_description"],
"longDescription": preferences["instance__long_description"],
"nodeName": preferences["instance__name"],
+ "rules": preferences["instance__rules"],
+ "contactEmail": preferences["instance__contact_email"],
"terms": preferences["instance__terms"],
"banner": None,
"library": {
diff --git a/front/src/views/admin/Settings.vue b/front/src/views/admin/Settings.vue
index 6ae7e73a1..8d080e0d4 100644
--- a/front/src/views/admin/Settings.vue
+++ b/front/src/views/admin/Settings.vue
@@ -95,6 +95,8 @@ export default {
"instance__name",
"instance__short_description",
"instance__long_description",
+ "instance__contact_email",
+ "instance__rules",
"instance__terms",
"instance__banner",
]
--
GitLab