@@ -146,17 +146,14 @@ def edit_engagement(request, eid):
146146 engagement = Engagement .objects .get (pk = eid )
147147 is_ci_cd = engagement .engagement_type == "CI/CD"
148148 jira_epic_form = None
149- jira_project = jira_helper . get_jira_project ( engagement , use_inheritance = False )
149+ jira_project = None
150150 jira_error = False
151151
152152 if request .method == 'POST' :
153153 form = EngForm (request .POST , instance = engagement , cicd = is_ci_cd , product = engagement .product .id , user = request .user )
154+ jira_project = jira_helper .get_jira_project (engagement , use_inheritance = False )
154155
155- jira_project_form = JIRAProjectForm (request .POST , prefix = 'jira-project-form' , instance = jira_project , target = 'engagement' )
156- jira_epic_form = JIRAEngagementForm (request .POST , prefix = 'jira-epic-form' , instance = engagement )
157-
158- if (form .is_valid () and (jira_project_form is None or jira_project_form .is_valid ()) and (jira_epic_form is None or jira_epic_form .is_valid ())):
159-
156+ if form .is_valid ():
160157 # first save engagement details
161158 new_status = form .cleaned_data .get ('status' )
162159 engagement = form .save (commit = False )
@@ -170,72 +167,37 @@ def edit_engagement(request, eid):
170167 t = ", " .join ('"{0}"' .format (w ) for w in tags )
171168 engagement .tags = t
172169
173- # save jira project config
174- jira_project = jira_project_form .save (commit = False )
175- jira_project .engagement = engagement
176- # only check jira project if form is sufficiently populated
177- if jira_project .jira_instance and jira_project .project_key :
178- jira_error = not jira_helper .is_jira_project_valid (jira_project )
179-
180- if not jira_error :
181- jira_project .save ()
182-
183- messages .add_message (
184- request ,
185- messages .SUCCESS ,
186- 'JIRA Project config added successfully.' ,
187- extra_tags = 'alert-success' )
188-
189- # push epic
190- if jira_epic_form .cleaned_data .get ('push_to_jira' ):
191- if jira_helper .push_to_jira (engagement ):
192- messages .add_message (
193- request ,
194- messages .SUCCESS ,
195- 'Push to JIRA for Epic queued succesfully, check alerts on the top right for errors' ,
196- extra_tags = 'alert-success' )
197- else :
198- jira_error = True
199-
200- messages .add_message (
201- request ,
202- messages .SUCCESS ,
203- 'Push to JIRA for Epic failed, check alerts on the top right for errors' ,
204- extra_tags = 'alert-danger' )
205-
206170 messages .add_message (
207171 request ,
208172 messages .SUCCESS ,
209173 'Engagement updated successfully.' ,
210174 extra_tags = 'alert-success' )
211175
212- if not jira_error :
176+ success , jira_project_form = jira_helper .process_jira_project_form (request , instance = jira_project , engagement = engagement )
177+ error = not success
178+
179+ success , jira_epic_form = jira_helper .process_jira_epic_form (request , engagement = engagement )
180+ error = error or not success
181+
182+ if not error :
213183 if '_Add Tests' in request .POST :
214184 return HttpResponseRedirect (
215185 reverse ('add_tests' , args = (engagement .id , )))
216186 else :
217187 return HttpResponseRedirect (
218188 reverse ('view_engagement' , args = (engagement .id , )))
219-
220189 else :
221- # if forms invalid, page will just reload and show errors
222- if jira_project_form .errors or jira_epic_form .errors :
223- messages .add_message (
224- request ,
225- messages .ERROR ,
226- 'Errors in JIRA forms, see below' ,
227- extra_tags = 'alert-danger' )
190+ logger .debug (form .errors )
228191
229- else :
230- form = EngForm (initial = {'product' : engagement .product }, instance = engagement , cicd = is_ci_cd , product = engagement .product , user = request .user )
192+ form = EngForm (initial = {'product' : engagement .product }, instance = engagement , cicd = is_ci_cd , product = engagement .product , user = request .user )
231193
232- jira_project_form = None
233- jira_epic_form = None
234- if get_system_setting ('enable_jira' ):
235- jira_project_form = JIRAProjectForm ( prefix = 'jira-project-form' , instance = jira_project , target = ' engagement' , product = engagement . product )
236- if jira_project :
237- logger .debug ('showing jira-epic-form' )
238- jira_epic_form = JIRAEngagementForm (prefix = 'jira-epic-form' , instance = engagement )
194+ jira_project_form = None
195+ jira_epic_form = None
196+ if get_system_setting ('enable_jira' ):
197+ jira_project = jira_helper . get_jira_project ( engagement , use_inheritance = False )
198+ jira_project_form = JIRAProjectForm ( instance = jira_project , target = 'engagement' , product = engagement . product )
199+ logger .debug ('showing jira-epic-form' )
200+ jira_epic_form = JIRAEngagementForm (instance = engagement )
239201
240202 form .initial ['tags' ] = [tag .name for tag in engagement .tags ]
241203
@@ -248,6 +210,7 @@ def edit_engagement(request, eid):
248210 'edit' : True ,
249211 'jira_epic_form' : jira_epic_form ,
250212 'jira_project_form' : jira_project_form ,
213+ 'engagement' : engagement ,
251214 })
252215
253216
0 commit comments