Releases: rdmorganiser/rdmo
2.4.4
How to upgrade
pip install --upgrade rdmo
python manage.py upgradeChangelog 📔
Bug fixes 🐛
Due to a breaking change in Django Rest Framework 3.17.0 several bugs needed to be fixed (#1567):
- Refactor
REST_FRAMEWORKsettings - Fix page serializers
- Pin Django Rest Framework minor version
Milestones: 2.4.4
2.4.3
How to upgrade
pip install --upgrade rdmo
python manage.py upgradeChangelog 📔
Update Mar 23, 2026 🚨
Due to an unfortunate update in Django Rest Framework (see #1567) it needs to be downgraded after installation or upgrade to work with RDMO 2.4.3:
pip install `djangorestframwork~=3.16.0`Important ⚠️
Due to an error in our release process, RDMO 2.4.1 and RDMO 2.4.2 used an outdated Node.js
version to build the front-end assets.
Breaking changes ⚠️
(same as for RDMO 2.4.2)
Only if you use django-allauth, e.g. for the login with ORCID: The current django-allauth version does not trust the X-Forwarded-For header anymore (release note). The header for the IP of the client needs to be set manually in RDMO:
ALLAUTH_TRUSTED_CLIENT_IP_HEADER = "X-Forwarded-For"
Maintenance and Dependencies 🔧
- Fix
npmmanagement script and build with correct node version. - Upgrade
nodefrom22.16to22.22 - Upgrade copy-webpack-plugin upgrade.
Milestones:
2.4.3
Commit history: 2.4.2...2.4.3
2.4.2
How to upgrade
pip install --upgrade rdmo
python manage.py upgradeChangelog 📔
Breaking changes ⚠️
Only if you use django-allauth, e.g. for the login with ORCID: The current django-allauth version does not trust the X-Forwarded-For header anymore (release note). The header for the IP of the client needs to be set manually in RDMO:
ALLAUTH_TRUSTED_CLIENT_IP_HEADER = "X-Forwarded-For"
Maintenance and Dependencies 🔧
- Revert copy-webpack-plugin upgrade, which caused missing static files in RDMO 2.4.1.
- Add additional checks to
buildmanagement script.
Commit history: 2.4.1...2.4.2
2.4.1
How to upgrade
pip install --upgrade rdmo
python manage.py upgradeChangelog 📔
Breaking changes ⚠️
- Plugins should now use the signals in
rdmo/projects/signals.pyinstead ofpost_saveof theValuemodel, since
the latter will trigger when copying projects or creating snapshots, which leads to unintended creation of
Valueinstances (see rdmorganiser/rdmo-plugins-orcid#2).
Bug fixes 🐛
- Fix filtering of tasks and views when creating new projects and refactor sync functionality (#1518).
- Fix removal of blank inputs in the interview (#1532).
- Fix manual input of dates in the date picker widget in the interview and the filter in the projects table (#1539).
- Fix catalog export template.
- Fix timestamps of snapshots in copied projects: Snapshots and values will keep their original
createdtimestamp, but will update theirupdatedtimestamp.
Commit history: 2.4.0...2.4.1
2.4.0
How to upgrade
pip install --upgrade rdmo
python manage.py upgradeChangelog 📔
Main improvements ⭐
- Rewrite progress bar and navigation using a new
AnswerTreeclass (#1346) - Allow links in select dropdown by optionset provider plugins (#1408)
Breaking changes ⚠️
- The filtering behaviour of sites in a multisite setup for catalogs, tasks and views was changed (#1488).
From now on, but only whensettings.MULTISITE = True, a catalog that does not have any sites associated
with it will not be available to any site. Before those catalogs were available to all sites. For non-multisite
instances, this behaviour will not change. A data migration for catalogs is included in this release, so that
no extra action is required when updating. - The rules
is_editor_for_current_siteandis_reviewer_for_current_site(which might be used in templates) were
removed and the equivalentis_editorandis_reviewercan be used instead (#1431).
Bug fixes 🐛
- Fix a bug with the autosave of checkboxes, radio buttons and additional input (#1406)
- Fix a bug where text and icons overlap in the interview (#1398)
- Fix datepicker date conversion in interview (#1465)
- Fix a bug with legacy management permissions and disable the latter in a multisite setup (#1425)
- Fix a bug with verbose name that contain a space (#1453)
- Fix a bug with site availability of catalogs in a multisite setup (#1481)
Translations 🌍
- Consistent naming of "Tabs" in every language (#1459)
- Language improvements in the French localisation (#1397)
- Several minor fixes (#1411, #1424)
Maintenance and Dependencies 🔧
- Drop support for Python 3.9
- Add
allandrecommendeddependency groups - Ignore fewer
ruffrules (B007,B006,B018) - Use zizmor to harden CI setup
- Update
poeditmanagement script to work on macOS - Add checks for shibboleth setup (#1407)
- Add cookies to window (#1473)
- Use dynamic versioning (#1486)
Commit history: 2.3.2...2.4.0
2.3.2
How to upgrade
pip install --upgrade rdmo
python manage.py upgrade
Changelog 📔
RDMO 2.3.2 (July 4, 2025)
- Improve ORCID branding display and social connections page (#1376)
- Hide management panels by default (#1377)
- Fix sets in the interview (#1367)
- Fix copy value and apply only to empty sets (#1384)
- Fix compute progress for non-empty values (#1374)
- Fix bugs in sync of project tasks and views (#1362)
- Added management command
./manage.py sync_projects, with flags--tasks,--viewsor--show
- Added management command
- Fix scroll focus (#1372)
- Fix options in project export (use
uri_path) - Fix historical typo in naming of
QuerySetclasses - Add a PNG version of the logo
Maintenance and Dependencies 🔧
- Removed dependency on
pytzfrom management commands (#1382) - Refactor export tests and include tests code in coverage (#1319)
- Update NodeJS version to 22 LTS (#1371)
Important changes to templates 🔧
In RDMO 2.3.0, we made changes to the core/base.html template. If changed this file in you local theme you need to update it accordingly. At the top, the current language is set at an attribute to <html>:
{% load static compress core_tags i18n %}{% get_current_language as lang_code %}<!DOCTYPE html>
<html lang="{{ lang_code }}">The {% block vendor %} needs to be removed.
The {% block css %} now looks like this:
{% block css %}
<link rel="stylesheet" href="{% static 'core/css/base.css' %}" />
{% compress css %}
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/base.scss' %}" />
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/fonts.scss' %}" />
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/footer.scss' %}" />
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/style.scss' %}" />
{% endcompress %}
{% endblock %}And the {% block js %} now looks like this:
{% block js %}
<script src="{% url 'javascript-catalog' %}"></script>
<script src="{% static 'core/js/base.js' %}"></script>
{% endblock %}See https://github.com/rdmorganiser/rdmo/blob/2.3.0/rdmo/core/templates/core/base.html for the file in the 2.3.0 branch.
We also changed slightly changed the projects/project_detail_sidebar.html template. If changed this file in you local theme you need to update it and change the url name project_question to project_interview:
...
<ul class="list-unstyled">
<li id="project-questions">
<strong>
{% if can_change_value %}
<a href="{% url 'project_interview' project.pk %}">{% trans 'Answer questions' %}</a>
{% else %}
<a href="{% url 'project_interview' project.pk %}">{% trans 'View questions' %}</a>
{% endif %}
</strong>
</li>
</ul>
...2.3.1
How to upgrade
pip install --upgrade rdmo
python manage.py upgrade
Changelog 📔
RDMO 2.3.1 (May 16, 2025)
- Allow / in the URI path of conditions, tasks, and views (#1316)
- Add /api/v1/projects/projects/user/ endpoint and refactor/fix projects table (#1318)
- Add options endpoint to API list (#1313)
- Use ACCOUNT_SIGNUP_FIELDS instead of ACCOUNT_EMAIL_REQUIRED (#1322)
- Use SESSION_COOKIE_* settings for store_id cookie (#1321)
- Fix translations (#1317)
- Fix badge-optional and move interview-block-options
- Improve styling for empty question sets (without questions)
- Clean tags and special html characters in contact message
- Fix interview management panels by fixing
configureStore(#1314) - Fix copy of elements in management interface for multisite (#1339)
- Fix bug when reference documents are configured as strings (#1341)
- Fix bug in display of warnings at import of catalog elements (#1340)
- Fix bug in display of value and unit in range slider (#1353)
- Fix the resolving of multiple conditional questions in interview
- Fix bug with the back button and conditions
- Fix jumping of cursor when values are stored in the interview
- Fix
{more}functionality (#1351) - Fix focus in interview and scroll to top when changing pages
- Update dependencies
Important changes to templates 🔧
In RDMO 2.3.0, we made changes to the core/base.html template. If changed this file in you local theme you need to update it accordingly. At the top, the current language is set at an attribute to <html>:
{% load static compress core_tags i18n %}{% get_current_language as lang_code %}<!DOCTYPE html>
<html lang="{{ lang_code }}">The {% block vendor %} needs to be removed.
The {% block css %} now looks like this:
{% block css %}
<link rel="stylesheet" href="{% static 'core/css/base.css' %}" />
{% compress css %}
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/base.scss' %}" />
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/fonts.scss' %}" />
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/footer.scss' %}" />
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/style.scss' %}" />
{% endcompress %}
{% endblock %}And the {% block js %} now looks like this:
{% block js %}
<script src="{% url 'javascript-catalog' %}"></script>
<script src="{% static 'core/js/base.js' %}"></script>
{% endblock %}See https://github.com/rdmorganiser/rdmo/blob/2.3.0/rdmo/core/templates/core/base.html for the file in the 2.3.0 branch.
We also changed slightly changed the projects/project_detail_sidebar.html template. If changed this file in you local theme you need to update it and change the url name project_question to project_interview:
...
<ul class="list-unstyled">
<li id="project-questions">
<strong>
{% if can_change_value %}
<a href="{% url 'project_interview' project.pk %}">{% trans 'Answer questions' %}</a>
{% else %}
<a href="{% url 'project_interview' project.pk %}">{% trans 'View questions' %}</a>
{% endif %}
</strong>
</li>
</ul>
...2.3.0
How to upgrade
pip install --upgrade rdmo
python manage.py upgrade
Changelog 📔
- Add new interview interface based on React and Redux (#518)
- Text and Textarea widgets are now saved automatically
- Select dropdown widgets are now always searchable
- Show the unit of a question next to the answer field (#499)
- Tabs (e.g. Datasets) and single values can be reused in different projects.
- An "Apply to all" button can be used to paste information into all the tabs.
- Remove custom widgets feature (remove
QUESTIONS_WIDGETSfrom settings) - Fix several issues regarding the interview (#501, #224, #1191)
- Display attributes in interview to admins, editors, reviewers (#224)
- Improve accessibility (#514, #1199)
- Add the possibility to copy a project including all its values.
- Add the option to make a project "visible" to all users (#152).
- Users interact with visible projects as if they would have the Guest role.
- With the new review feature, this can be used for templates for projects and datasets.
- Sites and groups can be used to restrict this behaviour.
- This feature is enabled by default via the
PROJECT_VISIBILITYsetting
- Add a contact form modal to each question to contact support (#502)
PROJECT_CONTACT = TrueandPROJECT_CONTACT_RECIPIENTS = [list of email strings]
enable this feature
- Add signal handlers to automatically sync of project views and tasks (#345, #966, #1198)
- When
PROJECT_VIEWS_SYNC = TrueorPROJECT_TASKS_SYNC = Trueis set, the views or
tasks for a project are automatically synchronized, depending on the
catalogs configured for them.
- When
- Add snapshot export plugins (which work like project export plugins)
- Add
PROJECT_SNAPSHOT_EXPORTSto settings to register snapshot export plugins
- Add
- Refactor the
acceptfield for project import plugins- The field is now a dict of the form
{'content_type': ['suffix']} - The old form should still work
- The field is now a dict of the form
- Add
rdmo.accounts.middleware.TermsAndConditionsRedirectMiddleware'(#141, #161)- The (optional) middleware checks if a user has already confirmed the Terms of use.
- If not, users need to confirm to proceed.
- Optionally, when a confirmation renewal is required, the
ACCOUNT_TERMS_OF_USE_DATE = '2025-02-25'
can be set to invalidate previous confirmations.
- Add
rdmo-adminscriptrdmo-admin npm run [build:prod|build|watch]can be used to build the front endrdmo-admin buildcan be used to build the python packagerdmo-admin messages [make|compile]can be used create and compile the translationsrdmo-admin cleancan be used remove most files which are not version controlled
- Add the support for custom markdown templates injected into help texts
- The code
{{ code }}is replaced by a template specified in theMARKDOWN_TEMPLATESsetting - The `TEMPLATES_EXECUTE_SCRIPT_TAGS' setting controls whether Java script code can be executed.
- The code
- Add minimum required version to RDMO XML exports (#1205).
- Use the
uriinstead ofpathfor attributes in the Django admin interface. - Fix a set of bugs where the maximum length of a field was not correctly validated by the API.
- Use
lualatexwhen usingPandoc >= 3.0. - Remove the
download_vendor_filesstep of the setup- Remove
VENDORandVENDOR_CDNfrom settings.
- Remove
- Remove
django-rest-swaggerdependency and adddrf-spectacularas an optional dependency.- Can be installed with
pip install rdmo[openapi].
- Can be installed with
- Update Python and JavaScript dependencies.
- Drop support for Python 3.8.
Breaking Changes ⚠️
rdmo/accounts/adapter.pyis renamed toaccount.py- Updates to
core/base.htmlandprojects/project_detail_sidebar.html, see below.
Maintenance 🛠️
- webpack: added
build:dist, fails on non-performance warnings (#1197)
Important changes to rdmo-app 🔧
Since django-swagger is not used anymore, it needs to be removed from the urlpatterns in config/urls.py.
urlpatterns = [
...
path('api/v1/', include('rdmo.core.urls.swagger')), <- remove this line
...
]
How to setup the new, optional drf-spectacular interface is described here: https://rdmo.readthedocs.io/en/latest/configuration/openapi.html.
Important changes to templates 🔧
In RDMO 2.3.0, we made changes to the core/base.html template. If changed this file in you local theme you need to update it accordingly. At the top, the current language is set at an attribute to <html>:
{% load static compress core_tags i18n %}{% get_current_language as lang_code %}<!DOCTYPE html>
<html lang="{{ lang_code }}">The {% block vendor %} needs to be removed.
The {% block css %} now looks like this:
{% block css %}
<link rel="stylesheet" href="{% static 'core/css/base.css' %}" />
{% compress css %}
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/base.scss' %}" />
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/fonts.scss' %}" />
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/footer.scss' %}" />
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/style.scss' %}" />
{% endcompress %}
{% endblock %}And the {% block js %} now looks like this:
{% block js %}
<script src="{% url 'javascript-catalog' %}"></script>
<script src="{% static 'core/js/base.js' %}"></script>
{% endblock %}See https://github.com/rdmorganiser/rdmo/blob/2.3.0/rdmo/core/templates/core/base.html for the file in the 2.3.0 branch.
We also changed slightly changed the projects/project_detail_sidebar.html template. If changed this file in you local theme you need to update it and change the url name project_question to project_interview:
...
<ul class="list-unstyled">
<li id="project-questions">
<strong>
{% if can_change_value %}
<a href="{% url 'project_interview' project.pk %}">{% trans 'Answer questions' %}</a>
{% else %}
<a href="{% url 'project_interview' project.pk %}">{% trans 'View questions' %}</a>
{% endif %}
</strong>
</li>
</ul>
...2.3.0rc2
How to upgrade
pip install --upgrade rdmo==2.3.0rc2
python manage.py upgrade
Important changes to templates
In RDMO 2.3.0, we made changes to the core/base.html template. If changed this file in you local theme you need to update it accordingly. At the top, the current language is set at an attribute to <html>:
{% load static compress core_tags i18n %}{% get_current_language as lang_code %}<!DOCTYPE html>
<html lang="{{ lang_code }}">The {% block vendor %} needs to be removed.
The {% block css %} now looks like this:
{% block css %}
<link rel="stylesheet" href="{% static 'core/css/base.css' %}" />
{% compress css %}
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/base.scss' %}" />
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/fonts.scss' %}" />
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/footer.scss' %}" />
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/style.scss' %}" />
{% endcompress %}
{% endblock %}And the {% block js %} now looks like this:
{% block js %}
<script src="{% url 'javascript-catalog' %}"></script>
<script src="{% static 'core/js/base.js' %}"></script>
{% endblock %}See https://github.com/rdmorganiser/rdmo/blob/2.3.0/rdmo/core/templates/core/base.html for the file in the 2.3.0 branch.
We also changed slightly changed the projects/project_detail_sidebar.html template. If changed this file in you local theme you need to update it and change the url name project_question to project_interview:
...
<ul class="list-unstyled">
<li id="project-questions">
<strong>
{% if can_change_value %}
<a href="{% url 'project_interview' project.pk %}">{% trans 'Answer questions' %}</a>
{% else %}
<a href="{% url 'project_interview' project.pk %}">{% trans 'View questions' %}</a>
{% endif %}
</strong>
</li>
</ul>
...Changelog
- Add new interview interface based on React and Redux (#518)
- Text and Textarea widgets are now saved automatically
- Select dropdown widgets are now always searchable
- Show the unit of a question next to the answer field (#499)
- Tabs (e.g. Datasets) and single values can be reused in different projects.
- An "Apply to all" button can be used to paste information into all the tabs.
- Remove custom widgets feature (remove
QUESTIONS_WIDGETSfrom settings) - Fix several issues regarding the interview (#501, #224, #1191)
- Display attributes in interview to admins, editors, reviewers (#224)
- Improve accessibility (#514, #1199)
- Add the possibility to copy a project including all its values.
- Add the option to make a project "visible" to all users (#152).
- Users interact with visible projects as if they would have the Guest role.
- With the new review feature, this can be used for templates for projects and datasets.
- Sites and groups can be used to restrict this behaviour.
- This feature is enabled by default via the
PROJECT_VISIBILITYsetting
- Add a contact form modal to each question to contact support (#502)
PROJECT_CONTACT = TrueandPROJECT_CONTACT_RECIPIENTS = [list of email strings]
enable this feature
- Add signal handlers to automatically sync of project views and tasks (#345, #966, #1198)
- When
PROJECT_VIEWS_SYNC = TrueorPROJECT_TASKS_SYNC = Trueis set, the views or
tasks for a project are automatically synchronized, depending on the
catalogs configured for them.
- When
- Add snapshot export plugins (which work like project export plugins)
- Add
PROJECT_SNAPSHOT_EXPORTSto settings to register snapshot export plugins
- Add
- Refactor the
acceptfield for project import plugins- The field is now a dict of the form
{'content_type': ['suffix']} - The old form should still work
- The field is now a dict of the form
- Add
rdmo.accounts.middleware.TermsAndConditionsRedirectMiddleware'(#141, #161)- The (optional) middleware checks if a user has already confirmed the Terms of use.
- If not, users need to confirm to proceed.
- Optionally, when a confirmation renewal is required, the
ACCOUNT_TERMS_OF_USE_DATE = '2025-02-25'
can be set to invalidate previous confirmations.
- Add
rdmo-adminscriptrdmo-admin npm run [build:prod|build|watch]can be used to build the front endrdmo-admin buildcan be used to build the python packagerdmo-admin messages [make|compile]can be used create and compile the translationsrdmo-admin cleancan be used remove most files which are not version controlled
- Add the support for custom markdown templates injected into help texts
- The code
{{ code }}is replaced by a template specified in theMARKDOWN_TEMPLATESsetting - The `TEMPLATES_EXECUTE_SCRIPT_TAGS' setting controls whether Java script code can be executed.
- The code
- Add minimum required version to RDMO XML exports (#1205).
- Use the
uriinstead ofpathfor attributes in the Django admin interface. - Fix a set of bugs where the maximum length of a field was not correctly validated by the API.
- Use
lualatexwhen usingPandoc >= 3.0. - Remove the
download_vendor_filesstep of the setup- Remove
VENDORandVENDOR_CDNfrom settings.
- Remove
- Remove
PROJECT_QUESTIONS_AUTOSAVEandPROJECT_QUESTIONS_CYCLE_SETS. - Update Python and JavaScript dependencies.
- Drop support for Python 3.8.
2.3.0rc1
How to upgrade
pip install --upgrade rdmo==2.3.0rc1
python manage.py upgrade
Important changes to templates
In RDMO 2.3.0, we made changes to the core/base.html template. If changed this file in you local theme you need to update it accordingly. At the top, the current language is set at an attribute to <html>:
{% load static compress core_tags i18n %}{% get_current_language as lang_code %}<!DOCTYPE html>
<html lang="{{ lang_code }}">The {% block vendor %} needs to be removed.
The {% block css %} now looks like this:
{% block css %}
<link rel="stylesheet" href="{% static 'core/css/base.css' %}" />
{% compress css %}
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/base.scss' %}" />
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/fonts.scss' %}" />
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/footer.scss' %}" />
<link rel="stylesheet" type="text/x-scss" href="{% static 'core/css/style.scss' %}" />
{% endcompress %}
{% endblock %}And the {% block js %} now looks like this:
{% block js %}
<script src="{% url 'javascript-catalog' %}"></script>
<script src="{% static 'core/js/base.js' %}"></script>
{% endblock %}See https://github.com/rdmorganiser/rdmo/blob/2.3.0/rdmo/core/templates/core/base.html for the file in the 2.3.0 branch.
We also changed slightly changed the projects/project_detail_sidebar.html template. If changed this file in you local theme you need to update it and change the url name project_question to project_interview:
...
<ul class="list-unstyled">
<li id="project-questions">
<strong>
{% if can_change_value %}
<a href="{% url 'project_interview' project.pk %}">{% trans 'Answer questions' %}</a>
{% else %}
<a href="{% url 'project_interview' project.pk %}">{% trans 'View questions' %}</a>
{% endif %}
</strong>
</li>
</ul>
...Changelog
- Add new interview interface based on React and Redux (#518)
- Text and Textarea widgets are now saved automatically
- Select dropdown widgets are now always searchable
- Show the unit of a question next to the answer field (#499)
- Tabs (e.g. Datasets) and single values can be reused in different projects.
- An "Apply to all" button can be used to paste information into all the tabs.
- Remove custom widgets feature (remove
QUESTIONS_WIDGETSfrom settings) - Fix several issues regarding the interview (#501, #224, #1191)
- Display attributes in interview to admins, editors, reviewers (#224)
- Improve accessibility (#514, #1199)
- Add the possibility to copy a project including all its values.
- Add the option to make a project "visible" to all users (#152).
- Users interact with visible projects as if they would have the Guest role.
- With the new review feature, this can be used for templates for projects and datasets.
- Sites and groups can be used to restrict this behaviour.
- This feature is enabled by default via the
PROJECT_VISIBILITYsetting
- Add a contact form modal to each question to contact support (#502)
PROJECT_CONTACT = TrueandPROJECT_CONTACT_RECIPIENTS = [list of email strings]
enable this feature
- Add signal handlers to automatically sync of project views and tasks (#345, #966, #1198)
- When
PROJECT_VIEWS_SYNC = TrueorPROJECT_TASKS_SYNC = Trueis set, the views or
tasks for a project are automatically synchronized, depending on the
catalogs configured for them.
- When
- Add snapshot export plugins (which work like project export plugins)
- Add
PROJECT_SNAPSHOT_EXPORTSto settings to register snapshot export plugins
- Add
- Refactor the
acceptfield for project import plugins- The field is now a dict of the form
{'content_type': ['suffix']} - The old form should still work
- The field is now a dict of the form
- Add
rdmo.accounts.middleware.TermsAndConditionsRedirectMiddleware'(#141, #161)- The (optional) middleware checks if a user has already confirmed the Terms of use.
- If not, users need to confirm to proceed.
- Optionally, when a confirmation renewal is required, the
ACCOUNT_TERMS_OF_USE_DATE = '2025-02-25'
can be set to invalidate previous confirmations.
- Add
rdmo-adminscriptrdmo-admin npm run [build:prod|build|watch]can be used to build the front endrdmo-admin buildcan be used to build the python packagerdmo-admin messages [make|compile]can be used create and compile the translationsrdmo-admin cleancan be used remove most files which are not version controlled
- Add the support for custom markdown templates injected into help texts
- The code
{{ code }}is replaced by a template specified in theMARKDOWN_TEMPLATESsetting - The `TEMPLATES_EXECUTE_SCRIPT_TAGS' setting controls whether Java script code can be executed.
- The code
- Add minimum required version to RDMO XML exports (#1205).
- Use the
uriinstead ofpathfor attributes in the Django admin interface. - Fix a set of bugs where the maximum length of a field was not correctly validated by the API.
- Use
lualatexwhen usingPandoc >= 3.0. - Remove the
download_vendor_filesstep of the setup- Remove
VENDORandVENDOR_CDNfrom settings.
- Remove
- Remove
PROJECT_QUESTIONS_AUTOSAVEandPROJECT_QUESTIONS_CYCLE_SETS. - Update Python and JavaScript dependencies.
- Drop support for Python 3.8.