All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
heliport.core: Add Banner model and BannerAdmin page for configuration of
maintenance messages via the admin interface.heliport.core: Add core/base/error_base.html template and use it in default
error pages generated by Django.heliport.core: Make DigitalObjectIdentifier objects searchable in admin interface.heliport.core: Add "aspects" to DigitalObjectIdentifier model to differentiate
uses of identifiers (main identifier for object, identifier for metadata graph of
object).heliport.core: Automatically mint identifiers for the metadata graph of each digital
object.heliport.core: Add /feed/ endpoints to robots.txt allow list.setuptools and setuptools-scm. Poetry is not required any
more. There is no lock file any more; locking safe and tested versions is now the
responsibility of setups that use HELIPORT as a dependency.heliport.core: Move module heliport.core.utils.version to heliport.version so
that it can be imported without fully configuring the Django app.heliport.core: Move function heliport.core.utils.normalization.url_normalizer to
heliport.core.utils.url.url_normalizer.heliport.core: Rename module heliport.core.utils.IDs to
heliport.core.utils.identifiers to adhere to common naming conventions.heliport.core: Change constant heliport.core.utils.http.heliport_user_agent to
function heliport.core.utils.http.get_heliport_user_agent.User-Agent string.heliport.core: Change the maintenance message levels returned by the maintenance
message API endpoint to adhere to django.contrib.messages.constants. If there is no
active maintenance message, the level is now reported as null.heliport.pid_registration app to
heliport.core.pid_registration.heliport.core.pid_registration.heliport.core: Rename DigitalObject.category_list property to
DigitalObject.namespace_list.heliport.core: Rename DigitalObject.last_category property to
DigitalObject.last_namespace.heliport.core: Always return a DigitalObjectIdentifier from
DigitalObject.preferred_identifier(). If no known identifier exists, create one.heliport.core: Move statistics code from IndexView into its own module
heliport.core.instance_statistics.heliport.core: Move PID resolver endpoint from /object/<PID> to /resolve/<PID>.heliport.core: Remove HELIPORT_CORE_MAINTENANCE_MESSAGE and
HELIPORT_CORE_MAINTENANCE_MESSAGE_LEVEL settings.heliport.core: Remove obsolete DigitalObject.local_url() method.
DigitalObject.full_url() should be used instead.heliport.core: Remove unused, obsolete DigitalObject.test_category_migrated()
method.heliport.core: Remove long-deprecated DigitalObject.category_str property. Use
DigitalObject.namespace_str instead.heliport.core: Remove DigitalObject.update_modified_date() method. Use
DigitalObject.save() instead.heliport.core: Detect Crossref DOIs correctly as DOIs rather than Handle.net handles.heliport.core: Fix broken trailing slash redirect for digital object landing pages.heliport.core: Enable Django sites framework. This requires manual intervention.
Please update from HELIPORT v0.7.0 by following the "Enable Sites Framework" guide in
the docs.heliport.core: Add sitemap containing all project landing pages.heliport.core: Add per-project atom feeds which can be used to subscribe to updates
about new digital objects created in the project.heliport.unicore: Remove the UNICORE app which has fallen into disrepair.User Interface:
API:
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:
rdf:type.Core App:
/about/) which redirects to that
page:HELIPORT_CORE_ABOUT_URL - About pageHELIPORT_CORE_DOCS_URL - Documentation pageHELIPORT_CORE_CITE_URL - Page with citation instructionsHELIPORT_CORE_IMPRINT_URL - ImprintHELIPORT_CORE_PRIVACY_URL - Privacy policyHELIPORT_CORE_TOS_URL - Terms of service (terms of use, terms and conditions)LOCAL_ACCOUNT_SIGNUP, LDAP_ENABLED, LDAP_SIGNUP, OIDC_ENABLED, OIDC_SIGNUP
settings.OIDC_EDUPERSON_ENTITLEMENTS setting.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.HELIPORT_CORE_PUBLIC_FAVICON_URL setting was removed as it wasn't used any more.HELIPORT_CORE_ABOUT_BASE_URL setting was removed in favour of the more flexible
new URL options mentioned above.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.HELIPORT_CORE_HOST replaces
HELIPORT_HANDLE_DIGITAL_OBJECT_HOST and HELIPORT_HANDLE_LOCAL_DIGITAL_OBJECT_HOST.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.heliport.core.app_interaction.DigitalObjectModule
that allows more features and easier implementation of modules that represent a subclass of DigitalObject./core/base/form.html to display Django forms in a HELIPORT specific stylereset_heliport_breadcrumbs URL parameterheliport.core.views.generic.HeliportCreateAndUpdateView as new generic base view for views that
allow creating and editing digital objectsheliport.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
{meth}heliport.core.models.DigitalObject.preferred_identifier can be used to fetch
the object's "best" identifier from this model.hzdr_id and uuid attributes from {class}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.heliport.core app and re-implemented in the new heliport.pid_registration app.PID Registration App:
Data Source App:
SSH App:
Miscellaneous:
X-HELIPORT-Version.User Interface:
fa, fas, fab, ... classes) still work.Architecture Additions:
Core App:
is_helper to DigitalObject to allow representing DigitalObjects that
are not explicitly created by the user.heliport.core.viewsheliport.core.mixins; HeliportObjectListView
is under {mod}heliport.core.views.genericheliport.core.views.generic.HeliportObjectListViewheliport.core.renderers.HeliportPartialRenderer for rendering of
HTML partials to be sent via the APIheliport.core.negotiation.HeliportContentNegotiation which handles
API requests sent from HTMX and returns partials to them/api/digital-objects/complete/ APIData Source App:
UNICORE App:
SSH App:
SMB Files App:
Version Control App:
Gate Connection App:
MediaWiki App:
Miscellaneous:
DEVELOPMENT == False) changed from
${BASE_DIR}/heliport.sqlite3 to /var/lib/heliport/heliport.sqlite3.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-cli as a convenience command for the Django
manage.py script.Project.digitalobject_set to Project.partsThis 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.