Exemplo n.º 1
0
def update(execution_id, values):
    """
    .. function:: RPC TestExecution.update(execution_id, values)

        Update the selected TestExecution

        :param execution_id: PK of TestExecution to modify
        :type execution_id: int
        :param values: Field values for :class:`tcms.testruns.models.TestExecution`
        :type values: dict
        :return: Serialized :class:`tcms.testruns.models.TestExecution` object
        :rtype: dict
        :raises ValueError: if data validations fail
        :raises PermissionDenied: if missing *testruns.change_testexecution* permission
    """
    test_execution = TestExecution.objects.get(pk=execution_id)

    if values.get('case_text_version') == 'latest':
        values['case_text_version'] = test_execution.case.history.latest(
        ).history_id

    form = UpdateExecutionForm(values, instance=test_execution)

    if form.is_valid():
        test_execution = form.save()
    else:
        raise ValueError(form_errors_to_list(form))

    return test_execution.serialize()
Exemplo n.º 2
0
def update(execution_id, values, **kwargs):
    """
    .. function:: RPC TestExecution.update(execution_id, values)

        Update the selected TestExecution

        :param execution_id: PK of TestExecution to modify
        :type execution_id: int
        :param values: Field values for :class:`tcms.testruns.models.TestExecution`
        :type values: dict
        :param kwargs: Dict providing access to the current request, protocol
                entry point name and handler instance from the rpc method
        :return: Serialized :class:`tcms.testruns.models.TestExecution` object
        :rtype: dict
        :raises ValueError: if data validations fail
        :raises PermissionDenied: if missing *testruns.change_testexecution* permission
    """
    test_execution = TestExecution.objects.get(pk=execution_id)

    if values.get("case_text_version") == "latest":
        values["case_text_version"] = test_execution.case.history.latest(
        ).history_id

    if values.get("status") and not values.get("tested_by"):
        values["tested_by"] = kwargs.get(REQUEST_KEY).user.id

    if values.get("status") and not values.get("build"):
        values["build"] = test_execution.run.build.pk

    form = UpdateExecutionForm(values, instance=test_execution)

    if form.is_valid():
        test_execution = form.save()
    else:
        raise ValueError(form_errors_to_list(form))

    # if this call updated TE.status then adjust timestamps
    if values.get("status"):
        now = timezone.now()
        if test_execution.status.weight != 0:
            test_execution.close_date = now
        else:
            test_execution.close_date = None
        test_execution.save()

        all_executions = TestExecution.objects.filter(run=test_execution.run)
        if (test_execution.status.weight != 0
                and not all_executions.filter(status__weight=0).exists()):
            test_execution.run.stop_date = now
            test_execution.run.save()
        elif test_execution.status.weight == 0 and test_execution.run.stop_date:
            test_execution.run.stop_date = None
            test_execution.run.save()

    return test_execution.serialize()
Exemplo n.º 3
0
def update(execution_id, values, **kwargs):
    """
    .. function:: XML-RPC TestExecution.update(execution_id, values)

        Update the selected TestExecution

        :param execution_id: PK of TestExecution to modify
        :type execution_id: int
        :param values: Field values for :class:`tcms.testruns.models.TestExecution`
        :type values: dict
        :param kwargs: Dict providing access to the current request, protocol
                entry point name and handler instance from the rpc method
        :return: Serialized :class:`tcms.testruns.models.TestExecution` object
        :rtype: dict
        :raises ValueError: if data validations fail
        :raises PermissionDenied: if missing *testruns.change_testexecution* permission
    """

    execution = TestExecution.objects.get(pk=execution_id)
    form = UpdateExecutionForm(values)

    if form.is_valid():
        if form.cleaned_data['build']:
            execution.build = form.cleaned_data['build']

        if form.cleaned_data['assignee']:
            execution.assignee = form.cleaned_data['assignee']

        if form.cleaned_data['status']:
            execution.status = form.cleaned_data['status']
            request = kwargs.get(REQUEST_KEY)
            execution.tested_by = request.user

        if form.cleaned_data['sortkey'] is not None:
            execution.sortkey = form.cleaned_data['sortkey']

        if form.cleaned_data['tested_by']:
            execution.tested_by = form.cleaned_data['tested_by']

        case_text_version = form.cleaned_data['case_text_version']
        if case_text_version:
            _update_case_text_version(execution, case_text_version)

        execution.save()

    else:
        raise ValueError(form_errors_to_list(form))

    return execution.serialize()
Exemplo n.º 4
0
def update(execution_id, values, **kwargs):
    """
    .. function:: XML-RPC TestExecution.update(execution_id, values)

        Update the selected TestExecution

        :param execution_id: PK of TestExecution to modify
        :type execution_id: int
        :param values: Field values for :class:`tcms.testruns.models.TestExecution`
        :type values: dict
        :return: Serialized :class:`tcms.testruns.models.TestExecution` object
        :raises: PermissionDenied if missing *testruns.change_testexecution* permission
    """

    tcr = TestExecution.objects.get(pk=execution_id)
    form = UpdateExecutionForm(values)

    if form.is_valid():
        if form.cleaned_data['build']:
            tcr.build = form.cleaned_data['build']

        if form.cleaned_data['assignee']:
            tcr.assignee = form.cleaned_data['assignee']

        if form.cleaned_data['status']:
            tcr.status = form.cleaned_data['status']
            request = kwargs.get(REQUEST_KEY)
            tcr.tested_by = request.user

        if form.cleaned_data['sortkey'] is not None:
            tcr.sortkey = form.cleaned_data['sortkey']

        if form.cleaned_data['tested_by']:
            tcr.tested_by = form.cleaned_data['tested_by']

        tcr.save()

    else:
        raise ValueError(form_errors_to_list(form))

    return tcr.serialize()