Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

# -*- coding: utf-8 -*- 

# Copyright: (c) 2022, XLAB Steampunk <steampunk@xlab.si> 

# 

# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 

 

from __future__ import absolute_import, division, print_function 

 

__metaclass__ = type 

 

SN_QUERY_MAPPING = dict( 

query="sysparm_query", 

display_value="sysparm_display_value", 

exclude_reference_link="sysparm_exclude_reference_link", 

suppress_pagination_header="sysparm_suppress_pagination_header", 

fields="sysparm_fields", 

columns="sysparm_fields", 

query_category="sysparm_query_category", 

limit="sysparm_limit", 

view="sysparm_view", 

query_no_domain="sysparm_query_no_domain", 

no_count="sysparm_no_count", 

sys_id="sys_id", 

sysparm_query="sysparm_query", 

) 

 

# FIELD_COLUMNS_NAME and FIELD_QUERY_NAME are the ones that are additionally modified in api_info.py, 

# so setting constant variable for them. 

FIELD_COLUMNS_NAME = "columns" 

FIELD_QUERY_NAME = "sysparm_query" 

FIELD_SYS_ID = "sys_id" 

FIELD_DATA = "data" 

FIELD_TEMPLATE = "template" 

FIELD_DATA_RENDERED = "data_rendered" 

FIELD_QUERY_PARAMS = "query_params" 

 

POSSIBLE_FILTER_PARAMETERS = [ 

FIELD_QUERY_NAME, 

"display_value", 

"exclude_reference_link", 

"fields", 

"query_category", 

"query_no_domain", 

"no_count", 

FIELD_COLUMNS_NAME, 

FIELD_SYS_ID, 

] 

 

ACTION_POST = "post" 

ACTION_PATCH = "patch" 

ACTION_DELETE = "delete" 

 

 

def transform_query_to_servicenow_query(query): 

""" 

Transforms query by applying SN_QUERY_MAPPING to query's keys. 

""" 

return dict( 

(SN_QUERY_MAPPING[query_key], query_value) 

for (query_key, query_value) in query.items() 

) 

 

 

def table_name(module): 

""" 

In api.py and api_info.py the table's name is always going to be stored in module's resource 

""" 

return module.params["resource"] 

 

 

def get_query_by_sys_id(module): 

return dict(sys_id=module.params[FIELD_SYS_ID]) 

 

 

def field_present(module, field): 

return field in module.params and module.params[field]