diff --git a/api/funkwhale_api/instance/dynamic_preferences_registry.py b/api/funkwhale_api/instance/dynamic_preferences_registry.py index 9d1f1c8f77706562fcdc8a2ecc1c863533a033f2..1e6f3147ca99e279c4b9657c02bce1f729c12021 100644 --- a/api/funkwhale_api/instance/dynamic_preferences_registry.py +++ b/api/funkwhale_api/instance/dynamic_preferences_registry.py @@ -43,6 +43,20 @@ class InstanceLongDescription(types.StringPreference): field_kwargs = {"required": False} +@global_preferences_registry.register +class InstanceTerms(types.StringPreference): + show_in_api = True + section = instance + name = "terms" + verbose_name = "Terms of service" + default = "" + help_text = ( + "Terms of service and privacy policy for your instance (markdown allowed)." + ) + widget = widgets.Textarea + 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 1c15cfac5df807dab91d23d45cc97c68dd22c14c..1d401fbca99684e7ca9c03a6a166062364dc5bfd 100644 --- a/api/funkwhale_api/instance/nodeinfo.py +++ b/api/funkwhale_api/instance/nodeinfo.py @@ -40,6 +40,7 @@ def get(): "private": all_preferences.get("instance__nodeinfo_private"), "shortDescription": all_preferences.get("instance__short_description"), "longDescription": all_preferences.get("instance__long_description"), + "terms": all_preferences.get("instance__terms"), "nodeName": all_preferences.get("instance__name"), "library": { "federationEnabled": all_preferences.get("federation__enabled"), diff --git a/api/tests/instance/test_nodeinfo.py b/api/tests/instance/test_nodeinfo.py index cdb9ad93a651388c4d8eba00e37daad3f2bc5217..f85f34b250c6d2c387f0550db8b42666f7e561f4 100644 --- a/api/tests/instance/test_nodeinfo.py +++ b/api/tests/instance/test_nodeinfo.py @@ -38,6 +38,7 @@ def test_nodeinfo_dump(preferences, mocker): "shortDescription": preferences["instance__short_description"], "longDescription": preferences["instance__long_description"], "nodeName": preferences["instance__name"], + "terms": preferences["instance__terms"], "library": { "federationEnabled": preferences["federation__enabled"], "federationNeedsApproval": preferences[ @@ -105,6 +106,7 @@ def test_nodeinfo_dump_stats_disabled(preferences, mocker): "shortDescription": preferences["instance__short_description"], "longDescription": preferences["instance__long_description"], "nodeName": preferences["instance__name"], + "terms": preferences["instance__terms"], "library": { "federationEnabled": preferences["federation__enabled"], "federationNeedsApproval": preferences[ diff --git a/front/src/views/admin/Settings.vue b/front/src/views/admin/Settings.vue index 85a2afb420a882615bd7e36c9e72f5d30557424a..a538329e3a0ffefb38ab9089e53160cdef5b8904 100644 --- a/front/src/views/admin/Settings.vue +++ b/front/src/views/admin/Settings.vue @@ -94,7 +94,8 @@ export default { settings: [ "instance__name", "instance__short_description", - "instance__long_description" + "instance__long_description", + "instance__terms", ] }, {