Esempio n. 1
0
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
        })
Esempio n. 2
0
def update_epic_task(eng, push_to_jira):
    logger.info("update epic task")
    update_epic(eng, push_to_jira)
Esempio n. 3
0
def update_epic_task(eng, push_to_jira):
    logger.info("update epic task")
    update_epic(eng, push_to_jira)