2022年5月3日 星期二

CKAN Extensions Tutorial(v2.9):一個空的 CKAN extension

https://docs.ckan.org/en/2.9/extensions/tutorial.html

建立:ckan generate extension  

  1. 進入Python Virtual Environment:
    . /usr/lib/ckan/default/bin/activate
  2. 切換目錄
    cd /usr/lib/ckan/default/src 
  3. 執行 ckan generate extension

Extension's name [must begin 'ckanext-']: ckanext-你的extension名稱
(如: ckanext-iauthfunctions )]

├── ckanext
│   ├── iauthfunctions //Python package 程式碼目錄
│   │   ├── assets
│   │   │   └── webassets.yml
│   │   ├── fanstatic
│   │   ├── i18n
│   │   ├── __init__.py
│   │   ├── plugin.py //CKAN Extension的功能寫在這裡
│   │   ├── public
│   │   ├── templates
│   │   └── tests
│   │       ├── __init__.py
│   │       └── test_plugin.py
│   └── __init__.py
├── dev-requirements.txt
├── LICENSE
├── MANIFEST.in
├── README.md
├── requirements.txt
├── setup.cfg
├── setup.py  //用它安裝到Virtual Environment
└── test.ini

若出現錯誤 `cookiecutter` library is missing from import path.。則加裝 cookiecutter :

 pip install cookiecutter 

修改 plugin.py:撰寫 plugin 類別

修改 ckanext-iauthfunctions/ckanext/iauthfunctions/plugin.py。CKAN 的 extension 其實就是一個 plugin,所有 CKAN plugin 都需繼承自 plugins.SingletonPlugin
 
import ckan.plugins as plugins

class ExampleIAuthFunctionsPlugin(plugins.SingletonPlugin):
    pass

修改 setup.py:設定 entry_points

修改 ckanext-iauthfunctions/setup.py 的 entry_points

entry_points='''
        [ckan.plugins] 
        example_iauthfunctions=ckanext.iauthfunctions.plugin:ExampleIAuthFunctionsPlugin

修改 ckan.ini:啟用 plugin

修改 /etc/ckan/default/ckan.ini。CKAN 的 extension plugins 必須加到 CKAN 設定檔的 ckan.plugins 中,CKAN 才會呼叫。

ckan.plugins = stats text_view 略... example_iauthfunctions

安裝測試

  1. 進入Python Virtual Environment: 
    . /usr/lib/ckan/default/bin/activate
  2. 切換目錄:
    cd /usr/lib/ckan/default/src/ckanext-iauthfunctions
  3. 安裝 Plugin: 
    python setup.py develop
  4. 重啟 CKAN 服務:
    sudo supervisorctl restart ckan-uwsgi:*

檢視錯誤

cat /etc/ckan/default/uwsgi.ERR

沒有留言:

張貼留言