Invenio Research Data Management
repository·master·Indexed 41 days ago
https://github.com/inveniosoftware/invenio-app-rdmA Research Data Management (RDM) application designed to facilitate the lifecycle of research data. It includes tools for managing static pages, creating application fixtures, rebuilding search indices, and extensive configuration options for Flask, SQLAlchemy, OAI-PMH, and Celery scheduled tasks.
What's inside Invenio RDM
- Invenio App RDM is a Research Data Management (RDM) application. It provides a platform for managing research data, likely including features for discovery, deposit, and management of research outputs. For detailed technical documentation, guides, and API references, visit the official documentation site.
Install invenio-app-rdm using uv
masterIf you prefer using the
uvtool, use the following commands to set up your environment. This installs the package in editable mode withtestsandopensearch2extras.$ uv venv $ uv pip install -e ".[tests,opensearch2]"Install invenio-app-rdm using pipenv
masterIf you prefer using
pipenv, use the following command to install the package in editable mode withtestsandopensearch2extras.pipenv run pip install -e ".[tests,opensearch2]"Set up invenio-app-rdm for local development
masterTo contribute to
invenio-app-rdm, follow these steps to set up a local development environment:- Fork and Clone: Fork the repository on GitHub and clone your fork locally.
- Install Dependencies: Install the local copy in editable mode within a virtual environment. You can use
uvorpipenv(see specific commands below). - Create a Branch: Create a new branch for your specific bugfix or feature.
- Verify Changes: Run the provided test script to ensure your changes pass tests, meet PEP8/PEP257 standards, and pass linting/documentation checks.
- Commit and Push: Commit your changes using the project's specific multi-line commit message format and push to your fork.
- Submit PR: Open a pull request on GitHub.
# 1. Clone your fork $ git clone git@github.com:your_name_here/invenio-app-rdm.git $ cd invenio-app-rdm/ # 2. Install (using uv as an example) $ uv venv $ uv pip install -e ".[tests,opensearch2]" # 3. Create branch $ git checkout -b name-of-your-bugfix-or-feature # 4. Run tests $ ./run-tests.sh # 5. Commit with specific format $ git add . $ git commit -s \ -m "component: title without verbs" \ -m "* NEW Adds your new feature." \ -m "* FIX Fixes an existing issue." \ -m "* BETTER Improves and existing feature." \ -m "* Changes something that should not be visible in release notes." $ git push origin name-of-your-bugfix-or-featureAccess Invenio App RDM documentation
masterComprehensive documentation for Invenio App RDM, including installation, configuration, and usage guides, is hosted at: https://inveniordm.docs.cern.chInstall Invenio RDM
masterFor complete installation instructions, including requirements, environment setup, and deployment steps, refer to the official Invenio RDM documentation at: https://inveniordm.docs.cern.ch/install/Pull Request Guidelines
masterBefore submitting a pull request, ensure it adheres to the following requirements:
- Tests: The PR must include tests and must not decrease overall test coverage.
- Documentation: If new functionality is added, update the documentation. New functionality should be encapsulated in a function with a proper docstring.
- Python Compatibility: Ensure the code works across all supported Python versions. You can verify supported versions in the project's GitHub Actions workflow:
.github/workflows/tests-python.yml.
Configure Invenio App RDM via files or environment variables
masterInvenio App RDM acts as a flavor extension that forcefully sets configuration variables for other modules. You can override these settings using:
- Configuration file:
<virtualenv prefix>/var/instance/invenio.cfg - Environment variables: Prefix the variable name with
APP_(e.g.,APP_SECRET_KEY).
WARNING: Do not install multiple flavor extensions in a single instance, as there is no guarantee of priority.
- Configuration file:
Configure Invenio-Files-REST and storage
masterManage file uploads and storage settings:
FILES_REST_PERMISSION_FACTORY: Function to generate permissions for files (defaults tofiles_rest_permission_factorywhich returnsDenial(any_user)).FILES_REST_CHECKSUM_VERIFICATION_URI_PREFIXES: List of URI prefixes for files whose checksums should be verified.FILES_REST_DEFAULT_STORAGE_CLASS: Default storage class. Options are:L: LocalF: FetchR: Remote
FILES_REST_STORAGE_CLASS_LIST: Mapping of short codes to storage class names.
Override User Dashboard menu items
masterYou can customize the default user dashboard menu by providing overrides in the
USER_DASHBOARD_MENU_OVERRIDESconfiguration key.Supported submenu names for overrides are:
uploadscommunitiesrequests
Each override is a dictionary containing keys like
endpoint,text, andorder. Attempting to override a submenu name that does not exist in the default configuration will raise aValueError.app.config["USER_DASHBOARD_MENU_OVERRIDES"] = { "uploads": { "text": "My Uploads", "order": 1 } }Configure RDM Deposit Form behavior
masterCustomize the record deposit process:
APP_RDM_DEPOSIT_FORM_DEFAULTS: Default values for new records in the deposit UI. Keys are dot-separated paths in the record metadata. Values can be callables for dynamic calculation.APP_RDM_DEPOSIT_FORM_CUSTOM_FIELD_DEFAULTS: Default values for custom fields.APP_RDM_DEPOSIT_FORM_AUTOCOMPLETE_NAMES: Behavior for the creator/contributor autocomplete field. Options:"search"(default): Always show search field and form."search_only": Only show search field; form appears after selection or manual entry."off": Only show person form.
APP_RDM_DEPOSIT_FORM_QUOTA: Dictionary defining upload limits:maxFiles: Maximum number of files.maxStorage: Maximum storage size.
APP_RDM_DEPOSIT_NG_FILES_UI_ENABLED: Boolean to enable the next-generation (NG) Uppy.io-based file uploader.
Configure Citation Styles
masterYou can manage the available citation styles and the default style used in the application via
RDM_CITATION_STYLESandRDM_CITATION_STYLES_DEFAULT. The styles are provided as a list of tuples containing the machine name and the human-readable label.RDM_CITATION_STYLES = [ ("apa", _("APA")), ("harvard-cite-them-right", _("Harvard")), ("modern-language-association", _("MLA")), ("nlm-citation-sequence", _("Vancouver")), ("chicago-notes-bibliography", _("Chicago")), ("ieee", _("IEEE")), ] RDM_CITATION_STYLES_DEFAULT = "apa"