diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 86e33b82..e671b553 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -5,6 +5,25 @@ Changelog for the SODAR project. Loosely follows the `Keep a Changelog `_ guidelines. +v0.15.1 (2024-09-12) +==================== + +Changed +------- + +- **Samplesheets** + - Upgrade Vue app dependencies (#1986) + +Fixed +----- + +- **Landingzones** + - Invalid CSS classes set by zone status update (#1995) +- **Samplesheets** + - ``generic`` assay plugin inline links pointing to ``ResultsReports`` (#1982) + - ``generic`` assay plugin cache update crash with row path built from ontology column (#1984) + + v0.15.0 (2024-08-08) ==================== diff --git a/config/settings/base.py b/config/settings/base.py index 940142d9..02694f2b 100644 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -611,7 +611,7 @@ def set_logging(level=None): # General API settings -SODAR_API_DEFAULT_VERSION = '0.15.0' +SODAR_API_DEFAULT_VERSION = '0.15.1' SODAR_API_ALLOWED_VERSIONS = [ '0.7.0', '0.7.1', @@ -634,6 +634,7 @@ def set_logging(level=None): '0.14.1', '0.14.2', '0.15.0', + '0.15.1', ] SODAR_API_MEDIA_TYPE = 'application/vnd.bihealth.sodar+json' SODAR_API_DEFAULT_HOST = env.url( diff --git a/docs_manual/source/api_documentation.rst b/docs_manual/source/api_documentation.rst index d3a24676..958920d9 100644 --- a/docs_manual/source/api_documentation.rst +++ b/docs_manual/source/api_documentation.rst @@ -45,7 +45,7 @@ expected version. .. code-block:: console - Accept: application/vnd.bihealth.sodar+json; version=0.15.0 + Accept: application/vnd.bihealth.sodar+json; version=0.15.1 Specific sections of the SODAR API may require their own accept header. See the exact header requirement in the respective documentation on each section of the diff --git a/docs_manual/source/api_examples.rst b/docs_manual/source/api_examples.rst index 54417255..15b32fc6 100644 --- a/docs_manual/source/api_examples.rst +++ b/docs_manual/source/api_examples.rst @@ -43,7 +43,7 @@ the SODAR API: # Use core_headers for project management API endpoints core_headers = {**auth_header, 'Accept': 'application/vnd.bihealth.sodar-core+json; version=0.13.4'} # Use sodar_headers for sample sheet and landing zone API endpoints - sodar_headers = {**auth_header, 'Accept': 'application/vnd.bihealth.sodar+json; version=0.15.0'} + sodar_headers = {**auth_header, 'Accept': 'application/vnd.bihealth.sodar+json; version=0.15.1'} .. note:: diff --git a/docs_manual/source/api_irodsinfo.rst b/docs_manual/source/api_irodsinfo.rst index 19148d43..355c6f82 100644 --- a/docs_manual/source/api_irodsinfo.rst +++ b/docs_manual/source/api_irodsinfo.rst @@ -22,4 +22,4 @@ SODAR version: .. code-block:: console - Accept: application/vnd.bihealth.sodar+json; version=0.15.0 + Accept: application/vnd.bihealth.sodar+json; version=0.15.1 diff --git a/docs_manual/source/api_landingzones.rst b/docs_manual/source/api_landingzones.rst index de1f53eb..0167fdd8 100644 --- a/docs_manual/source/api_landingzones.rst +++ b/docs_manual/source/api_landingzones.rst @@ -32,4 +32,4 @@ SODAR version: .. code-block:: console - Accept: application/vnd.bihealth.sodar+json; version=0.15.0 + Accept: application/vnd.bihealth.sodar+json; version=0.15.1 diff --git a/docs_manual/source/api_samplesheets.rst b/docs_manual/source/api_samplesheets.rst index b97d8cbf..bbcceb8d 100644 --- a/docs_manual/source/api_samplesheets.rst +++ b/docs_manual/source/api_samplesheets.rst @@ -68,4 +68,4 @@ SODAR version: .. code-block:: console - Accept: application/vnd.bihealth.sodar+json; version=0.15.0 + Accept: application/vnd.bihealth.sodar+json; version=0.15.1 diff --git a/docs_manual/source/conf.py b/docs_manual/source/conf.py index 07530672..8559785a 100644 --- a/docs_manual/source/conf.py +++ b/docs_manual/source/conf.py @@ -26,7 +26,7 @@ author = 'BIH Core Unit Bioinformatics' # The full version, including alpha/beta/rc tags -release = '0.15.0' +release = '0.15.1' # -- General configuration --------------------------------------------------- diff --git a/docs_manual/source/metadata_advanced.rst b/docs_manual/source/metadata_advanced.rst index 5b70a885..1f5eac6e 100644 --- a/docs_manual/source/metadata_advanced.rst +++ b/docs_manual/source/metadata_advanced.rst @@ -179,7 +179,7 @@ investigation file. - Inline links * Comments define semicolon-separated lists of columns to be linked to collections. - * *SODAR Assay Link Results* |rarr| ``ResultsReports`` + * *SODAR Assay Link ResultsReports* |rarr| ``ResultsReports`` * *SODAR Assay Link MiscFiles* |rarr| ``MiscFiles`` * *SODAR Assay Link Row* |rarr| ``RowPath`` * For example: diff --git a/docs_manual/source/sodar_release_notes.rst b/docs_manual/source/sodar_release_notes.rst index 5229d2c8..e7fe6994 100644 --- a/docs_manual/source/sodar_release_notes.rst +++ b/docs_manual/source/sodar_release_notes.rst @@ -8,6 +8,16 @@ list of changes in current and previous releases, see the :ref:`full changelog`. +v0.15.1 (2024-09-12) +==================== + +Release for minor updates, maintenance and bug fixes. + +- Fix generic assay plugin issues +- Upgrade critical dependencies +- Minor updates and bug fixes + + v0.15.0 (2024-08-08) ==================== diff --git a/landingzones/static/landingzones/js/landingzones.js b/landingzones/static/landingzones/js/landingzones.js index 371c5f8c..6a3a1e52 100644 --- a/landingzones/static/landingzones/js/landingzones.js +++ b/landingzones/static/landingzones/js/landingzones.js @@ -51,7 +51,8 @@ var updateZoneStatus = function() { ) { statusTd.text(zoneStatus); statusTd.removeClass(); - statusTd.addClass(statusStyles[zoneStatus] + ' text-white'); + statusTd.addClass( + 'sodar-lz-zone-status ' + statusStyles[zoneStatus] + ' text-white'); statusInfoSpan.text(zoneStatusInfo); if (['PREPARING', 'VALIDATING', 'MOVING', 'DELETING'].includes(zoneStatus)) { statusTd.append( diff --git a/samplesheets/assayapps/generic/plugins.py b/samplesheets/assayapps/generic/plugins.py index 1eec422c..8f517ac6 100644 --- a/samplesheets/assayapps/generic/plugins.py +++ b/samplesheets/assayapps/generic/plugins.py @@ -12,7 +12,7 @@ # Local constants APP_NAME = 'samplesheets.assayapps.generic' -RESULTS_COMMENT = 'SODAR Assay Link Results' +RESULTS_COMMENT = 'SODAR Assay Link ResultsReports' MISC_FILES_COMMENT = 'SODAR Assay Link MiscFiles' DATA_COMMENT_PREFIX = 'SODAR Assay Row Path' DATA_LINK_COMMENT = 'SODAR Assay Link Row' @@ -65,9 +65,13 @@ def _link_from_comment(cell, header, top_header, target_cols, url): return True # Special case for Material Names if ( - top_header['value'] - in th.DATA_FILE_HEADERS + th.MATERIAL_NAME_HEADERS - ) and (header['value'] == 'Name'): + ( + top_header['value'] + in th.DATA_FILE_HEADERS + th.MATERIAL_NAME_HEADERS + ) + and top_header['value'].lower() in target_cols + and (header['value'] == 'Name') + ): cell['link'] = f"{url}/{cell['value']}" return True # Handle everything else @@ -83,11 +87,11 @@ def _get_col_value(cls, target_col, row, table): """ Return value of last matched column. - :param target_col: Column name to look for + :param target_col: Column name string to look for. :param row: List of dicts (a row returned by SampleSheetTableBuilder) :param table: Full table with headers (dict returned by SampleSheetTableBuilder) - :return: String with cell value of last matched column + :return: String with cell value of last matched column. """ # Returns last match of row value = None @@ -96,7 +100,12 @@ def _get_col_value(cls, target_col, row, table): header = table['field_header'][i] if header['value'].lower() == target_col.lower(): value = row[i]['value'] - return value + + if isinstance(value, str): + return value + elif isinstance(value, list) and len(value) == 1: # OntologyTermRefs + return value[0]['name'] + return None def get_row_path(self, row, table, assay, assay_path): """ diff --git a/samplesheets/vueapp/package-lock.json b/samplesheets/vueapp/package-lock.json index c451069b..da69140a 100644 --- a/samplesheets/vueapp/package-lock.json +++ b/samplesheets/vueapp/package-lock.json @@ -1,12 +1,12 @@ { "name": "samplesheets", - "version": "0.15.0", + "version": "0.15.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "samplesheets", - "version": "0.15.0", + "version": "0.15.1", "dependencies": { "bootstrap-vue": "^2.22.0", "core-js": "^3.23.5", @@ -3128,16 +3128,6 @@ "@types/json-schema": "*" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -5516,9 +5506,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001651", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", - "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", + "version": "1.0.30001660", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", + "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", "dev": true, "funding": [ { @@ -13179,9 +13169,9 @@ } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { "braces": "^3.0.3", @@ -17341,12 +17331,11 @@ } }, "node_modules/webpack": { - "version": "5.93.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz", - "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", "dev": true, "dependencies": { - "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", @@ -17355,7 +17344,7 @@ "acorn-import-attributes": "^1.9.5", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", diff --git a/samplesheets/vueapp/package.json b/samplesheets/vueapp/package.json index f0eeff6a..1acb3387 100644 --- a/samplesheets/vueapp/package.json +++ b/samplesheets/vueapp/package.json @@ -1,6 +1,6 @@ { "name": "samplesheets", - "version": "0.15.0", + "version": "0.15.1", "private": true, "scripts": { "serve": "vue-cli-service serve",