我想知道是否有一种直接的方法来更改 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,手动检查是否允许用户访问资源以及在什么级别。