From 41d469da9c91acce07b1bdef56ecba53094ac16f Mon Sep 17 00:00:00 2001 From: Mikko Nieminen Date: Tue, 16 Jul 2024 16:39:38 +0200 Subject: [PATCH] update docs (#1389) --- .../_static/app_projectroles/sodar_login.png | Bin 13098 -> 17428 bytes docs/source/app_projectroles_usage.rst | 12 ++++---- docs/source/app_timeline_usage.rst | 10 +++--- docs/source/dev_project_app.rst | 8 ++--- docs/source/major_changes.rst | 29 +++++++++--------- 5 files changed, 29 insertions(+), 30 deletions(-) diff --git a/docs/source/_static/app_projectroles/sodar_login.png b/docs/source/_static/app_projectroles/sodar_login.png index 4bfcb197f0cb0f272001bdbe5d6c45bdefefa506..620e1c01c469b3bcb16be466038790c8260e1acf 100644 GIT binary patch literal 17428 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 literal 13098 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 diff --git a/docs/source/app_projectroles_usage.rst b/docs/source/app_projectroles_usage.rst index 785ce6b9..3dc43c44 100644 --- a/docs/source/app_projectroles_usage.rst +++ b/docs/source/app_projectroles_usage.rst @@ -27,6 +27,12 @@ One can either log in using a local Django user or, if LDAP/AD is enabled, their LDAP/AD credentials from a supported site. In the latter case, the user domain must be appended to the user name in form of ``user@DOMAIN``. +If OpenID Connect (OIDC) single-sign on authentication is enabled, an extra +login element will be displayed next to the standard login controls. This will +take the user to the login view of the OIDC provider. The element can be +replaced with a custom template to e.g. use specific graphics recommended by the +provider. + .. figure:: _static/app_projectroles/sodar_login.png :align: center :scale: 75% @@ -325,12 +331,6 @@ and the user email domain is not associated with configured LDAP domains. Invites expire after a certain time and can be reissued or revoked on the :guilabel:`Project Invites` page. -.. note:: - - If the site enables both LDAP and OpenID Connect (OIDC) authentication, - LDAP will take precedent over OIDC login in invites if a configured LDAP - domain is recognized in the user email address. - Batch Member Modifications -------------------------- diff --git a/docs/source/app_timeline_usage.rst b/docs/source/app_timeline_usage.rst index 7712530b..4699b688 100644 --- a/docs/source/app_timeline_usage.rst +++ b/docs/source/app_timeline_usage.rst @@ -156,9 +156,9 @@ Defining Status States need to pay attention to this functionality right now. By default, ``timeline.add_event()`` treats events as synchronous and -automatically saves them with the status of ``TL_STATUS_OK``. However, in case of e.g. -asynchronous requests, you can alter this by setting the ``status_type`` and -(optionally) ``status_desc`` types upon creation. +automatically saves them with the status of ``TL_STATUS_OK``. However, in case +of e.g. asynchronous requests, you can alter this by setting the ``status_type`` +and (optionally) ``status_desc`` types upon creation. .. code-block:: python @@ -182,8 +182,8 @@ Currently supported status types are listed below, some only applicable to async events: - ``TL_STATUS_OK``: All OK, event successfully performed -- ``TL_STATUS_INFO``: Used for events which do not change anything, e.g. viewing something - within an app +- ``TL_STATUS_INFO``: Used for events which do not change anything, e.g. viewing + something within an app - ``TL_STATUS_INIT``: Initializing the event in progress - ``TL_STATUS_SUBMIT``: Event submitted asynchronously - ``TL_STATUS_FAILED``: Asynchronous event submission failed diff --git a/docs/source/dev_project_app.rst b/docs/source/dev_project_app.rst index 165b1bc5..00c32c68 100644 --- a/docs/source/dev_project_app.rst +++ b/docs/source/dev_project_app.rst @@ -643,10 +643,10 @@ use e.g. ``all`` as your only category. Example of a return data: # ... return [ PluginSearchResult( - 'category': 'all', # Category ID to be used in your search template - 'title': 'List title', # Title of the result set - 'search_types': [], # Object types included in this category - 'items': [], # List or QuerySet of objects returned by search + category='all', # Category ID to be used in your search template + title='List title', # Title of the result set + search_types=[], # Object types included in this category + items=[], # List or QuerySet of objects returned by search ) ] diff --git a/docs/source/major_changes.rst b/docs/source/major_changes.rst index 80501687..ed9c8016 100644 --- a/docs/source/major_changes.rst +++ b/docs/source/major_changes.rst @@ -51,11 +51,11 @@ Django v4.2 Upgrade ------------------- This release updates SODAR Core from Django v3.2 to v4.2. This is a breaking -change which causes many updates and also potentially requires updating several +change which causes many updates and also requires updating several dependencies. -To upgrade, please update the Django requirement along with your site's other -Python requirements to match ones in ``requirements/*.txt``. See +Please update the Django requirement along with your site's other Python +requirements to match ones in ``requirements/*.txt``. See `Django deprecation documentation `_ for details about what has been deprecated in Django and which changes are mandatory. @@ -74,13 +74,13 @@ System Prerequisites -------------------- PostgreSQL - The minimum required PostgreSQL version has been bumped to v12. In CI we - currently use PostgreSQL v16, but anything from v12 to above should work - with this SODAR Core release. It is strongly recommended to make backups of - your production databases before upgrading. + The minimum required PostgreSQL version has been bumped to v12. We recommend + PostgreSQL v16 which is used in CI for this repo. However, any version from + v12 onwards should work with this release. We strongly recommended to make + backups of your production databases before upgrading. Python v3.11 Support Added - Python v3.11 support has been officially added in this version. 3.11 is now - also the recommended Python version to use. + Python v3.11 support has been officially added in this version. 3.11 is also + the recommended Python version. Python v3.8 Support Dropped This release no longer supports Python v3.8. General Python Dependencies @@ -91,11 +91,11 @@ General Python Dependencies REST API Versioning Overhaul ---------------------------- -The REST API versioning system has been overhauled in this release. Before, we -used two separate accept header versioning systems: 1) API views in SODAR Core -apps with ``CORE_API_MEDIA_TYPE``, and 2) API views of the site built on SODAR -Core with ``SODAR_API_MEDIA_TYPE``. The version number has been expected to -match the SODAR Core or the site version number, respectively. +The REST API versioning system has been overhauled. Before, we used two separate +accept header versioning systems: 1) API views in SODAR Core apps with +``CORE_API_MEDIA_TYPE``, and 2) API views of the site built on SODAR Core with +``SODAR_API_MEDIA_TYPE``. The version number has been expected to match the +SODAR Core or the site version number, respectively. In the new system there are two critical changes to this versioning scheme: @@ -194,7 +194,6 @@ If your site only accesses these models through ``TimelineAPI`` and ``TimelineAPI.get_model()``, which is the strongly recommended way, no changes should be required. - AppSettingAPI Plugin Name Arguments Updated -------------------------------------------