This project uses semantic versioning. This change log uses principles from keep a changelog.
- Made code compatible with flask-jwt-extended version 4 API jic-dtool#19
- Resolve SQLAlchemy warnings about conflicting relationships jic-dtool#20
- Resolve SQLAlchemy warning about cartesian product
- Fixed version of flask-jwt-extended to be less than 4 to fix jic-dtool#19
Improved user management.
- Added
flask user delete
CLI command - Added
flask user update
CLI command - Added
dtool_lookup_server.utils.delete_users
helper function - Added
dtool_lookup_server.utils.update_users
helper function
- Moved
iter_datasets_in_base_uri
fromdtool_lookup_server.utils
todtoolcore
- Fixed issues registering datasets with "too much" metadata, resulting in datasets information JSON documents that were too large for the mongo database. These datasets are now ignored. See issue 16 for more information:
This release makes it possible to create plugins to the dtool-lookup-server!
Many thanks to Johannes L. Hörmann and Lars Pastewka for bug reports, design discussions and code contributions.
- Added hook to allow the loading of plugins. Scaffold code for implementing a plugin can be found in https://github.com/IMTEK-Simulation/dtool-lookup-server-plugin-scaffolding. For examples of actual plugins see: https://github.com/IMTEK-Simulation/dtool-lookup-server-dependency-graph-plugin and https://github.com/IMTEK-Simulation/dtool-lookup-server-plugin-scaffolding
- Added /config route; see jic-dtool#6
- Added ability to filter searches by UUID by supplying
uuids
keyword and list of UUIDs of interest to a query submitted to the /dataset/search route; see jic-dtool#8 - Added dtool_lookup_server.utils.preprocess_query_base_uris helper function; see jic-dtool#7 and jic-dtool#10
- Fixed timestamps returned form /dataset/search route; they are now returned as floats rather than as strings; see jic-dtool#3
- Fixed defect in
flask user token
CLI command when using python3; see jic-dtool#5
- Made /dataset/summary route able to cope with individual datasets in the mongo database missing the tags key
- Added "tags" and "datasets_per_tag" keys to JSON response from /dataset/summary route
- Added ability to filter/search based on tags
- Registering a dataset now requires a key for
tags
in the JSON content
- Added /dataset/annotations route to which one can POST a URI and get back the associated dataset annotations
- Registering a dataset now requires a key for
annotations
in the JSON content - The /dataset/search route no longer returns manifest and readme in the body of the JSON response. These will now have to be retrieved using the /dataset/manifest and /dataset/readme routes respectively. This change was implemented to overcome the slow response time when accessing many (>1000) datasets using the /dataset/search route.
- Made registration of datasets more tolerant to type of frozen_at in admin_metadata, now accepts value as a string
- Added /dataset/manifest route to which one can POST a URI and get back the associated dataset manifest
- Added /dataset/readme route to which one can POST a URI and get back the associated dataset readme
- Ability to log request headers in debug mode
- Added logic to config.Config that ignores
JWT_PRIVATE_KEY_FILE
andJWT_PUBLIC_KEY_FILE
ifJWT_PUBLIC_KEY
is set in the environment. This makes it easier to configure thedtool-lookup-server
to make use of tokens generated from another server. In other words where the private key file is maintained in a different service.
- Improved the JSON query format when sending POST requests to the /dataset/search route
- Added "/dataset/summary" route with summary information about the datasets accessible to a user
- Added the manifest structural metadata to the MongoDB
- Made "/dataset/register" route more robust when "created_at" is a string as opposed to a floating point value
- Added
frozen_at
column to admin metadata stored in SQL table - Added
created_at
column to admin metadata stored in SQL table - Added Ansible provisioning script to git repository
dtool_lookup_server.utils.dataset_info_is_valid()
helper function now returns false if "frozen_at" is missing.
- Made /dataset/register route more robust if base URI has not been registered
- Added support for Cross Origin Resource Sharing (CORS), making cross-origin AJAX possible
- Added
creator_username
column to admin metadata stored in SQL table
dtool_lookup_server.utils.dataset_info_is_valid()
helper function now return s false if "creator_username" is missing.
Added authentication and authorization!
New and replacement routes.
- /admin/base_uri/list
- /admin/base_uri/register
- /dataset/list
- /dataset/lookup/<uuid>
- /dataset/register
- /dataset/search
- /admin/permission/info
- /admin/permission/update_on_base_uri
- /user/info/<username>
- /admin/user/list
- /admin/user/register
Flask CLI utilities for managing the dtool lookup server.
flask base_uri add
flask base_uri index
flask base_uri list
flask user add
flask user list
flask user register_permission
flask user search_permission
flask user token
All previous routes.
- /register_dataset route
- /lookup_datasets route
- /search_for_datasets route
- Add ability to update a record
- Add inclusion of descriptive metadata from README to mass_registration.py script
- Add entire document wild card search indexing
- Ability to mass register datasets from a base URI
- Ability to search for datasets
Initial release
- Ability to view the number of registered datasets
- Ability to register a dataset
- Ability to access the copies of a dataset associated with a UUID