-
Notifications
You must be signed in to change notification settings - Fork 2
/
tl_reports.py
139 lines (118 loc) · 4.92 KB
/
tl_reports.py
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# -*- coding: utf-8 -*-
"""module qatestlink.core.models.tl_reports"""
from .tl_models import ModelBase
class ReportBase(ModelBase):
"""TODO: doc class"""
totals = None
def __init__(self, properties, properties_int=None, properties_bool=None,
load=True):
"""TODO: doc method"""
super(ReportBase, self).__init__(
properties,
properties_int=properties_int,
properties_bool=properties_bool,
load=load)
self.totals = {}
def __repr__(self):
"""Show basic properties for this object
Returns:
str -- format text with values for
'ReportBase: totals:dict={}'
"""
return "ReportBase: totals:dict={}".format(self.totals)
class RTPlanTotals(ReportBase):
"""TODO: doc class"""
by_tester = None
def __init__(self, properties, properties_int=None, properties_bool=None,
load=False):
"""TODO: doc method"""
super(RTPlanTotals, self).__init__(
properties,
properties_int=properties_int,
properties_bool=properties_bool,
load=load)
self.by_tester = list()
# just load from this class instead of parent class
self._load()
def _load(self):
super(RTPlanTotals, self)._load()
for res_property in self._properties:
name = self.convert_name(res_property['name'])
value = res_property['value']
if name == 'with_tester':
with_tester_members = value['struct']['member']
by_testers = list()
for member in with_tester_members:
user_id = member['name']
report_totals_members = member.get(
'value')['struct']['member']
by_tester = {
"user_id": int(user_id),
"report_types": []
}
for member_total in report_totals_members:
report_type = member_total['name']
report_data_members = member_total.get(
'value')['struct']['member']
platform_id = None
report_type = None
qty = None
for report_data_member in report_data_members:
prop_name = report_data_member['name']
prop_value = report_data_member['value']
if prop_name == 'status':
report_type = prop_value['string']
if prop_name == 'platform_id':
try:
platform_id = prop_value['string']
except KeyError:
platform_id = prop_value['int']
if prop_name == 'exec_qty':
try:
qty = prop_value['string']
except KeyError:
qty = prop_value['int']
by_tester['report_types'].append(
{
"report_type": str(report_type),
"platform_id": int(platform_id),
"qty": int(qty)
}
)
by_testers.append(by_tester)
setattr(self, 'by_tester', by_testers)
setattr(self, 'with_tester', by_testers)
def __repr__(self):
"""Show basic properties for this object
Returns:
str -- format text with values for
'ReportBase: totals:dict={}'
"""
return "RTPlanTotals: by_tester:dict={}".format(self.totals)
class RTCase(ReportBase):
"""TODO: doc class"""
status = None
operation = None
overwrite = None
message = None
def __init__(self, properties, properties_int=None, properties_bool=None,
load=True):
"""TODO: doc method"""
super(RTCase, self).__init__(
properties,
properties_int=['id'],
properties_bool=['status', 'overwrite']
)
def __repr__(self):
"""Show basic properties for this object
Returns:
str -- format text with values for
'ReportBase: totals:dict={}'
"""
return ("RTCase: id={}, status:bool={}, operation={},"
"overwrite={}, message={}").format(
self.id,
self.status,
self.operation,
self.overwrite,
self.message)