引入或取消对 DCOR 上的数据和元数据管理的限制(授权)
项目描述
本模块介绍/解除对 DCOR 上数据和元数据管理的限制(授权)。相应的 UI 元素进行了相应的修改:
授权(auth.py)
数据集:不允许删除数据集,除非它们是草稿
数据集:允许清除已删除的数据集
数据集:不允许切换到更严格的许可证
数据集:不允许更改名称(slug)
数据集:不允许向非草稿数据集添加资源
数据集:不允许将公共数据集的可见性设置为私有
数据集:不允许通过 Web 界面上传数据集
组织:不允许 bulk_update_delete(例如组织管理员的数据集)
资源:不允许删除资源,除非它们是草稿
资源:只允许更改“描述”
资源:上传时不允许设置资源ID
用户:允许所有登录用户创建数据集、圈子和集合
验证 (validate.py)
数据集:强制用户选择作者
数据集:作者列表“作者”是 CSV
数据集:解析 DOI 字段(删除 URL 部分)
数据集:强制用户选择许可证
数据集:仅限于基本 CC 许可证
数据集:必要时使用随机字符自动生成数据集名称(slug)(不适用于管理员)
数据集:没有资源的数据集被认为是草稿;它的状态不能设置为“活动”
数据集:不包含至少一个有效 .rtdc 资源的数据集的状态不能设置为“活动”
资源:不允许为数据集上传同名资源(对 ckanext-dcor_depot 很重要)
资源:确保资源名称与上传的文件名匹配;这实际上是在 plugin.before_create (IResourceController) 中实现的,而不是在 validate.py 中
资源:上传期间自定义资源名称被覆盖
资源:不允许资源名称中出现奇怪的字符
资源:将上传数据扩展名限制为 .rtdc、.csv、.tsv、.pdf、.txt、.png、.jpg、.tif、.py、.ipynb、.ini
资源:配置元数据(使用dclab.dfn.config_funcs)
IPermissionLabels (plugin.py)
如果私有数据集位于用户 A 所属的组中,则允许用户 A 查看用户 B 的私有数据集。
用户界面数据集:
在templates/package/resources.html中隐藏“添加新资源”按钮
添加字段作者(csv 列表)
添加字段doi(验证器解析 URL)
添加字段引用(解析 arxiv、bioRxiv、DOI、链接)
添加 CC 许可证文件licenses.json(仅在编辑数据集时显示限制较少的许可证)
用户界面组织:
删除批量视图中的“删除”按钮
用户界面资源:
不要显示这些变量(因为它们是多余的):['last modified', 'revision id', 'url type', 'state', 'on same domain'] ( templates/package/resource_read.html )
通过“toggle-more”显示 DC 配置数据
通过dcor_schemas/resource_schema_supplements中的 json 文件添加补充资源模式
后台工作:
为每个数据集设置 mimetype
为每个 DC 数据集填充“dc:sec:key”元数据
创建资源时生成 sha256 哈希
配置关键字:
ckanext.dcor_schemas.allow_public_datasets布尔参数可用于禁用公共数据集的创建(例如,用于 DCOR-med)。
ckanext.dcor_schemas.json_resource_schema_dir参数可用于指定包含定义补充资源模式的 .json 文件的目录。默认值为 package,这意味着使用此扩展的补充资源模式。
API 扩展:
resource_schema_supplements返回当前补充资源模式的字典
supported_resource_suffixes返回支持的资源后缀列表
命令行:
为没有数据集且在一定时间内没有活动的用户添加 CKAN 命令list-zombie-users
添加运行所有资源的所有后台作业的 CKAN 命令run-jobs-dcor-schemas(如果尚未完成)
安装
只需运行
pip install ckanext-dcor_schemas
在配置文件ckan.ini中:
ckan.plugins = [...] dcor_schemas ckan.extra_resource_fields = sha256
测试
如果安装了 CKAN/DCOR 并设置了测试,则可以使用 pytest 测试此扩展:
pytest ckanext
也可以使用dcor-test <https://app.vagrantup.com/paulmueller/boxes/dcor-test/>图像在虚拟机中通过 vagrant 进行 测试。确保已安装vagrant和virtualbox,并在此存储库的根目录中运行以下命令:
# Setup virtual machine using `Vagrantfile` vagrant up # Run the tests vagrant ssh -- sudo bash /testing/vagrant-run-tests.sh
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。