Changelog

In Development

User Interface:

  • The HELIPORT user interface now uses Bootstrap 5. The Bootstrap documentation provides a migration guide that can be followed to update custom HELIPORT apps.

API:

  • The API URLs for all apps were completely reworked. This includes changes in urlpatterns, routers, spelling, wording and overall structure. Now all APIs are grouped under a top-level /api/ path. We also established a document with conventions related to URL construction which can be found in the docs.

Metadata Export:

  • No longer export HELIPORT internal attributes (like the creation date) for external IRIs like rdf:type.

Core App:

  • “Public” landing pages were a workaround which is now removed.

  • It is now possible to configure various URLs pointing to external pages. All of these URLs have their own endpoint in HELIPORT (e.g. /about/) which redirects to that page:

    • HELIPORT_CORE_ABOUT_URL - About page

    • HELIPORT_CORE_DOCS_URL - Documentation page

    • HELIPORT_CORE_IMPRINT_URL - Imprint

    • HELIPORT_CORE_PRIVACY_URL - Privacy policy

    • HELIPORT_CORE_TOS_URL - Terms of service (terms of use, terms and conditions)

  • Login is now possible via OpenID Connect (OIDC). The related HELIPORT settings and templates are preconfigured to work with Helmholtz ID.

  • Authentication for non-LDAP accounts (i.e. local, OIDC, and any other configured options) is now handled by django-allauth rather than custom forms.

  • All login and user registration/signup options are now usable independently of eachother; i.e. any combination of the available options (local accounts, LDAP, OIDC) can be used. For each of the options, signup can be disabled separately. Local accounts can not be disabled in order to keep the admin interface functional. See LOCAL_ACCOUNT_SIGNUP, LDAP_ENABLED, LDAP_SIGNUP, OIDC_ENABLED, OIDC_SIGNUP settings.

  • OIDC logins can be restricted to accounts with certain eduperson entitlements using the OIDC_EDUPERSON_ENTITLEMENTS setting.

  • Automatic synchronization of LDAP accounts and groups was removed as this doesn’t work well anymore when different login options are available with the possibility of linking accounts.

  • HELIPORT is now able to send emails for email address verification and password reset (see EMAIL_* settings). Even with email settings enabled, verification of email addresses is only optional.

  • HELIPORT_SAMPLE_PROJECT is a new setting that allows administrators to define a sample project that users can create at the click of a button. This project is meant as a starting point and a showcase of HELIPORT features.

  • The HELIPORT_CORE_PUBLIC_FAVICON_URL setting was removed as it wasn’t used any more.

  • The HELIPORT_CORE_ABOUT_BASE_URL setting was removed in favour of the more flexible new URL options mentioned above.

  • The “Create Empty Project” functionality was removed as the feature was too confusing.

  • The option to create handles pointing to data URLs (setting HELIPORT_HANDLE_REGISTER_JSON_URL_HANDLES) was removed. This is due to the fact that modern browsers don’t allow redirects to data URLs any more and thus, resolving such handles and following the redirect creates an error message.

  • The new required setting HELIPORT_CORE_HOST replaces HELIPORT_HANDLE_DIGITAL_OBJECT_HOST and HELIPORT_HANDLE_LOCAL_DIGITAL_OBJECT_HOST.

  • The settings HELIPORT_HANDLE_URL_FORMAT and HELIPORT_HANDLE_RESOLVE_PID_FORMAT_TO were removed. Handles now always point to the digital object landing pages provided by HELIPORT.

  • Introduce HELIPORT module class heliport.core.app_interaction.DigitalObjectModule that allows more features and easier implementation of modules that represent a subclass of DigitalObject.

  • There is now a template /core/base/form.html to display Django forms in a HELIPORT specific style

  • Improved breadcrumbs:

    • Can be controlled by reset_heliport_breadcrumbs URL parameter

    • Support nested modules, that are displayed in other modules, automatically

  • Fixed security problem that allowed logged-in users to delete objects without access control

  • Added heliport.core.views.generic.HeliportCreateAndUpdateView as new generic base view for views that allow creating and editing digital objects

  • New class of access rights for deleting digital objects

  • New model heliport.core.models.DigitalObjectIdentifier allows for registration of arbitrary identifiers in HELIPORT. This model will eventually replace DigitalObject.persistend_id and DigitalObject.generated_persistent_id. The method heliport.core.models.DigitalObject.preferred_identifier() can be used to fetch the object’s “best” identifier from this model.

  • The hzdr_id and uuid attributes from heliport.core.models.Project were removed. Instead, all digital objects (even non-projects) now receive a HELIPORT-internal identifier that can be used as a default if the HELIPORT instance does not register PIDs.

  • All functionality related to creation of Handle.Net identifiers was removed from the heliport.core app and re-implemented in the new heliport.pid_registration app.

  • The root path of the app now shows a welcome page with some basic information about HELIPORT and some statistics on the number of users, projects, and digital objects.

