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

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 _ 

6 

7 

8import json 

9 

10default_config = { 

11 "openai_key": "", 

12 "openai_model": "gpt-4", 

13 "max_tokens": 500, 

14 "temperature": 0.0, 

15} 

16 

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) 

21 

22 

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 

28 

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) 

34 

35 return {**default_config, **config, "maturity_model": get_plugin('udc').maturity_model} 

36 

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