Skip to content

Commit

Permalink
Refactor NewExecutionForm to ModelForm
Browse files Browse the repository at this point in the history
  • Loading branch information
rsasov committed Aug 1, 2020
1 parent 1bd4b01 commit 700e6dd
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 24 deletions.
34 changes: 12 additions & 22 deletions tcms/rpc/api/forms/testrun.py
Original file line number Diff line number Diff line change
@@ -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

Expand Down Expand Up @@ -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)
4 changes: 2 additions & 2 deletions tcms/rpc/api/testexecution.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.')
Expand Down

0 comments on commit 700e6dd

Please sign in to comment.