PID Registration App:

  • A new app for registering PIDs for digital objects on first save Currently, there is only a Handle.Net implementation available.

Data Source App:

  • Every file or directory in HELIPORT is now displayed under “Data Source”

  • Instances for modules from all apps, that expose a Django form, can directly be edited and created under “Data Source” now

SSH App:

  • Exposes a Django form for directly editing SSH files and directories in other apps

Miscellaneous:

  • Support for Python 3.12 and 3.13 was added.

  • Support for Python 3.8 was removed.

0.6.0

Release date: 2023-06-15

User Interface:

  • The navbar was split in two. The top one still holds globally useful navigations like user settings and the search. The navbar below it shows project-related settings and apps that were previously shown in the left-most column of the project graph so that they are now easily accessible from other places.

  • HELIPORT now uses Font Awesome 6 icons. Font Awesome 6 is backwards-compatible, thus old icons (fa, fas, fab, … classes) still work.

Architecture Additions:

  • Introduced the concept of Actions that allow to use functionality of one app inside another app without dependency between the apps

  • Introduce the concept of a DigitalObject that represents a File

  • Introduce the concept of a DigitalObject that represents a Directory

  • Introduce the concept of operation context that allows to cache values with support for python context managers

  • Introduce the concept of user messages that can be raised as exception to display an error to the user

  • Introduce the concept of GeneralValue to represent something that can be a value of some parameter of a digital object and can be serialized

  • Introduce the concept of GeneralDigitalObject to represent objects not stored in the HELIPORT database. A GeneralDigitalObject supports only the most basic functionality but can be easily imported as DigitalObject.

  • Introduce the concept of object resolution, that allows to represent objects not stored in the HELIPORT database (e.g. in URL parameters)

Core App:

Data Source App:

  • Extend data source list to support actions

  • New view to show arbitrary directories and allow file download

  • Data sources with ssh protocol are now deprecated in favour of the ssh app

  • New actions to open arbitrary files and directories

UNICORE App:

  • UNICORE storages can now be added to projects

  • Implement file and directory interfaces for UNICORE storages (this allows for example a preview)

  • The UNICORE “overview” view was removed in favor of an interface that looks more like other apps

SSH App:

  • Introduced this as the new app to handle all ssh functionality

  • Allows adding SSH files and directories to project

  • Implement file and directory interfaces for files and directories accessible via SSH (this allows for example a preview)

  • Add action to migrate old ssh data sources to this app

  • Implement API to download files and show contents of directories

SMB Files App:

  • Introduce this as a new app to handle SMB shares

  • Allow adding SMB shares to project

  • Implement file and directory interfaces for SMB files and directories (this allows for example a preview)

  • Implement API to download files and show contents of directories

Version Control App:

  • Implement file and directory interfaces for GitLab and GitHub files and directories (this allows e.g. download)

Gate Connection App:

  • E-Mail and affiliation information is now imported from the proposal

Miscellaneous:

  • The default database location in production mode (DEVELOPMENT == False) changed from ${BASE_DIR}/heliport.sqlite3 to /var/lib/heliport/heliport.sqlite3.

  • The monitoring extra for the Flower monitor was removed as it wasn’t well integrated in the repo and lacked instructions due to not being used by the maintainers.

  • HELIPORT is now running on Django 4.2.

  • The main JavaScript and CSS libraries are now installed with yarn and bundled with webpack. Some CSS and JavaScript is managed using django-vendor-files and will be moved into the webpack setup eventually.

  • HELIPORT now provides heliport-cli as a convenience command for the Django manage.py script.

  • The minimum required Poetry version is now 1.2.

  • Added alpinejs to be used in frontend

  • Added RootedRDFGraph to collections to store RDF data about something specific (that is the root)

  • Renamed Project.digitalobject_set to Project.parts

  • Project list now supports pagination and sorting

  • Projects can now be tagged

0.5.0

Release date: 2022-11-24

This is the first release after some major restructuring in the HELIPORT codebase and infrastructure. Future releases will provide more detailed information about the changes that were introduced.