通过API调用在IPackageController中触发after_update()

时间:2015-12-23 10:38:37

标签: python ckan

我正在为CKAN开发一个插件,我需要在更新或创建资源时触发一个函数。

修改资源时,它会通过更改last_modified中的日期来影响父数据集。我想在每次添加/修改资源时更改日期。

当我更新资源时,我想也要更新数据集,我期待在IPackageController中调用after_update()。在我编辑资源IPackageController.after_update()被触发后,这是我使用管理界面时的行为。

调用API是一个不同的故事,通过调用

/api/3/action/resource_update

完全不触发该事件
import ckan.plugins as plugins

class MyControllerPlugin(plugins.SingletonPlugin):

    plugins.implements(plugins.IPackageController, inherit=True)

    def after_create(self, context, resource):
        print "============== AFTER CREATE"

    def after_update(self, context, resource):
        print "============== AFTER UPDATE"

如何通过API触发此事件? 感谢

1 个答案:

答案 0 :(得分:0)

调用/ api / 3 / action / resource_update不会触发IPackageController的after_update函数,因为它是正在更新的资源,而不是包。

如果你调用/ api / 3 / action / package_update它应该被调用吗?

或者您可以使用IResourceController的after_update来处理资源更新的时间。