def edit_engagement(request, eid): eng = Engagement.objects.get(pk=eid) ci_cd_form = False if eng.engagement_type == "CI/CD": ci_cd_form = True jform = None use_jira = get_system_setting( 'enable_jira') and eng.product.jira_pkey is not None if request.method == 'POST': form = EngForm(request.POST, instance=eng, cicd=ci_cd_form, product=eng.product.id, user=request.user) if 'jiraform-push_to_jira' in request.POST: jform = JIRAEngagementForm(request.POST, prefix='jiraform', instance=eng) if (form.is_valid() and jform is None) or (form.is_valid() and jform and jform.is_valid()): logger.debug('jform valid') if 'jiraform-push_to_jira' in request.POST: logger.debug('push_to_jira true') if JIRA_Issue.objects.filter(engagement=eng).exists(): if Dojo_User.wants_block_execution(request.user): update_epic(eng, jform.cleaned_data.get('push_to_jira')) else: update_epic_task.delay( eng, jform.cleaned_data.get('push_to_jira')) else: if Dojo_User.wants_block_execution(request.user): add_epic(eng, jform.cleaned_data.get('push_to_jira')) else: add_epic_task.delay( eng, jform.cleaned_data.get('push_to_jira')) temp_form = form.save(commit=False) if (temp_form.status == "Cancelled" or temp_form.status == "Completed"): temp_form.active = False elif (temp_form.active is False): temp_form.active = True temp_form.product_id = form.cleaned_data.get('product').id temp_form.save() tags = request.POST.getlist('tags') t = ", ".join('"{0}"'.format(w) for w in tags) eng.tags = t messages.add_message(request, messages.SUCCESS, 'Engagement updated successfully.', extra_tags='alert-success') if '_Add Tests' in request.POST: return HttpResponseRedirect( reverse('add_tests', args=(eng.id, ))) else: return HttpResponseRedirect( reverse('view_engagement', args=(eng.id, ))) else: form = EngForm(initial={'product': eng.product.id}, instance=eng, cicd=ci_cd_form, product=eng.product.id, user=request.user) if use_jira: jform = JIRAEngagementForm(prefix='jiraform', instance=eng) else: jform = None form.initial['tags'] = [tag.name for tag in eng.tags] title = "" if eng.engagement_type == "CI/CD": title = " CI/CD" product_tab = Product_Tab(eng.product.id, title="Edit" + title + " Engagement", tab="engagements") product_tab.setEngagement(eng) return render( request, 'dojo/new_eng.html', { 'product_tab': product_tab, 'form': form, 'edit': True, 'jform': jform, 'eng': eng })
def add_epic_task(eng, push_to_jira): logger.info("add epic task") add_epic(eng, push_to_jira)