From eba4d5779e31ca86dc332fc97e72f6e5c9a66791 Mon Sep 17 00:00:00 2001 From: Jochen Klar Date: Thu, 17 Oct 2024 19:44:21 +0200 Subject: [PATCH 1/3] Add settings page --- docs/configuration/index.md | 7 +- docs/configuration/settings.md | 652 +++++++++++++++++++++++++++++++++ 2 files changed, 657 insertions(+), 2 deletions(-) create mode 100644 docs/configuration/settings.md diff --git a/docs/configuration/index.md b/docs/configuration/index.md index 871865e..7d7937e 100644 --- a/docs/configuration/index.md +++ b/docs/configuration/index.md @@ -5,8 +5,10 @@ The RDMO application uses the [Django settings](https://docs.djangoproject.com/e ``` config/settings/local.py ``` -This `local.py` module is copied from the template `config/settings/sample.local.py`, contained in the `rdmo-app`, during the installation process. The module is ignored by git and is meant to contain your local adjustments and secret information (e.g. database connections). -The `config/settings/local.py` module can be used to override all of the default settings of RDMO (see: [rdmo/core/settings.py](https://github.com/rdmorganiser/rdmo/blob/main/rdmo/core/settings.py)). + +This `local.py` module is copied from the template `config/settings/sample.local.py`, contained in the `rdmo-app`, during the installation process. The module is ignored by git and is meant to contain your local adjustments and secret information (e.g. database connections). + +In principle, the `config/settings/local.py` module can be used to override all of the default settings of RDMO. A complete description of settings relevant for RDMO is given in [here](./settings). --- @@ -22,4 +24,5 @@ cache logging projects multisite +settings ``` diff --git a/docs/configuration/settings.md b/docs/configuration/settings.md new file mode 100644 index 0000000..f3f426b --- /dev/null +++ b/docs/configuration/settings.md @@ -0,0 +1,652 @@ +Settings +======== + +RDMO can be customised using various settings. Since RDMO is based on Django, we use its [build-in settings system](https://docs.djangoproject.com/en/stable/topics/settings/). Almost every setting has a default value, which is set in the RDMO packacge in [rdmo/core/settings.py](https://github.com/rdmorganiser/rdmo/blob/main/rdmo/core/settings.py). + +In the following all settings, which can be changed from their default values to customize you particular RDMO instance are described in detail. + +--- + +#### SECRET_KEY + +Secret key for RDMO. This is used to provide cryptographic signing, and should be set to a unique, unpredictable value (e.g. from a password generator). + +See also [SECRET_KEY](https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-SECRET_KEY) in the Django documentation. Should be set in `.env`. + +--- + +#### DEBUG + +Default: `False` + +Debug mode. See also [DEBUG](https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-DEBUG) in the Django documentation. Should **never** set to `True` in production. + +--- + +#### ALLOWED_HOSTS + +Default: `[]` + +List of allowed hosts for this app. If your instance runs under `https://rdmo.example.com` the list needs to contain `rdmo.example.com`. + +See also [ALLOWED_HOSTS](https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-ALLOWED_HOSTS) in the Django documentation. + +--- + +#### INSTALLED_APPS + +The list of Django apps for this RDMO instance. By default, it contains the main Django apps, the RDMO apps from the RDMO package and some 3rd party packages. A theme and or plugins need to be added to this list when used, e.g.: + +```python +from . import INSTALLED_APPS +INSTALLED_APPS += ['rdmo_theme', 'rdmo_plugin'] +``` + +See also [INSTALLED_APPS](https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-INSTALLED_APPS) in the Django documentation. + +--- + +#### AUTHENTICATION_BACKENDS + +Default: + +```python +[ + 'rules.permissions.ObjectPermissionBackend', + 'django.contrib.auth.backends.ModelBackend' +] +``` + +--- + +#### MULTISITE + +Default: `False` + +--- + +#### GROUPS + +Default: `False` + +--- + +#### LOGIN_FORM + +Default: `True` + +--- + +#### PROFILE_UPDATE + +Default: `True` + +--- + +#### PROFILE_DELETE + +Default: `True` + +--- + +#### ACCOUNT + +Default: `False` + +--- + +#### ACCOUNT_SIGNUP + +Default: `False` + +--- + +#### ACCOUNT_GROUPS + +Default: `[]` + +--- + +#### ACCOUNT_TERMS_OF_USE + +Default: `False` + +--- + +#### ACCOUNT_ACTIVATION_DAYS + +Default: `7` + +--- + +#### ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS + +Default: `7` + +--- + +#### ACCOUNT_EMAIL_VERIFICATION + +Default: `'optional'` + +--- + +#### ACCOUNT_USERNAME_MIN_LENGTH + +Default: `4` + +--- + +#### ACCOUNT_PASSWORD_MIN_LENGTH + +Default: `4` + +--- + +#### ACCOUNT_ALLOW_USER_TOKEN + +Default: `False` + +--- + +#### SOCIALACCOUNT + +Default: `False` + +--- + +#### SOCIALACCOUNT_SIGNUP + +Default: `False` + +--- + +#### SOCIALACCOUNT_GROUPS + +Default: `[]` + +--- + +#### SHIBBOLETH + +Default: `False` + +--- + +#### SHIBBOLETH_LOGIN_URL + +Default: `'/Shibboleth.sso/Login'` + +--- + +#### SHIBBOLETH_LOGOUT_URL + +Default: `'/Shibboleth.sso/Logout'` + +--- + +#### SHIBBOLETH_USERNAME_PATTERN + +Default: `None` + +--- + +#### LANGUAGE_CODE + +Default: `'en-us'` + +--- + +#### TIME_ZONE + +Default: `'Europe/Berlin'` + +--- + +#### LANGUAGES + +Default: + +```python +( + ('en', _('English')), + ('de', _('German')), +) +``` + +--- + +#### DATABASES + +Default: + +``` +{ + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': 'db.sqlite3' + } +} +``` + +--- + +#### EMAIL_BACKEND + +Default: `'django.core.mail.backends.console.EmailBackend'` + +--- + +#### DEFAULT_FROM_EMAIL + +Default: `'info@example.com'` + +--- + +#### EMAIL_RECIPIENTS_CHOICES + +Default: `[]` + +--- + +#### EMAIL_RECIPIENTS_INPUT + +Default: `False` + +--- + +#### USER_API + +Default: `True` + +--- + +#### OVERLAYS + +Default: + +```python +{ + 'projects': [ + 'projects-table', + 'create-project', + 'import-project', + 'support-info' + ], + 'project': [ + 'project-questions', + 'project-catalog', + 'project-issues', + 'project-views', + 'project-memberships', + 'project-snapshots', + 'export-project', + 'import-project', + 'support-info' + ], + 'issue_send': [ + 'issue-message', + 'issue-attachments', + 'support-info' + ] +} +``` + +--- + +#### EXPORT_FORMATS + +Default: + +```python +( + ('pdf', _('PDF')), + ('rtf', _('Rich Text Format')), + ('odt', _('Open Office')), + ('docx', _('Microsoft Office')), + ('html', _('HTML')), + ('markdown', _('Markdown')), + ('mediawiki', _('mediawiki')), + ('tex', _('LaTeX')) +) +``` + +--- + +#### EXPORT_REFERENCE_ODT_VIEWS + +Default `{}` + +--- + +#### EXPORT_REFERENCE_DOCX_VIEWS + +Default `{}` + +--- + +#### EXPORT_REFERENCE_ODT + +Default: `None` + +--- + +#### EXPORT_REFERENCE_DOCX + +Default: `None` + +--- + +#### EXPORT_PANDOC_ARGS + +Default: + +```python +{ + 'pdf': ['-V', 'geometry:a4paper, margin=1in', '--pdf-engine=xelatex'], + 'rtf': ['--standalone'] +} +``` + +--- + +#### EXPORT_CONTENT_DISPOSITION + +Default `'attachment'` + +--- + +#### PROJECT_TABLE_PAGE_SIZE + +Default: `20` + +--- + +#### PROJECT_ISSUES + +Default: `True` + +--- + +#### PROJECT_ISSUE_PROVIDERS + +Default: `[]` + +--- + +#### PROJECT_VIEWS + +Default: `True` + +--- + +#### PROJECT_EXPORTS + +Default: + +```python +[ + ('xml', _('RDMO XML'), 'rdmo.projects.exports.RDMOXMLExport'), + ('csvcomma', _('CSV (comma separated)'), 'rdmo.projects.exports.CSVCommaExport'), + ('csvsemicolon', _('CSV (semicolon separated)'), 'rdmo.projects.exports.CSVSemicolonExport'), + ('json', _('JSON'), 'rdmo.projects.exports.JSONExport'), +] +``` + +--- + +#### PROJECT_SNAPSHOT_EXPORTS + +Default: `[]` + +--- + +#### PROJECT_IMPORTS + +Default: `[]` + +```python +[ + ('xml', _('RDMO XML'), 'rdmo.projects.imports.RDMOXMLImport'), +] +``` + +--- + +#### PROJECT_IMPORTS_LIST + +Default: `[]` + +--- + +#### PROJECT_QUESTIONS_AUTOSAVE + +Default: `True` + +--- + +#### PROJECT_QUESTIONS_CYCLE_SETS + +Default: `False` + +--- + +#### PROJECT_FILE_QUOTA + +Default: `'10Mb'` + +--- + +#### PROJECT_SEND_ISSUE + +Default: `False` + +--- + +#### PROJECT_INVITE_TIMEOUT + +Default: `None` + +--- + +#### PROJECT_SEND_INVITE + +Default: `True` + +--- + +#### PROJECT_REMOVE_VIEWS + +Default: `True` + +--- + +#### PROJECT_CREATE_RESTRICTED + +Default: `False` + +--- + +#### PROJECT_CREATE_GROUPS + +Default: `[]` + +--- + +#### PROJECT_VALUES_CONFLICT_THRESHOLD + +Default: `0.01` + +--- + +#### NESTED_PROJECTS + +Default: `True` + +--- + +#### OPTIONSET_PROVIDERS + +Default: `[]` + +--- + +#### PROJECT_VALUES_VALIDATION + +Default: `False` + +--- + +#### PROJECT_VALUES_VALIDATION_URL + +Default: `True` + +--- + +#### PROJECT_VALUES_VALIDATION_INTEGER + +Default: `True` + +--- + +#### PROJECT_VALUES_VALIDATION_INTEGER_MESSAGE + +Default: `_('Enter a valid integer.')` + +--- + +#### PROJECT_VALUES_VALIDATION_INTEGER_REGEX + +Default: `re.compile(r'^[+-]?\d+$')` + +--- + +#### PROJECT_VALUES_VALIDATION_FLOAT + +Default: `True` + +--- + +#### PROJECT_VALUES_VALIDATION_FLOAT_MESSAGE + +Default: `_('Enter a valid float.')` + +--- + +#### PROJECT_VALUES_VALIDATION_FLOAT_REGEX + +Default: + +```python +re.compile(r''' + ^[+-]? # Optional sign + ( + \d+ # Digits before the decimal or thousands separator + (,\d{3})* # Optional groups of exactly three digits preceded by a comma (thousands separator) + (\.\d+)? # Optional decimal part, a dot followed by one or more digits + | # OR + \d+ # Digits before the decimal or thousands separator + (\.\d{3})* # Optional groups of exactly three digits preceded by a dot (thousands separator) + (,\d+)? # Optional decimal part, a comma followed by one or more digits + ) + ([eE][+-]?\d+)?$ # Optional exponent part +''', re.VERBOSE) +``` + +--- + +#### PROJECT_VALUES_VALIDATION_BOOLEAN + +Default: `True` + +--- + +#### PROJECT_VALUES_VALIDATION_BOOLEAN_MESSAGE + +Default: `_('Enter a valid boolean (e.g. 0, 1).')` + +--- + +#### PROJECT_VALUES_VALIDATION_BOOLEAN_REGEX + +Default: `r'(?i)^(0|1|f|t|false|true)$'` + +--- + +#### PROJECT_VALUES_VALIDATION_DATE + +Default: `True` + +--- + +#### PROJECT_VALUES_VALIDATION_DATE_MESSAGE + +Default: `_('Enter a valid date (e.g. "02.03.2024", "03/02/2024", "2024-02-03").')` + +--- + +#### PROJECT_VALUES_VALIDATION_DATE_REGEX + +Default: + +```python +re.compile(r''' + ^( + \d{1,2}\.\s*\d{1,2}\.\s*\d{2,4} # Format dd.mm.yyyy + | \d{1,2}/\d{1,2}/\d{4} # Format mm/dd/yyyy + | \d{4}-\d{2}-\d{2} # Format yyyy-mm-dd + )$ +''', re.VERBOSE) +``` + +--- + +#### PROJECT_VALUES_VALIDATION_DATETIME + +Default: `True` + +--- + +#### PROJECT_VALUES_VALIDATION_EMAIL + +Default: `True` + +--- + +#### PROJECT_VALUES_VALIDATION_PHONE + +Default: `True` + +--- + +#### PROJECT_VALUES_VALIDATION_PHONE_MESSAGE + +Default: `_('Enter a valid phone number (e.g. "123456" or "+49 (0) 30 123456").')` + +--- + +#### PROJECT_VALUES_VALIDATION_PHONE_REGEX + +Default: + +```python +re.compile(r''' + ^([+]\d{2,3}\s)? # Optional country code + (\(\d+\)\s)? # Optional area code in parentheses + [\d\s]*$ # Main number with spaces +''', re.VERBOSE) +``` + +--- + +#### DEFAULT_URI_PREFIX + +Default: `'http://example.com/terms'` + +--- + +#### REPLACE_MISSING_TRANSLATION + +Default: `False` + +--- \ No newline at end of file From 456058631b771d0ea18dea57859c8af007a14b41 Mon Sep 17 00:00:00 2001 From: Jochen Klar Date: Thu, 31 Oct 2024 14:53:35 +0100 Subject: [PATCH 2/3] Update LDAP settings --- docs/configuration/authentication/ldap.md | 41 +++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/docs/configuration/authentication/ldap.md b/docs/configuration/authentication/ldap.md index 0e67698..1a0e4b3 100644 --- a/docs/configuration/authentication/ldap.md +++ b/docs/configuration/authentication/ldap.md @@ -1,5 +1,7 @@ # LDAP +## Prerequisites + In order to use a LDAP backend with RDMO you need to install some prerequistes. On Debian/Ubuntu you can install them using: ```bash @@ -31,7 +33,9 @@ userPassword: RDMO_LDAP_ACCOUNT_PASSWORD and end with a blank line followed by `ctrl-d`. -Then, in your `config/settings/local.py` add or uncomment: +## Configuration + +In order to use LDAP as one of your authentication backends in RDMO, edit `config/settings/local.py` and add or uncomment: ```python import ldap @@ -63,7 +67,40 @@ The connection can be tested using: ldapsearch -v -x -H 'ldap://ldap.example.com' -D "uid=rdmo,dc=ldap,dc=example,dc=com" -w RDMO_LDAP_ACCOUNT_PASSWORD -b "dc=ldap,dc=example,dc=com" -s sub 'uid=user' ``` -The setting `PROFILE_UPDATE = False` and `PROFILE_DELETE = False` tell RDMO to disable the update and deletion form for the user profile so that users can neither update their credentials nor delete their profile anymore. The other settings are needed by `django-auth-ldap` and are described in the [django-auth-ldap documentation](https://django-auth-ldap.readthedocs.io/en/latest/). +The setting `PROFILE_UPDATE = False` and `PROFILE_DELETE = False` tell RDMO to disable the update and deletion form for the user profile so that users can neither update their credentials nor delete their profile anymore. + +The other settings are needed by `django-auth-ldap` and are described in the [django-auth-ldap documentation](https://django-auth-ldap.readthedocs.io/en/latest/). + +For an LDAP connection to an Active Directory, the configuration differs slightly: + +```python +import ldap +from django_auth_ldap.config import LDAPSearch + +PROFILE_UPDATE = False +PROFILE_DELETE = False + +AUTH_LDAP_SERVER_URI = "ldap://ldap.example.com" +AUTH_LDAP_BIND_DN = "cn=RDMO_LDAP_ACCOUNT_CN,dc=ldap,dc=example,dc=com" +AUTH_LDAP_BIND_PASSWORD = "RDMO_LDAP_ACCOUNT_PASSWORD" +AUTH_LDAP_USER_SEARCH = LDAPSearch("dc=ldap,dc=example,dc=com", ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)") +AUTH_LDAP_CONNECTION_OPTIONS = {ldap.OPT_REFERRALS: 0} + +AUTH_LDAP_USER_ATTR_MAP = { + "first_name": "givenName", + "last_name": "sn", + 'email': 'mail' +} + +AUTHENTICATION_BACKENDS.insert( + AUTHENTICATION_BACKENDS.index('django.contrib.auth.backends.ModelBackend'), + 'django_auth_ldap.backend.LDAPBackend' +) +``` + +Again, your particular setup might differ. + +## Groups You can also map LDAP groups to Django groups, in particular to restrict the access to Catalogs and Views. This can be done by adding the following settings: From adcfdf37e87d6951ca902a176c4f98c428f94fe8 Mon Sep 17 00:00:00 2001 From: olaf michaelis Date: Thu, 11 Dec 2025 13:30:48 +0100 Subject: [PATCH 3/3] Update settings --- docs/configuration/settings.md | 371 ++++++++++++++++----------------- 1 file changed, 179 insertions(+), 192 deletions(-) diff --git a/docs/configuration/settings.md b/docs/configuration/settings.md index f3f426b..a00a912 100644 --- a/docs/configuration/settings.md +++ b/docs/configuration/settings.md @@ -1,5 +1,4 @@ -Settings -======== +# Settings RDMO can be customised using various settings. Since RDMO is based on Django, we use its [build-in settings system](https://docs.djangoproject.com/en/stable/topics/settings/). Almost every setting has a default value, which is set in the RDMO packacge in [rdmo/core/settings.py](https://github.com/rdmorganiser/rdmo/blob/main/rdmo/core/settings.py). @@ -7,46 +6,38 @@ In the following all settings, which can be changed from their default values to --- -#### SECRET_KEY - -Secret key for RDMO. This is used to provide cryptographic signing, and should be set to a unique, unpredictable value (e.g. from a password generator). - -See also [SECRET_KEY](https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-SECRET_KEY) in the Django documentation. Should be set in `.env`. - ---- - -#### DEBUG +### DEBUG Default: `False` -Debug mode. See also [DEBUG](https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-DEBUG) in the Django documentation. Should **never** set to `True` in production. +Debug mode. When enabled, this provides detailed error messages and debugging information, which is useful during development but should never be enabled in production environments due to security risks. ---- +See also [DEBUG](https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-DEBUG) in the Django documentation. -#### ALLOWED_HOSTS +### ALLOWED_HOSTS Default: `[]` List of allowed hosts for this app. If your instance runs under `https://rdmo.example.com` the list needs to contain `rdmo.example.com`. -See also [ALLOWED_HOSTS](https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-ALLOWED_HOSTS) in the Django documentation. +This setting is used for security purposes to prevent HTTP Host header attacks. It should contain the domain names or IP addresses that are allowed to serve your application. ---- +See also [ALLOWED_HOSTS](https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-ALLOWED_HOSTS) in the Django documentation. -#### INSTALLED_APPS +### INSTALLED_APPS The list of Django apps for this RDMO instance. By default, it contains the main Django apps, the RDMO apps from the RDMO package and some 3rd party packages. A theme and or plugins need to be added to this list when used, e.g.: ```python -from . import INSTALLED_APPS +from . import INSTALLED_APPS INSTALLED_APPS += ['rdmo_theme', 'rdmo_plugin'] ``` See also [INSTALLED_APPS](https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-INSTALLED_APPS) in the Django documentation. ---- +## Authentication Settings -#### AUTHENTICATION_BACKENDS +### AUTHENTICATION_BACKENDS Default: @@ -57,153 +48,157 @@ Default: ] ``` ---- +Authentication backends control how users are authenticated. The default configuration includes both the RDMO-specific object permission backend and Django's standard model backend. -#### MULTISITE +### MULTISITE Default: `False` ---- +Controls whether the RDMO instance supports multiple sites. When enabled, it allows for different configurations and content for different domains. -#### GROUPS +### GROUPS Default: `False` ---- +Enables or disables group-based permissions and management features in RDMO. -#### LOGIN_FORM +### LOGIN_FORM Default: `True` ---- +Controls whether the login form is displayed on the site. -#### PROFILE_UPDATE +### PROFILE_UPDATE Default: `True` ---- +Enables or disables the ability for users to update their profile information. -#### PROFILE_DELETE +### PROFILE_DELETE Default: `True` ---- +Enables or disables the ability for users to delete their profiles. -#### ACCOUNT +### ACCOUNT Default: `False` ---- +Enables or disables the account management system. -#### ACCOUNT_SIGNUP +### ACCOUNT_SIGNUP Default: `False` ---- +Enables or disables user signup functionality. -#### ACCOUNT_GROUPS +### ACCOUNT_GROUPS Default: `[]` ---- +Defines groups that users can be assigned to during signup. -#### ACCOUNT_TERMS_OF_USE +### ACCOUNT_TERMS_OF_USE Default: `False` ---- +Enables or disables terms of use acceptance during signup. -#### ACCOUNT_ACTIVATION_DAYS +### ACCOUNT_ACTIVATION_DAYS Default: `7` ---- +Number of days after which account activation links expire. -#### ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS +### ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS Default: `7` ---- +Number of days after which email confirmation links expire. -#### ACCOUNT_EMAIL_VERIFICATION +### ACCOUNT_EMAIL_VERIFICATION Default: `'optional'` ---- +Controls how email verification is handled. Options include `'optional'`, `'mandatory'`, or `'none'`. -#### ACCOUNT_USERNAME_MIN_LENGTH +### ACCOUNT_USERNAME_MIN_LENGTH Default: `4` ---- +Minimum length required for usernames. -#### ACCOUNT_PASSWORD_MIN_LENGTH +### ACCOUNT_PASSWORD_MIN_LENGTH Default: `4` ---- +Minimum length required for passwords. -#### ACCOUNT_ALLOW_USER_TOKEN +### ACCOUNT_ALLOW_USER_TOKEN Default: `False` ---- +Enables or disables user token functionality. -#### SOCIALACCOUNT +### SOCIALACCOUNT Default: `False` ---- +Enables or disables social account authentication. -#### SOCIALACCOUNT_SIGNUP +### SOCIALACCOUNT_SIGNUP Default: `False` ---- +Enables or disables signup via social accounts. -#### SOCIALACCOUNT_GROUPS +### SOCIALACCOUNT_GROUPS Default: `[]` ---- +Defines groups that users can be assigned to during social account signup. -#### SHIBBOLETH +## Shibboleth Authentication + +### SHIBBOLETH Default: `False` ---- +Enables or disables Shibboleth authentication. -#### SHIBBOLETH_LOGIN_URL +### SHIBBOLETH_LOGIN_URL Default: `'/Shibboleth.sso/Login'` ---- +URL to the Shibboleth login endpoint. -#### SHIBBOLETH_LOGOUT_URL +### SHIBBOLETH_LOGOUT_URL Default: `'/Shibboleth.sso/Logout'` ---- +URL to the Shibboleth logout endpoint. -#### SHIBBOLETH_USERNAME_PATTERN +### SHIBBOLETH_USERNAME_PATTERN Default: `None` ---- +Pattern to extract username from Shibboleth attributes. -#### LANGUAGE_CODE +## Internationalization Settings + +### LANGUAGE_CODE Default: `'en-us'` ---- +The default language code for the application. -#### TIME_ZONE +### TIME_ZONE Default: `'Europe/Berlin'` ---- +The default time zone for the application. -#### LANGUAGES +### LANGUAGES Default: @@ -214,9 +209,11 @@ Default: ) ``` ---- +List of supported languages for the application. + +## Database Settings -#### DATABASES +### DATABASES Default: @@ -229,47 +226,45 @@ Default: } ``` ---- +Database configuration. The default uses SQLite for development, but production environments should use PostgreSQL or MySQL. -#### EMAIL_BACKEND +## Email Settings + +### EMAIL_BACKEND Default: `'django.core.mail.backends.console.EmailBackend'` ---- +Email backend to use for sending emails. In production, this should be configured to use a real email service. -#### DEFAULT_FROM_EMAIL +### DEFAULT_FROM_EMAIL Default: `'info@example.com'` ---- +Default email address to use for sending emails. -#### EMAIL_RECIPIENTS_CHOICES +### EMAIL_RECIPIENTS_CHOICES Default: `[]` ---- +List of email recipients for notifications. -#### EMAIL_RECIPIENTS_INPUT +### EMAIL_RECIPIENTS_INPUT Default: `False` ---- +Controls whether users can specify email recipients when sending notifications. -#### USER_API +## Project Settings -Default: `True` +### OVERLAYS ---- - -#### OVERLAYS - -Default: +Default: ```python { 'projects': [ 'projects-table', - 'create-project', + 'create-project',OPTIONSET_PROVIDERS 'import-project', 'support-info' ], @@ -292,9 +287,9 @@ Default: } ``` ---- +Controls which UI elements are displayed in different project contexts. -#### EXPORT_FORMATS +### EXPORT_FORMATS Default: @@ -311,33 +306,25 @@ Default: ) ``` ---- +List of supported export formats for project data. -#### EXPORT_REFERENCE_ODT_VIEWS +### EXPORT_REFERENCE_ODT_VIEWS Default `{}` ---- - -#### EXPORT_REFERENCE_DOCX_VIEWS +### EXPORT_REFERENCE_DOCX_VIEWS Default `{}` ---- - -#### EXPORT_REFERENCE_ODT +### EXPORT_REFERENCE_ODT Default: `None` ---- - -#### EXPORT_REFERENCE_DOCX +### EXPORT_REFERENCE_DOCX Default: `None` ---- - -#### EXPORT_PANDOC_ARGS +### EXPORT_PANDOC_ARGS Default: @@ -348,39 +335,39 @@ Default: } ``` ---- +Arguments passed to pandoc when converting documents to different formats. -#### EXPORT_CONTENT_DISPOSITION +### EXPORT_CONTENT_DISPOSITION Default `'attachment'` ---- +Controls how exported files are handled by the browser. -#### PROJECT_TABLE_PAGE_SIZE +### PROJECT_TABLE_PAGE_SIZE Default: `20` ---- +Number of projects to display per page in project tables. -#### PROJECT_ISSUES +### PROJECT_ISSUES Default: `True` ---- +Enables or disables the issue tracking system for projects. -#### PROJECT_ISSUE_PROVIDERS +### PROJECT_ISSUE_PROVIDERS Default: `[]` ---- +List of issue providers that can be used for project issues. -#### PROJECT_VIEWS +### PROJECT_VIEWS Default: `True` ---- +Enables or disables the project views feature. -#### PROJECT_EXPORTS +### PROJECT_EXPORTS Default: @@ -393,15 +380,13 @@ Default: ] ``` ---- +List of supported project export formats. -#### PROJECT_SNAPSHOT_EXPORTS +### PROJECT_SNAPSHOT_EXPORTS Default: `[]` ---- - -#### PROJECT_IMPORTS +### PROJECT_IMPORTS Default: `[]` @@ -411,129 +396,129 @@ Default: `[]` ] ``` ---- +List of supported project import formats. -#### PROJECT_IMPORTS_LIST +### PROJECT_IMPORTS_LIST Default: `[]` ---- - -#### PROJECT_QUESTIONS_AUTOSAVE +### PROJECT_QUESTIONS_AUTOSAVE Default: `True` ---- +Controls whether project question responses are automatically saved while users are filling out forms. -#### PROJECT_QUESTIONS_CYCLE_SETS +### PROJECT_QUESTIONS_CYCLE_SETS Default: `False` ---- +Controls whether cycle sets are enabled for project questions. -#### PROJECT_FILE_QUOTA +### PROJECT_FILE_QUOTA Default: `'10Mb'` ---- +Controls the maximum amount of storage space that can be used by files attached to projects. -#### PROJECT_SEND_ISSUE +### PROJECT_SEND_ISSUE Default: `False` ---- +Enables or disables sending issues to users. -#### PROJECT_INVITE_TIMEOUT +### PROJECT_INVITE_TIMEOUT Default: `None` ---- +Timeout for project invitations. -#### PROJECT_SEND_INVITE +### PROJECT_SEND_INVITE Default: `True` ---- +Enables or disables sending invitations to users. -#### PROJECT_REMOVE_VIEWS +### PROJECT_REMOVE_VIEWS Default: `True` ---- +Enables or disables removal of views from projects. -#### PROJECT_CREATE_RESTRICTED +### PROJECT_CREATE_RESTRICTED Default: `False` ---- +The `PROJECT_CREATE_RESTRICTED` setting is a boolean flag that controls whether project creation is restricted in an RDMO instance. -#### PROJECT_CREATE_GROUPS +### PROJECT_CREATE_GROUPS Default: `[]` ---- +The `PROJECT_CREATE_GROUPS` setting is used to restrict who can create new projects in an RDMO instance. It's part of a broader project creation restriction system that includes the `PROJECT_CREATE_RESTRICTED` setting. -#### PROJECT_VALUES_CONFLICT_THRESHOLD +### PROJECT_VALUES_CONFLICT_THRESHOLD Default: `0.01` ---- +A time delta in seconds for detecting conflicts in project values in case multiple users edit the same project values simultaneously. -#### NESTED_PROJECTS +### NESTED_PROJECTS Default: `True` ---- +Enables or disables nested projects. -#### OPTIONSET_PROVIDERS +### OPTIONSET_PROVIDERS Default: `[]` ---- +List of option set providers. -#### PROJECT_VALUES_VALIDATION +## Validation Settings + +### PROJECT_VALUES_VALIDATION Default: `False` ---- +Enables or disables validation of project values. -#### PROJECT_VALUES_VALIDATION_URL +### PROJECT_VALUES_VALIDATION_URL Default: `True` ---- +Enables or disables URL validation. -#### PROJECT_VALUES_VALIDATION_INTEGER +### PROJECT_VALUES_VALIDATION_INTEGER Default: `True` ---- +Enables or disables integer validation. -#### PROJECT_VALUES_VALIDATION_INTEGER_MESSAGE +### PROJECT_VALUES_VALIDATION_INTEGER_MESSAGE Default: `_('Enter a valid integer.')` ---- +Error message for integer validation. -#### PROJECT_VALUES_VALIDATION_INTEGER_REGEX +### PROJECT_VALUES_VALIDATION_INTEGER_REGEX Default: `re.compile(r'^[+-]?\d+$')` ---- +Regular expression for integer validation. -#### PROJECT_VALUES_VALIDATION_FLOAT +### PROJECT_VALUES_VALIDATION_FLOAT Default: `True` ---- +Enables or disables float validation. -#### PROJECT_VALUES_VALIDATION_FLOAT_MESSAGE +### PROJECT_VALUES_VALIDATION_FLOAT_MESSAGE Default: `_('Enter a valid float.')` ---- +Error message for float validation. -#### PROJECT_VALUES_VALIDATION_FLOAT_REGEX +### PROJECT_VALUES_VALIDATION_FLOAT_REGEX Default: @@ -553,39 +538,39 @@ re.compile(r''' ''', re.VERBOSE) ``` ---- +Regular expression for float validation. -#### PROJECT_VALUES_VALIDATION_BOOLEAN +### PROJECT_VALUES_VALIDATION_BOOLEAN Default: `True` ---- +Enables or disables boolean validation. -#### PROJECT_VALUES_VALIDATION_BOOLEAN_MESSAGE +### PROJECT_VALUES_VALIDATION_BOOLEAN_MESSAGE Default: `_('Enter a valid boolean (e.g. 0, 1).')` ---- +Error message for boolean validation. -#### PROJECT_VALUES_VALIDATION_BOOLEAN_REGEX +### PROJECT_VALUES_VALIDATION_BOOLEAN_REGEX Default: `r'(?i)^(0|1|f|t|false|true)$'` ---- +Regular expression for boolean validation. -#### PROJECT_VALUES_VALIDATION_DATE +### PROJECT_VALUES_VALIDATION_DATE Default: `True` ---- +Enables or disables date validation. -#### PROJECT_VALUES_VALIDATION_DATE_MESSAGE +### PROJECT_VALUES_VALIDATION_DATE_MESSAGE Default: `_('Enter a valid date (e.g. "02.03.2024", "03/02/2024", "2024-02-03").')` ---- +Error message for date validation. -#### PROJECT_VALUES_VALIDATION_DATE_REGEX +### PROJECT_VALUES_VALIDATION_DATE_REGEX Default: @@ -599,33 +584,33 @@ re.compile(r''' ''', re.VERBOSE) ``` ---- +Regular expression for date validation. -#### PROJECT_VALUES_VALIDATION_DATETIME +### PROJECT_VALUES_VALIDATION_DATETIME Default: `True` ---- +Enables or disables datetime validation. -#### PROJECT_VALUES_VALIDATION_EMAIL +### PROJECT_VALUES_VALIDATION_EMAIL Default: `True` ---- +Enables or disables email validation. -#### PROJECT_VALUES_VALIDATION_PHONE +### PROJECT_VALUES_VALIDATION_PHONE Default: `True` ---- +Enables or disables phone number validation. -#### PROJECT_VALUES_VALIDATION_PHONE_MESSAGE +### PROJECT_VALUES_VALIDATION_PHONE_MESSAGE Default: `_('Enter a valid phone number (e.g. "123456" or "+49 (0) 30 123456").')` ---- +Error message for phone number validation. -#### PROJECT_VALUES_VALIDATION_PHONE_REGEX +### PROJECT_VALUES_VALIDATION_PHONE_REGEX Default: @@ -637,16 +622,18 @@ re.compile(r''' ''', re.VERBOSE) ``` ---- +Regular expression for phone number validation. + +## Other Settings -#### DEFAULT_URI_PREFIX +### DEFAULT_URI_PREFIX Default: `'http://example.com/terms'` ---- +Default URI prefix used for terms and conditions. -#### REPLACE_MISSING_TRANSLATION +### REPLACE_MISSING_TRANSLATION Default: `False` ---- \ No newline at end of file +Controls whether missing translations should be replaced with the default language version.