155 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			155 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Python
		
	
	
	
| """
 | |
| Local settings
 | |
| 
 | |
| - Run in Debug mode
 | |
| - Add Django Debug Toolbar when INTERNAL_IPS are given and match the request
 | |
| - Add django-extensions as app
 | |
| """
 | |
| 
 | |
| from funkwhale_api import __version__ as funkwhale_version
 | |
| 
 | |
| from .common import *  # noqa
 | |
| 
 | |
| # DEBUG
 | |
| # ------------------------------------------------------------------------------
 | |
| DEBUG = env.bool("DJANGO_DEBUG", default=True)
 | |
| FORCE_HTTPS_URLS = env.bool("FORCE_HTTPS_URLS", default=False)
 | |
| TEMPLATES[0]["OPTIONS"]["debug"] = DEBUG
 | |
| 
 | |
| # SECRET CONFIGURATION
 | |
| # ------------------------------------------------------------------------------
 | |
| # See: https://docs.djangoproject.com/en/dev/ref/settings/#secret-key
 | |
| # Note: This key only used for development and testing.
 | |
| SECRET_KEY = env(
 | |
|     "DJANGO_SECRET_KEY", default="mc$&b=5j#6^bv7tld1gyjp2&+^-qrdy=0sw@r5sua*1zp4fmxc"
 | |
| )
 | |
| 
 | |
| # django-debug-toolbar
 | |
| # ------------------------------------------------------------------------------
 | |
| 
 | |
| # INTERNAL_IPS = ('127.0.0.1', '10.0.2.2',)
 | |
| 
 | |
| DEBUG_TOOLBAR_CONFIG = {
 | |
|     "DISABLE_PANELS": ["debug_toolbar.panels.redirects.RedirectsPanel"],
 | |
|     "SHOW_TEMPLATE_CONTEXT": True,
 | |
|     "SHOW_TOOLBAR_CALLBACK": lambda request: "debug" in request.GET,
 | |
|     "JQUERY_URL": "/staticfiles/admin/js/vendor/jquery/jquery.js",
 | |
| }
 | |
| # DEBUG_TOOLBAR_PANELS = [
 | |
| #     'debug_toolbar.panels.versions.VersionsPanel',
 | |
| #     'debug_toolbar.panels.timer.TimerPanel',
 | |
| #     'debug_toolbar.panels.settings.SettingsPanel',
 | |
| #     'debug_toolbar.panels.headers.HeadersPanel',
 | |
| #     'debug_toolbar.panels.request.RequestPanel',
 | |
| #     'debug_toolbar.panels.sql.SQLPanel',
 | |
| #     'debug_toolbar.panels.staticfiles.StaticFilesPanel',
 | |
| #     'debug_toolbar.panels.templates.TemplatesPanel',
 | |
| #     'debug_toolbar.panels.cache.CachePanel',
 | |
| #     'debug_toolbar.panels.signals.SignalsPanel',
 | |
| #     'debug_toolbar.panels.logging.LoggingPanel',
 | |
| #     'debug_toolbar.panels.redirects.RedirectsPanel',
 | |
| #     'debug_toolbar.panels.profiling.ProfilingPanel',
 | |
| #     'debug_toolbar_line_profiler.panel.ProfilingPanel'
 | |
| # ]
 | |
| 
 | |
| DEBUG_TOOLBAR_PANELS = [
 | |
|     # 'debug_toolbar.panels.versions.VersionsPanel',
 | |
|     "debug_toolbar.panels.timer.TimerPanel",
 | |
|     "debug_toolbar.panels.settings.SettingsPanel",
 | |
|     "debug_toolbar.panels.headers.HeadersPanel",
 | |
|     # 'debug_toolbar.panels.request.RequestPanel',
 | |
|     "debug_toolbar.panels.sql.SQLPanel",
 | |
|     # 'debug_toolbar.panels.staticfiles.StaticFilesPanel',
 | |
|     # 'debug_toolbar.panels.templates.TemplatesPanel',
 | |
|     "debug_toolbar.panels.cache.CachePanel",
 | |
|     # 'debug_toolbar.panels.signals.SignalsPanel',
 | |
|     # 'debug_toolbar.panels.logging.LoggingPanel',
 | |
|     # 'debug_toolbar.panels.redirects.RedirectsPanel',
 | |
|     # 'debug_toolbar.panels.profiling.ProfilingPanel',
 | |
| ]
 | |
| 
 | |
| # django-extensions
 | |
| # ------------------------------------------------------------------------------
 | |
| INSTALLED_APPS += ("django_extensions",)
 | |
| 
 | |
| INSTALLED_APPS += ("drf_spectacular",)
 | |
