Skip to main content

Introduces or lifts restrictions (authorization) for managing data and metadata on DCOR

Project description

PyPI Version Build Status Coverage Status

This module introduces/lifts restrictions (authorization) for the management of data and meta data on DCOR. The corresponding UI elements are modified accordingly:

  • Authorization (auth.py)

    • datasets: do not allow deleting datasets unless they are drafts

    • datasets: allow purging of deleted datasets

    • datasets: do not allow switching to a more restrictive license

    • datasets: do not allow changing the name (slug)

    • datasets: do not allow adding resources to non-draft datasets

    • datasets: do not allow to set the visibility of a public dataset to private

    • organization: do not allow bulk_update_delete (e.g. datasets by organization admins)

    • resources: do not allow deleting resources unless they are drafts

    • resources: only allow changing the “description”

    • resources: do not allow setting a resource id when uploading

    • user: allow all logged-in users to create datasets, circles, and collections

  • Validation (validate.py)

    • datasets: force user to select authors

    • datasets: author list “authors” is CSV

    • datasets: parse DOI field (remove URL part)

    • datasets: force user to select a license

    • datasets: restrict to basic CC licenses

    • datasets: automatically generate dataset name (slug) using random characters if necessary (does not apply to admins)

    • datasets: a dataset without resources is considered to be a draft; it’s state cannot be set to “active”

    • resources: do not allow uploading resources with the same name for a dataset (important for ckanext-dcor_depot)

    • resources: make sure the resource name matches the file name of the upload; this is actually implemented in plugin.before_create (IResourceController) and not in validate.py

    • resources: custom resource name is overridden during upload

    • resources: do not allow weird characters in resource names

    • resources: restrict upload data extensions to .rtdc, .csv, .tsv, .pdf, .txt, .png, .jpg, .tif, .py, .ipynb, .ini

    • resources: configuration metadata (using dclab.dfn.config_funcs)

  • IPermissionLabels (plugin.py)

    • Allow a user A to see user B’s private dataset if the private dataset is in a group that user A is a member of.

  • UI Dataset:

    • hide “add new resource” button in templates/package/resources.html

    • remove url, version, author, author_email, maintainer, maintainer_email (templates/package/snippets/package_metadata_fields.html)

    • remove custom extras (user should use resource schema supplements instead)

    • add field authors (csv list)

    • add field doi (validator parses URLs)

    • add field references (parses arxiv, bioRxiv, DOI, links)

    • add CC license file licenses.json (only show less restrictive licenses when editing the dataset)

    • hide name (slug) editing form

    • dataset visibility is public by default

  • UI Organization:

    • remove “Delete” button in bulk view

  • UI Resource:

    • Resource: remove “URL” button when creating a resource (only upload makes sense) (fanstatic/dcor_schemas_data_upload.js and templates/package/snippets/resource_form.html)

    • Do not show variables these variables (because they are redundant): [‘last modified’, ‘revision id’, ‘url type’, ‘state’, ‘on same domain’] (templates/package/resource_read.html)

    • Show DC config data via “toggle-more”

    • Add supplementary resource schema via json files located in dcor_schemas/resource_schema_supplements

  • Background jobs:

    • set the mimetype for each dataset

    • populate “dc:sec:key” metadata for each DC dataset

    • generates sha256 hash upon resource creation

  • Configuration keywords:

    • the ckanext.dcor_schemas.allow_public_datasets boolean parameter can be used to disable the creation of public datasets (e.g. for DCOR-med).

    • the ckanext.dcor_schemas.json_resource_schema_dir parameter can be used to specify a directory containing .json files that define the supplementary resource schema. The default is package which means that the supplementary resource schema of this extension is used.

  • API extensions:

    • resource_schema_supplements returns a dictionary of the current supplementary resource schema

    • supported_resource_suffixes returns a list of supported resource suffixes

  • CLI:

    • add CKAN command list-zombie-users for users with no datasets and no activity for a certain amount of time

    • add CKAN command run-jobs-dcor-schemas that runs all background jobs for all resources (if not already done)

Installation

Simply run

pip install ckanext-dcor_schemas

In the configuration file ckan.ini:

ckan.plugins = [...] dcor_schemas
ckan.extra_resource_fields = sha256

Testing

If CKAN/DCOR is installed and setup for testing, this extension can be tested with pytest:

pytest ckanext

Testing can also be done via vagrant in a virtualmachine using the dcor-test <https://app.vagrantup.com/paulmueller/boxes/dcor-test/> image. Make sure that vagrant and virtualbox are installed and run the following commands in the root of this repository:

# Setup virtual machine using `Vagrantfile`
vagrant up
# Run the tests
vagrant ssh -- sudo bash /testing/vagrant-run-tests.sh

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ckanext-dcor_schemas-0.15.6.tar.gz (51.6 kB view details)

Uploaded Source

Built Distribution

ckanext_dcor_schemas-0.15.6-py3-none-any.whl (64.2 kB view details)

Uploaded Python 3

File details

Details for the file ckanext-dcor_schemas-0.15.6.tar.gz.

File metadata

  • Download URL: ckanext-dcor_schemas-0.15.6.tar.gz
  • Upload date:
  • Size: 51.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for ckanext-dcor_schemas-0.15.6.tar.gz
Algorithm Hash digest
SHA256 8f0a0b61c1cf9926dc0d74e088b6368ce7b21800e5c80ee6a3763663c3e47b2e
MD5 e2a1cbed72c870be6ef9330bf56b6708
BLAKE2b-256 a32cef4c9e2aafb19063a09a614b4ce0f87ab7b01a18865ea90c8ddbee5c821a

See more details on using hashes here.

File details

Details for the file ckanext_dcor_schemas-0.15.6-py3-none-any.whl.

File metadata

  • Download URL: ckanext_dcor_schemas-0.15.6-py3-none-any.whl
  • Upload date:
  • Size: 64.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for ckanext_dcor_schemas-0.15.6-py3-none-any.whl
Algorithm Hash digest
SHA256 10226a7abe9be716fcb21becfe8be3c6ab69ddd8e0fba053b0293ccf0cb32d13
MD5 2918085f14ee6f1356410d0e8bbfaf9b
BLAKE2b-256 817adb8d60f4782bc58563f554b1cb4c2801f8e8836f6c57113dcd170a513943

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page