From 700e6dd0031f4f14b609c046fb3a24182d50736c Mon Sep 17 00:00:00 2001 From: Rosen Sasov Date: Sat, 18 Jul 2020 00:48:23 +0300 Subject: [PATCH] Refactor NewExecutionForm to ModelForm --- tcms/rpc/api/forms/testrun.py | 34 ++++++++++++---------------------- tcms/rpc/api/testexecution.py | 4 ++-- 2 files changed, 14 insertions(+), 24 deletions(-) diff --git a/tcms/rpc/api/forms/testrun.py b/tcms/rpc/api/forms/testrun.py index 666302b353..db34c38fda 100644 --- a/tcms/rpc/api/forms/testrun.py +++ b/tcms/rpc/api/forms/testrun.py @@ -1,13 +1,13 @@ from django import forms from django.contrib.auth import get_user_model +from tcms.core.forms.fields import UserField from tcms.management.models import Build -from tcms.testcases.models import TestCase +from tcms.rpc.api.forms import UpdateModelFormMixin, DateTimeField from tcms.testplans.models import TestPlan -from tcms.core.forms.fields import UserField -from tcms.testruns.forms import BaseCaseRunForm, BaseRunForm +from tcms.testruns.forms import BaseTestExecutionForm, BaseRunForm +from tcms.testruns.models import TestExecution from tcms.testruns.models import TestExecutionStatus, TestRun -from tcms.rpc.api.forms import UpdateModelFormMixin, DateTimeField User = get_user_model() # pylint: disable=invalid-name @@ -36,39 +36,29 @@ def populate(self, product_id): self.fields['build'].queryset = Build.objects.filter(product_id=product_id, is_active=True) -class NewExecutionForm(BaseCaseRunForm): - assignee = forms.ModelChoiceField(queryset=User.objects.all(), required=False) - run = forms.ModelChoiceField(queryset=TestRun.objects.all()) - case = forms.ModelChoiceField(queryset=TestCase.objects.all()) - - def clean_assignee(self): - data = self.cleaned_data.get('assignee') - if not data: - if self.cleaned_data.get('case') \ - and self.cleaned_data['case'].default_tester_id: - data = self.cleaned_data['case'].default_tester - elif self.cleaned_data.get('run') \ - and self.cleaned_data['run'].default_tester_id: - data = self.cleaned_data['run'].default_tester +class NewTestExecutionForm(forms.ModelForm): + class Meta: + model = TestExecution + exclude = ('assignee', 'tested_by', 'status') - return data + assignee = UserField(required=False) + tested_by = UserField(required=False) + status = forms.ModelChoiceField(queryset=TestExecutionStatus.objects.all(), required=False) def clean_case_text_version(self): data = self.cleaned_data.get('case_text_version') if not data and self.cleaned_data.get('case'): data = self.cleaned_data['case'].history.latest().history_id - return data def clean_status(self): data = self.cleaned_data.get('status') if not data: data = TestExecutionStatus.objects.filter(weight=0).first() - return data -class UpdateExecutionForm(BaseCaseRunForm): +class UpdateExecutionForm(BaseTestExecutionForm): tested_by = forms.ModelChoiceField(queryset=User.objects.all(), required=False) build = forms.ModelChoiceField(queryset=Build.objects.all(), required=False) case_text_version = forms.CharField(required=False) diff --git a/tcms/rpc/api/testexecution.py b/tcms/rpc/api/testexecution.py index 38f7b5f50c..93cd24ece9 100644 --- a/tcms/rpc/api/testexecution.py +++ b/tcms/rpc/api/testexecution.py @@ -7,7 +7,7 @@ from tcms.core.contrib.linkreference.models import LinkReference from tcms.core.helpers import comments from tcms.core.utils import form_errors_to_list -from tcms.rpc.api.forms.testrun import NewExecutionForm, UpdateExecutionForm +from tcms.rpc.api.forms.testrun import NewTestExecutionForm, UpdateExecutionForm from tcms.rpc.api.utils import tracker_from_url from tcms.rpc.decorators import permissions_required from tcms.rpc.serializer import Serializer @@ -107,7 +107,7 @@ def create(values): >>> TestExecution.create(values) """ - form = NewExecutionForm(values) + form = NewTestExecutionForm(values) if not isinstance(values, dict): raise TypeError('Argument values must be in dict type.')