| 
 | |
| # Debug toolbar is slow, we disable it for tests
 | |
| DEBUG_TOOLBAR_ENABLED = env.bool("DEBUG_TOOLBAR_ENABLED", default=DEBUG)
 | |
| if DEBUG_TOOLBAR_ENABLED:
 | |
|     MIDDLEWARE += ("debug_toolbar.middleware.DebugToolbarMiddleware",)
 | |
|     INSTALLED_APPS += ("debug_toolbar",)
 | |
| 
 | |
| # TESTING
 | |
| # ------------------------------------------------------------------------------
 | |
| TEST_RUNNER = "django.test.runner.DiscoverRunner"
 | |
| 
 | |
| # CELERY
 | |
| CELERY_TASK_ALWAYS_EAGER = False
 | |
| # END CELERY
 | |
| 
 | |
| # Your local stuff: Below this line define 3rd party library settings
 | |
| 
 | |
| REST_FRAMEWORK["DEFAULT_SCHEMA_CLASS"] = "funkwhale_api.schema.CustomAutoSchema"
 | |
| SPECTACULAR_SETTINGS = {
 | |
|     "TITLE": "Funkwhale API",
 | |
|     "DESCRIPTION": open("Readme.md").read(),
 | |
|     "VERSION": funkwhale_version,
 | |
|     "SCHEMA_PATH_PREFIX": "/api/(v[0-9])?",
 | |
|     "OAUTH_FLOWS": ["authorizationCode"],
 | |
|     "AUTHENTICATION_WHITELIST": [
 | |
|         "funkwhale_api.common.authentication.OAuth2Authentication",
 | |
|         "funkwhale_api.common.authentication.ApplicationTokenAuthentication",
 | |
|     ],
 | |
|     "SERVERS": [
 | |
|         {"url": "https://demo.funkwhale.audio", "description": "Demo Server"},
 | |
|         {
 | |
|             "url": "https://funkwhale.audio",
 | |
|             "description": "Read server with real content",
 | |
|         },
 | |
|         {
 | |
|             "url": "{protocol}://{domain}",
 | |
|             "description": "Custom server",
 | |
|             "variables": {
 | |
|                 "domain": {
 | |
|                     "default": "yourdomain",
 | |
|                     "description": "Your Funkwhale Domain",
 | |
|                 },
 | |
|                 "protocol": {"enum": ["http", "https"], "default": "https"},
 | |
|             },
 | |
|         },
 | |
|     ],
 | |
|     "OAUTH2_FLOWS": ["authorizationCode"],
 | |
|     "OAUTH2_AUTHORIZATION_URL": "/authorize",
 | |
|     "OAUTH2_TOKEN_URL": "/api/v1/oauth/token/",
 | |
|     "PREPROCESSING_HOOKS": ["config.schema.custom_preprocessing_hook"],
 | |
|     "ENUM_NAME_OVERRIDES": {
 | |
|         "FederationChoiceEnum": "funkwhale_api.federation.models.TYPE_CHOICES",
 | |
|         "ReportTypeEnum": "funkwhale_api.moderation.models.REPORT_TYPES",
 | |
|         "PrivacyLevelEnum": "funkwhale_api.common.fields.PRIVACY_LEVEL_CHOICES",
 | |
|         "LibraryPrivacyLevelEnum": "funkwhale_api.music.models.LIBRARY_PRIVACY_LEVEL_CHOICES",
 | |
|     },
 | |
|     "COMPONENT_SPLIT_REQUEST": True,
 | |
| }
 | |
| 
 | |
| if env.bool("WEAK_PASSWORDS", default=False):
 | |
|     # Faster during tests
 | |
|     PASSWORD_HASHERS = ("django.contrib.auth.hashers.MD5PasswordHasher",)
 | |
| 
 | |
| MIDDLEWARE = (
 | |
|     "funkwhale_api.common.middleware.DevHttpsMiddleware",
 | |
|     "funkwhale_api.common.middleware.ProfilerMiddleware",
 | |
|     "funkwhale_api.common.middleware.PymallocMiddleware",
 | |
| ) + MIDDLEWARE
 | |
| 
 | |
| REST_FRAMEWORK.update(
 | |
|     {
 | |
|         "TEST_REQUEST_RENDERER_CLASSES": [
 | |
|             "rest_framework.renderers.MultiPartRenderer",
 | |
|             "rest_framework.renderers.JSONRenderer",
 | |
|             "rest_framework.renderers.TemplateHTMLRenderer",
 | |
|             "funkwhale_api.playlists.renderers.PlaylistXspfRenderer",
 | |
|         ],
 | |
|     }
 | |
| )
 |