Coverage for ckanext/udc/desc/utils.py: 35%
31 statements
« prev ^ index » next coverage.py v7.7.1, created at 2026-01-19 23:48 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2026-01-19 23:48 +0000
1import ckan.plugins.toolkit as tk
2from ckan.types import Context
3import ckan.logic as logic
4from ckan.plugins import get_plugin
5from ckan.common import _
8import json
10default_config = {
11 "openai_key": "",
12 "openai_model": "gpt-4",
13 "max_tokens": 500,
14 "temperature": 0.0,
15}
17def init_plugin():
18 config = tk.config.get("ckanext.udc.desc.config")
19 if not config:
20 tk.config["ckanext.udc.desc.config"] = json.dumps(default_config)
23def get_package(context: Context, package_id: str):
24 data_dict = {"id": package_id}
25 logic.check_access("package_show", context, data_dict=data_dict)
26 package_dict = logic.get_action("package_show")(context, data_dict)
27 return package_dict
29def get_config():
30 config = tk.config.get("ckanext.udc.desc.config")
31 if not config:
32 raise logic.ActionError(_("ckanext.udc.desc config is not set"))
33 config = json.loads(config)
35 return {**default_config, **config, "maturity_model": get_plugin('udc').maturity_model}
37# Function to generate mapping names for all maturity levels
38def gen_mapping(maturity_model):
39 """
40 This function maps the internal and external display names for all fields using the udc config.
41 :param mapping_json: udc config json string
42 :return: List of mappings between the internal and external display names
43 """
44 mm_mapping = {}
45 for mm in maturity_model:
46 for f in mm['fields']:
47 external_name = f.get('ckanField') or f.get('label')
48 internal_name = f.get('ckanField') or f.get('name')
49 short_desc = f.get('short_description')
50 mm_mapping[external_name] = ({'maturity_level': mm['name'], 'internal_name': internal_name, 'display_name': external_name, 'short_description': short_desc})
51 return mm_mapping