from django.forms import widgets from dynamic_preferences import types from dynamic_preferences.registries import global_preferences_registry raven = types.Section('raven') instance = types.Section('instance') @global_preferences_registry.register class InstanceName(types.StringPreference): show_in_api = True section = instance name = 'name' default = '' verbose_name = 'Public name' help_text = 'The public name of your instance, displayed in the about page.' field_kwargs = { 'required': False, } @global_preferences_registry.register class InstanceShortDescription(types.StringPreference): show_in_api = True section = instance name = 'short_description' default = '' verbose_name = 'Short description' help_text = 'Instance succinct description, displayed in the about page.' field_kwargs = { 'required': False, } @global_preferences_registry.register class InstanceLongDescription(types.StringPreference): show_in_api = True section = instance name = 'long_description' verbose_name = 'Long description' default = '' help_text = 'Instance long description, displayed in the about page (markdown allowed).' widget = widgets.Textarea field_kwargs = { 'required': False, } @global_preferences_registry.register class RavenDSN(types.StringPreference): show_in_api = True section = raven name = 'front_dsn' default = 'https://9e0562d46b09442bb8f6844e50cbca2b@sentry.eliotberriot.com/4' verbose_name = 'Raven DSN key (front-end)' help_text = ( 'A Raven DSN key used to report front-ent errors to ' 'a sentry instance. Keeping the default one will report errors to ' 'Funkwhale developers.' ) field_kwargs = { 'required': False, } @global_preferences_registry.register class RavenEnabled(types.BooleanPreference): show_in_api = True section = raven name = 'front_enabled' default = False verbose_name = ( 'Report front-end errors with Raven' ) @global_preferences_registry.register class InstanceNodeinfoEnabled(types.BooleanPreference): show_in_api = False section = instance name = 'nodeinfo_enabled' default = True verbose_name = 'Enable nodeinfo endpoint' help_text = ( 'This endpoint is needed for your about page to work. ' 'It\'s also helpful for the various monitoring ' 'tools that map and analyzize the fediverse, ' 'but you can disable it completely if needed.' ) @global_preferences_registry.register class InstanceNodeinfoPrivate(types.BooleanPreference): show_in_api = False section = instance name = 'nodeinfo_private' default = False verbose_name = 'Private mode in nodeinfo' help_text = ( 'Indicate in the nodeinfo endpoint that you do not want your instance ' 'to be tracked by third-party services. ' 'There is no guarantee these tools will honor this setting though.' ) @global_preferences_registry.register class InstanceNodeinfoStatsEnabled(types.BooleanPreference): show_in_api = False section = instance name = 'nodeinfo_stats_enabled' default = True verbose_name = 'Enable usage and library stats in nodeinfo endpoint' help_text = ( 'Disable this if you don\'t want to share usage and library statistics ' 'in the nodeinfo endpoint but don\'t want to disable it completely.' )