def update(case_id, values): """ .. function:: RPC TestCase.update(case_id, values) Update the fields of the selected test case. :param case_id: PK of TestCase to be modified :type case_id: int :param values: Field values for :class:`tcms.testcases.models.TestCase`. :type values: dict :return: Serialized :class:`tcms.testcases.models.TestCase` object :rtype: dict :raises ValueError: if form is not valid :raises TestCase.DoesNotExist: if object specified by PK doesn't exist :raises PermissionDenied: if missing *testcases.change_testcase* permission """ test_case = TestCase.objects.get(pk=case_id) form = UpdateForm(values, instance=test_case) if form.is_valid(): test_case = form.save() else: raise ValueError(form_errors_to_list(form)) return test_case.serialize()
def update(case_id, values): """ .. function:: XML-RPC TestCase.update(case_id, values) Update the fields of the selected test case. :param case_id: PK of TestCase to be modified :type case_id: int :param values: Field values for :class:`tcms.testcases.models.TestCase`. :type values: dict :return: Serialized :class:`tcms.testcases.models.TestCase` object :rtype: dict :raises: TestCase.DoesNotExist if object specified by PK doesn't exist :raises: PermissionDenied if missing *testcases.change_testcase* permission """ form = UpdateForm(values) if values.get('category') and not values.get('product'): raise ValueError('Product ID is required for category') if values.get('product'): form.populate(product_id=values['product']) if form.is_valid(): test_case = TestCase.objects.get(pk=case_id) for key in values.keys(): # only modify attributes that were passed via parameters # skip attributes which are Many-to-Many relations if key not in ['component', 'tag'] and hasattr(test_case, key): setattr(test_case, key, form.cleaned_data[key]) test_case.save() else: raise ValueError(form_errors_to_list(form)) return test_case.serialize()
def update(case_id, values): """ .. function:: RPC TestCase.update(case_id, values) Update the fields of the selected test case. :param case_id: PK of TestCase to be modified :type case_id: int :param values: Field values for :class:`tcms.testcases.models.TestCase`. :type values: dict :return: Serialized :class:`tcms.testcases.models.TestCase` object :rtype: dict :raises ValueError: if form is not valid :raises TestCase.DoesNotExist: if object specified by PK doesn't exist :raises PermissionDenied: if missing *testcases.change_testcase* permission """ test_case = TestCase.objects.get(pk=case_id) form = UpdateForm(values, instance=test_case) if form.is_valid(): test_case = form.save() result = model_to_dict(test_case, exclude=["component", "plan", "tag"]) # b/c date may be None and model_to_dict() doesn't return it result["create_date"] = test_case.create_date # additional information result["case_status__name"] = test_case.case_status.name result["category__name"] = test_case.category.name result["priority__value"] = test_case.priority.value result["author__username"] = ( test_case.author.username if test_case.author else None ) result["default_tester__username"] = ( test_case.default_tester.username if test_case.default_tester else None ) result["reviewer__username"] = ( test_case.reviewer.username if test_case.reviewer else None ) result["setup_duration"] = str(result["setup_duration"]) result["testing_duration"] = str(result["testing_duration"]) return result raise ValueError(form_errors_to_list(form))