7
7
from database import (
8
8
Database ,
9
9
ReportJiraQARequests ,
10
- ReportJiraQANeeded
10
+ ReportJiraQANeeded ,
11
+ ReportJIraQARequestsNewIssueType
11
12
)
12
13
from utils .datetime_utils import DatetimeUtils as dt
13
14
from utils .constants import FILTER_ID_ALL_REQUESTS_2022 , MAX_RESULT
18
19
STORY_POINTS = "customfield_10037"
19
20
FIREFOX_RELEASE_TRAIN = "customfield_10155"
20
21
ENGINEERING_TEAM = "customfield_10134"
21
- DEFAULT_COLUMNS = "id,key,status,created,summary,labels,assignee,"
22
+ DEFAULT_COLUMNS = "id,key,status,created,summary,labels,assignee"
23
+ DEFAULT_COLUMNS_ISSUE_TYPE = "id,key,status,created,summary,labels,assignee,issuetype,parent"
24
+ TESTED_TRAINS = "customfield_11930"
25
+
26
+ NEW_FILTER_ID = "14266"
22
27
23
28
JQL_QUERY = 'jql=filter='
24
29
@@ -45,6 +50,14 @@ def filters(self):
45
50
46
51
return self .client .get_search (query )
47
52
53
+ def filters_new_issue_type (self ):
54
+ query = JQL_QUERY + NEW_FILTER_ID + '&fields=' \
55
+ + DEFAULT_COLUMNS_ISSUE_TYPE + ',' + STORY_POINTS + ',' \
56
+ + FIREFOX_RELEASE_TRAIN + ',' + TESTED_TRAINS + ',' \
57
+ + ENGINEERING_TEAM + '&' + MAX_RESULT
58
+
59
+ return self .client .get_search (query )
60
+
48
61
def filter_qa_needed (self ):
49
62
query = JQL_QUERY + FILTER_ID_QA_NEEDED_iOS + '&' + MAX_RESULT
50
63
return self .client .get_search (query )
@@ -67,6 +80,18 @@ def jira_qa_requests(self):
67
80
68
81
self .db .report_jira_qa_requests_insert (data_frame )
69
82
83
+ def jira_qa_requests_new_issue_types (self ):
84
+ payload = self .filters_new_issue_type ()
85
+ print ("This is the payload returning from filter" )
86
+ print (payload )
87
+
88
+ self .db .qa_requests_delete ()
89
+
90
+ data_frame = self .db .report_jira_qa_requests__new_issue_types_payload (payload )
91
+ print (data_frame )
92
+
93
+ self .db .report_jira_qa_requests_insert_new_issue_types (data_frame )
94
+
70
95
def jira_qa_needed (self ):
71
96
payload = self .filter_qa_needed ()
72
97
data_frame = self .db .report_jira_qa_needed (payload )
@@ -132,6 +157,56 @@ def report_jira_qa_requests_payload(self, payload):
132
157
133
158
return df_selected
134
159
160
+ def report_jira_qa_requests__new_issue_types_payload (self , payload ):
161
+ # Normalize the JSON data
162
+ df = pd .json_normalize (payload , sep = '_' )
163
+
164
+ # Check if 'jira_assignee_username' exists
165
+ # if not use 'alternative_assignee_emailAddress'
166
+ if 'fields_assignee_emailAddress' not in df .columns :
167
+ df ['fields_assignee_emailAddress' ] = df .get ('fields_assignee' , "None" ) # noqa
168
+ else :
169
+ df ['fields_assignee_emailAddress' ] = df ['fields_assignee_emailAddress' ].fillna ("Not Assigned" ) # noqa
170
+
171
+ # Drop the alternative column if it exists
172
+ if 'fields_assignee' in df .columns :
173
+ df .drop (columns = ['fields_assignee' ], inplace = True )
174
+
175
+ # Select specific columns
176
+ selected_columns = {
177
+ 'key' : 'jira_key' ,
178
+ 'fields_summary' : 'jira_summary' ,
179
+ 'fields_created' : 'jira_created_at' ,
180
+ 'fields_customfield_10155_value' : 'jira_firefox_release_train' ,
181
+ 'fields_customfield_10134_value' : 'jira_engineering_team' ,
182
+ 'fields_customfield_10037' : 'jira_story_points' ,
183
+ 'fields_status_name' : 'jira_status' ,
184
+ 'fields_assignee_emailAddress' : 'jira_assignee_username' ,
185
+ 'fields_labels' : 'jira_labels' ,
186
+ 'fields_customfield_11930' : 'jira_tested_train' ,
187
+ 'fields_issuetype_name' :'jira_issue_type' ,
188
+ 'fields_parent_key' : 'jira_parent_link'
189
+ }
190
+
191
+ # Select specific columns
192
+ df_selected = df [selected_columns .keys ()]
193
+ print (df_selected )
194
+
195
+ # Rename columns
196
+ df_selected = df_selected .rename (columns = selected_columns )
197
+
198
+ df_selected ['jira_created_at' ] = df_selected ['jira_created_at' ].apply (dt .convert_to_utc ) # noqa
199
+
200
+ # Join list of labels into a single string
201
+ df_selected ['jira_labels' ] = df_selected ['jira_labels' ].apply (lambda x : ',' .join (x ) if isinstance (x , list ) else x ) # noqa
202
+
203
+ # Convert NaN values to 0 and ensure the column is of type int
204
+ df_selected ['jira_story_points' ] = df_selected ['jira_story_points' ].fillna (0 ).astype (int ) # noqa
205
+
206
+ df_selected = df_selected .where (pd .notnull (df_selected ), None )
207
+
208
+ return df_selected
209
+
135
210
def report_jira_qa_requests_insert (self , payload ):
136
211
print (payload )
137
212
@@ -149,6 +224,27 @@ def report_jira_qa_requests_insert(self, payload):
149
224
self .session .add (report )
150
225
self .session .commit ()
151
226
227
+ def report_jira_qa_requests_insert_new_issue_types (self , payload ):
228
+ print (payload )
229
+
230
+ for index , row in payload .iterrows ():
231
+ print (row )
232
+ report = ReportJIraQARequestsNewIssueType (jira_key = row ['jira_key' ],
233
+ jira_created_at = row ['jira_created_at' ].date (), # noqa
234
+ jira_summary = row ['jira_summary' ], # noqa
235
+ jira_firefox_release_train = row ['jira_firefox_release_train' ], # noqa
236
+ jira_engineering_team = row ['jira_engineering_team' ], # noqa
237
+ jira_story_points = row ['jira_story_points' ], # noqa
238
+ jira_status = row ['jira_status' ], # noqa
239
+ jira_assignee_username = row ['jira_assignee_username' ], # noqa
240
+ jira_labels = row ['jira_labels' ],
241
+ jira_tested_train = row ['jira_tested_train' ],
242
+ jira_issue_type = row ['jira_issue_type' ],
243
+ jira_parent_link = row ['jira_parent_link' ]
244
+ )
245
+ self .session .add (report )
246
+ self .session .commit ()
247
+
152
248
def report_jira_qa_needed (self , payload ):
153
249
# Normalize the JSON data
154
250
df = pd .json_normalize (payload , sep = '_' )
0 commit comments