diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 28d502c417828847fb035afec9c07d8ed50e2759..f0415a0899b0a71c86894e99dfe526cf8285e35f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -66,12 +66,12 @@ test-server-side-scripting: # Build a docker image in which tests for this repository can run build-testenv: tags: [ cached-dind ] - image: docker:19.03 + image: docker:27.3.1 stage: setup timeout: 3 h - only: - - web - - schedules + # only: + # - web + # - schedules script: - cd test/docker - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY @@ -93,7 +93,8 @@ pages_prepare: &pages_prepare refs: - /^release-.*$/i script: - - npm install jsdoc jsdoc-sphinx + - npm install -g jsdoc + - npm install @indiscale/jsdoc-sphinx - echo "Deploying" - make doc - rm -r public || true ; cp -r build/doc/html public diff --git a/CHANGELOG.md b/CHANGELOG.md index 881604778b77e981be8eb3721ec48594e03f2f03..56f004255fa90aa130f25f5684af9c5a1219855e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Documentation ### +## [0.15.1] - 2014-12-20 ## + +### Fixed ### + +- [#254](https://gitlab.com/linkahead/linkahead-webui/-/issues/254) "Download files referenced in the table" failed +- [#230](https://gitlab.com/linkahead/linkahead-webui/-/issues/230) + `make doc` is now compatible with npm >= 9.0.0. + ## [0.15.0] - 2024-10-01 ## ### Added ### diff --git a/README_SETUP.md b/README_SETUP.md index 9b8a6457d9a0b79fe0d6acf3e8df9294f0074981..99b13956987528a19fedacebf0524675fb694f2f 100644 --- a/README_SETUP.md +++ b/README_SETUP.md @@ -80,13 +80,16 @@ See `build.properties.d/00_default.properties` for more information. ## Build the documentation # -Build documentation in `build/` with `make doc`. +Install the below requirements and build documentation in `build/` +with `make doc`. You may need to set the environment variables used in +`src/doc/Makefile`, especially `JSDOC_BIN` in case you didn't install +jsdoc globally. ### Requirements ## - sphinx - sphinx-autoapi - jsdoc (`npm install jsdoc`) -- jsdoc-sphinx (`npm install jsdoc-sphinx`) +- @indiscale/jsdoc-sphinx (`npm install @indiscale/jsdoc-sphinx`) - sphinx-js - recommonmark diff --git a/src/doc/Makefile b/src/doc/Makefile index 17510caebd1f34ed6dc0bc19108cb41fa730de76..7f5c3d5ec0d0bf6ae06d1ddd3ae6386aa3732ae2 100644 --- a/src/doc/Makefile +++ b/src/doc/Makefile @@ -24,16 +24,15 @@ # It is based upon the autocreated makefile for Sphinx documentation. # You can set these variables from the command line, and also -# from the environment for the first two. +# from the environment for the first four. SPHINXOPTS ?= -a SPHINXBUILD ?= sphinx-build +NPM_PREFIX ?= ../.. +JSDOC_BIN ?= jsdoc # SPHINXAPIDOC ?= javasphinx-apidoc SOURCEDIR = . BUILDDIR = ../../build/doc -# npm is not always in the global PATH -NPM_PATH = $(shell npm bin) -NPM_PREFIX = $(shell npm prefix) .PHONY: doc-help Makefile api @@ -44,8 +43,8 @@ doc-help: # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile api - PATH=$(NPM_PATH):$$PATH $(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + $(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) # sphinx-build -M html . ../../build/doc api: - PATH=$(NPM_PATH):$$PATH jsdoc -t $(NPM_PREFIX)/node_modules/jsdoc-sphinx/template -d $@ -r "../../src/core" + $(JSDOC_BIN) -t $(NPM_PREFIX)/node_modules/@indiscale/jsdoc-sphinx/template -d $@ -r "../../src/core" diff --git a/src/doc/conf.py b/src/doc/conf.py index 24ef8545a66f32a7b791b688429c7e2a6fe8a98c..00013dacb1bac017ebdf7cbc91650fb33dfa2304 100644 --- a/src/doc/conf.py +++ b/src/doc/conf.py @@ -26,9 +26,9 @@ copyright = '2022 - 2024, IndiScale GmbH' author = 'Daniel Hornung' # The short X.Y version -version = '0.15.1' +version = '0.15.2' # The full version, including alpha/beta/rc tags -release = '0.15.1-SNAPSHOT' +release = '0.15.2-SNAPSHOT' # -- General configuration --------------------------------------------------- @@ -196,7 +196,7 @@ primary_domain = 'js' # Not strictly necessary? # -- Options for intersphinx extension --------------------------------------- # Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {'https://docs.python.org/': None} +intersphinx_mapping = {} # TODO Which options do we want? autodoc_default_options = { diff --git a/src/doc/index.rst b/src/doc/index.rst index f5b5d9c5828c8ff7e3d5d26b37dbe6653fc00541..adb28b2df1632b6df3c5bf12791a196419bb8cb9 100644 --- a/src/doc/index.rst +++ b/src/doc/index.rst @@ -28,5 +28,4 @@ the most important concepts and offers a range of Indices and tables ================== -* :ref:`genindex` * :ref:`search` diff --git a/src/server_side_scripting/ext_file_download/zip_files.py b/src/server_side_scripting/ext_file_download/zip_files.py index 2ecfaa8c25b694c7de940cd03e9bf97196ce2b86..7f151d8bf28d89d3193d44665ae7a1645828255c 100755 --- a/src/server_side_scripting/ext_file_download/zip_files.py +++ b/src/server_side_scripting/ext_file_download/zip_files.py @@ -32,7 +32,7 @@ from zipfile import ZipFile import linkahead as db import pandas as pd -from linkaheadadvancedtools.serverside import helper +from caosadvancedtools.serverside import helper from linkahead import LinkAheadException, ConsistencyError, EntityDoesNotExistError @@ -71,9 +71,7 @@ def collect_files_in_zip(ids, table): # download and add all files for file_id in ids: try: - tmp = db.execute_query("FIND FILE WITH ID={a:}".format( - a=file_id), - unique=True) + tmp = db.get_entity_by_id(file_id, role="FILE") except EntityDoesNotExistError as e: # TODO # Current behavior: script terminates with error if just one @@ -81,14 +79,14 @@ def collect_files_in_zip(ids, table): # Desired behavior: The script should go on with the other # ids, but the user should be informed about the missing files. # How should we do this? - logger = logging.getLogger("linkaheadadvancedtools") - logger.error("Did not find Entity with ID={}.".format( + logger = logging.getLogger("caosadvancedtools") + logger.error("Did not find File with ID={}.".format( file_id)) raise e savename = nc.get_unique_savename(os.path.basename(tmp.path)) val_file = helper.get_file_via_download( - tmp, logger=logging.getLogger("linkaheadadvancedtools")) + tmp, logger=logging.getLogger("caosadvancedtools")) zf.write(val_file, savename) diff --git a/src/server_side_scripting/ext_table_preview/pandas_table_preview.py b/src/server_side_scripting/ext_table_preview/pandas_table_preview.py index 13c9b394648548bd6124de8a7318b18bb8a9221c..bc24201a121be056693963705373ed9e6ebe29f1 100755 --- a/src/server_side_scripting/ext_table_preview/pandas_table_preview.py +++ b/src/server_side_scripting/ext_table_preview/pandas_table_preview.py @@ -35,8 +35,8 @@ from datetime import datetime import linkahead as db import pandas as pd -from linkaheadadvancedtools.serverside.helper import get_argument_parser -from linkaheadadvancedtools.serverside.logging import configure_server_side_logging +from caosadvancedtools.serverside.helper import get_argument_parser +from caosadvancedtools.serverside.logging import configure_server_side_logging MAXIMUMFILESIZE = 1e8 VALID_ENDINGS = [".csv", ".tsv", ".xls", ".xlsx"] @@ -135,7 +135,7 @@ if __name__ == "__main__": args = parser.parse_args() debug_file = configure_server_side_logging() - logger = logging.getLogger("linkaheadadvancedtools") + logger = logging.getLogger("caosadvancedtools") db.configure_connection(auth_token=args.auth_token) entity_id = args.filename diff --git a/test/docker/Dockerfile b/test/docker/Dockerfile index 6a14c5027171e80293504a33bb8ff5af5fec4bd8..d816f92fa3a7a529c55d0aaaafbaf30082f0a6da 100644 --- a/test/docker/Dockerfile +++ b/test/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:11 +FROM debian:12 ADD node_gpg.asc /etc/apt/ RUN apt-get update \ && apt-get install -y gnupg ca-certificates\ @@ -12,14 +12,15 @@ RUN apt-get update \ nodejs npm \ && apt-get install -f -RUN pip3 install pylint pytest +RUN pip3 install --break-system-packages pylint pytest +RUN pip3 install --break-system-packages sphinx-js sphinx-autoapi recommonmark sphinx-rtd-theme +RUN pip3 install --break-system-packages pandas + # TODO rename to linkahead -# RUN pip3 install caosdb>=0.7.4 -RUN pip3 install git+https://gitlab.com/caosdb/caosdb-pylib.git@f-linkahead-rename -RUN pip3 install pandas +RUN pip3 install --break-system-packages git+https://gitlab.com/caosdb/caosdb-pylib.git@dev # TODO rename to linkahead -RUN pip3 install git+https://gitlab.com/caosdb/caosdb-advanced-user-tools.git@f-linkahead-rename +RUN pip3 install --break-system-packages git+https://gitlab.com/caosdb/caosdb-advanced-user-tools.git@dev + # For automatic documentation # RUN npm install -g jsdoc # RUN npm install -g jsdoc-sphinx -RUN pip3 install sphinx-js sphinx-autoapi recommonmark sphinx-rtd-theme diff --git a/test/server_side_scripting/ext_file_download/test_zip_files.py b/test/server_side_scripting/ext_file_download/test_zip_files.py new file mode 100644 index 0000000000000000000000000000000000000000..d42b49b067705a6a91e6e4bba5258fd9db685d9b --- /dev/null +++ b/test/server_side_scripting/ext_file_download/test_zip_files.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 +# encoding: utf-8 +# +# This file is a part of the LinkAhead Project. +# +# Copyright (C) 2024 IndiScale GmbH <info@indiscale.com> +# Copyright (C) 2024 Daniel Hornung <d.hornung@indiscale.com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# + +import os +import unittest + +import linkahead as db +from linkahead.common.models import _parse_single_xml_element +from lxml import etree +from zip_files import (collect_files_in_zip) + + +class ZipTest(unittest.TestCase): + pass diff --git a/test/server_side_scripting/ext_file_download/zip_files.py b/test/server_side_scripting/ext_file_download/zip_files.py new file mode 120000 index 0000000000000000000000000000000000000000..4f594ec180c19a84199da1f8a13efeefdb974d19 --- /dev/null +++ b/test/server_side_scripting/ext_file_download/zip_files.py @@ -0,0 +1 @@ +../../../src/server_side_scripting/ext_file_download/zip_files.py \ No newline at end of file diff --git a/test/server_side_scripting/ext_table_preview/requirements.txt b/test/server_side_scripting/ext_table_preview/requirements.txt index 828669fd56d10e7dda0e61917621f15c0fd057a8..d52075bbf03485c453582e876c046a27b35ce2bd 100644 --- a/test/server_side_scripting/ext_table_preview/requirements.txt +++ b/test/server_side_scripting/ext_table_preview/requirements.txt @@ -1,4 +1,4 @@ +linkahead # TODO rename to linkahead -caosdb caosadvancedtools pandas