我想知道是否有一种简单的方法来更改 CKAN 数据集形式。我对添加额外的可见性选项而不是public和private感兴趣: 也就是说;
CKAN 使用
package_basic_fields.html
...
{% if show_visibility_selector %}
{% block package_metadata_fields_visibility %}
<div class="form-group control-medium">
<label for="field-private" class="form-label">{{ _('Visibility') }}</label>
<div class="controls">
<select id="field-private" name="private" class="form-control">
{% for option in [('True', _('Private')), ('False', _('Public'))] %}
<option value="{{ option[0] }}" {% if option[0] == data.private|trim %}selected="selected"{% endif %}>{{ option[1] }}</option>
### I want to add extra options here
{% endfor %}
</select>
</div>
</div>
{% endblock %}
{% endif %}
{% if show_organizations_selector and show_visibility_selector %}
...
ckanext-scheming也没有谈论这个。
有什么推荐给我吗?
我相信您可以通过结合ckanext-scheming和CKAN提供的接口来实现这一点:IPackageController和可能的IPermissionLabels。
想法如下:
CKAN 并不是为这样的事情而设计的,但我确信这是一种可以在此处或那里进行一些调整的解决方法。
编辑: 我确认我已经按照上面所写的内容成功实现了类似的功能。就我而言,我想添加具有数据集公共元数据的选项,但不允许非授权用户读取资源或下载资源。为此,我还必须使用 IResourceController,手动检查是否允许用户访问资源以及在什么级别访问资源。