2013-08-20 1 views
0

Я разрабатываю расширение плагина CKAN, которое необходимо программно создать новый набор данных, а затем добавить к нему новый ресурс (файл). Не знаете, как это сделать. Любая помощь будет оценена.Как загрузить ресурс программно в пользовательский плагин CKAN?

Спасибо, PK

ответ

0

Плагины могут создавать ресурсы, вызвав resource_create() action function. Функции вызова вызова с помощью plugins toolkit's get_action() function. (См. Новый writing extensions documentation).

Но насколько я знаю, плагины не могут загружать файлы в CKAN через интерфейсы плагинов или плагины. Для этого вам нужно будет использовать FileStore API. Ckanclient содержит некоторые Python code for uploading resources to CKAN via the API. Возможно, ваше расширение может вызвать ckanclient для загрузки?

+0

Я смог загрузить файл с помощью контроллера хранения, который является частью ядра. Но это не может быть хорошим способом сделать это, поскольку я напрямую обращаюсь к ядру. Я посмотрел код Ckanclient, который загружает через HTTP-вызов. Я думал, что это не лучший способ сделать это, когда мой код расширения и основной код ckan работают на одном сервере. Недавно я узнал о расширении ckanapi, который, похоже, позволяет получить доступ к API-интерфейсу действий и локально выполнять эти вызовы api (без http). Не уверен, хотя, если он поддерживает загрузку файлов. – user1380140

+0

[ckanapi] (https://github.com/open-data/ckanapi) не поддерживает загрузку файлов, насколько я знаю. Я бы рекомендовал загружать файлы через API с помощью ckanclient, даже если ваш код работает на том же сервере, что и ваш экземпляр CKAN, насколько я знаю, нет другого поддерживаемого способа сделать это. Вы правы в том, что доступ к контроллеру хранилища напрямую не является хорошей идеей - в новой версии CKAN контроллер памяти может измениться и ваш код сломается. –