Прикрепить дополнения к ресурсам CKAN?

Могу ли я прикрепить дополнения к ресурсам CKAN? Я заметил, что у ckan.model.Resource есть свойство extras, поэтому я попытался создать ресурс, используя что-то вроде этого:

resource = {
    "package_id": "my-package-id",
    "url": "http://google.com",
    "name": "Google",
    "extras": [
        { "key": "myextra", "value": "my extra content" }
    ]
}

from ckan.plugins import toolkit
toolkit.get_action("resource_create")(faked_context, resource)

Я последовал за ним, поскольку логическая функция в конечном итоге запустила package_update, но потерпела неудачу с ValidationError: {u' junk': u'The input field __junk was not expected.'}

Спасибо!


person Ryan Clark    schedule 29.03.2013    source источник


Ответы (1)


Вам не нужно использовать ключ «extras» для дополнительных ресурсов, просто добавьте любые произвольные пары «ключ-значение», которые вы хотите, в качестве ключей верхнего уровня в словаре ресурсов, и они будут преобразованы в дополнительные ресурсы. Например, я думаю, что это должно работать:

resource = {
    "package_id": "my-package-id",
    "url": "http://google.com",
    "name": "Google",
    "myextra": "my extra content"
}

По крайней мере, я только что попробовал это через API, и это сработало, поэтому я думаю, что это будет работать через набор инструментов плагинов, как и вы. Я предполагаю, что эта функция нуждается в документации, вероятно, в строка документации resource_create().

(Примечание: это не работает для пакетов, для добавления настраиваемых полей в пакеты см. example_idatasetform расширение, поставляемое с CKAN.)

person Sean Hammond    schedule 30.03.2013
comment
Обратите внимание, что вы можете добавлять дополнения к пакетам без IDatasetForm, но вы должны явно перечислить их через "extras": [{"key": "my-key", "value": "my-value"}]. - person Florian Brucker; 08.06.2016