Пример #1
0
class XMLRPCBaseCaseForm(BaseCaseForm):
    estimated_time = DurationField(required=False)
    is_automated = forms.ChoiceField(
        choices=FULL_AUTOMATED_CHOICES,
        widget=forms.CheckboxSelectMultiple(),
        required=False,
    )
Пример #2
0
class BaseRunForm(forms.Form):
    summary = forms.CharField(label='Summary', max_length=255)
    manager = UserField(label='Manager')
    default_tester = UserField(
        label='Default Tester',
        required=False
    )
    product = forms.ModelChoiceField(
        label='Product',
        queryset=Product.objects.all(),
        empty_label=None,
    )
    estimated_time = DurationField(required=False)
    product_version = forms.ModelChoiceField(
        label='Product Version',
        queryset=Version.objects.none(),
        empty_label=None,
    )
    build = forms.ModelChoiceField(
        label='Build',
        queryset=TestBuild.objects.none(),
    )
    notes = forms.CharField(
        label='Notes',
        widget=forms.Textarea,
        required=False
    )
    keep_status = forms.BooleanField(
        label='Reserve Status', widget=forms.CheckboxInput(),
        required=False
    )
    keep_assignee = forms.BooleanField(
        label='Reserve Assignee', widget=forms.CheckboxInput(),
        required=False,
        initial=True
    )
    errata_id = forms.IntegerField(
        label='Errata_id',
        required=False,
    )
    auto_update_run_status = forms.BooleanField(
        label='Set Status Automatically', widget=forms.CheckboxInput(),
        help_text='Check to update test run status automatically',
        required=False,
        initial=False
    )

    def populate(self, product_id):
        # We can dynamically set choices for a form field:
        # Seen at: http://my.opera.com/jacob7908/blog/2009/06/19/
        #          django-choicefield-queryset (Chinese)
        # Is this documented elsewhere?
        query = {'product_id': product_id}
        self.fields['product_version'].queryset = Version.objects.filter(
            product__id=product_id)
        self.fields['build'].queryset = TestBuild.list_active(query)
Пример #3
0
class BaseCaseForm(forms.Form):
    summary = forms.CharField(label="Summary", )
    default_tester = UserField(label="Default tester", required=False)
    requirement = forms.CharField(label="Requirement", required=False)
    is_automated = forms.MultipleChoiceField(
        choices=AUTOMATED_CHOICES,
        widget=forms.CheckboxSelectMultiple(),
    )
    is_automated_proposed = forms.BooleanField(label='Autoproposed',
                                               required=False)
    script = forms.CharField(label="Script", required=False)
    arguments = forms.CharField(label="Arguments", required=False)
    alias = forms.CharField(label="Alias", required=False)
    extra_link = StripURLField(label='Extra link',
                               max_length=1024,
                               required=False)
    # sortkey = forms.IntegerField(label = 'Sortkey', required = False)
    case_status = forms.ModelChoiceField(label="Case status",
                                         queryset=TestCaseStatus.objects.all(),
                                         empty_label=None,
                                         required=False)
    priority = forms.ModelChoiceField(
        label="Priority",
        queryset=Priority.objects.all(),
        empty_label=None,
    )
    product = forms.ModelChoiceField(
        label="Product",
        queryset=Product.objects.all(),
        empty_label=None,
    )
    category = forms.ModelChoiceField(
        label="Category",
        queryset=TestCaseCategory.objects.none(),
        empty_label=None,
    )
    component = forms.ModelMultipleChoiceField(
        label="Components",
        queryset=Component.objects.none(),
        required=False,
    )
    notes = forms.CharField(label='Notes',
                            widget=forms.Textarea,
                            required=False)
    estimated_time = DurationField(label='Estimated Time',
                                   initial='0m',
                                   required=False)
    setup = forms.CharField(label="Setup", widget=TinyMCE(), required=False)
    action = forms.CharField(label="Actions", widget=TinyMCE(), required=False)
    effect = forms.CharField(label="Expect results",
                             widget=TinyMCE(),
                             required=False)
    breakdown = forms.CharField(label="Breakdown",
                                widget=TinyMCE(),
                                required=False)

    tag = forms.CharField(label="Tag", required=False)

    def __init__(self, *args, **kwargs):
        if args:
            self.notes_val = args[0].get('notes', None)
            self.script_val = args[0].get('script', None)
        elif kwargs:
            self.notes_val = kwargs.get('notes', None)
            self.script_val = kwargs.get('script', None)
        else:
            self.notes_val = ''
            self.script_val = ''
        super(BaseCaseForm, self).__init__(*args, **kwargs)

    def clean_is_automated(self):
        data = self.cleaned_data['is_automated']
        if len(data) == 2:
            return 2

        if len(data):
            # FIXME: Should data always be a list?
            try:
                return int(data[0])
            except ValueError:
                return data[0]

        return data

    def clean_script(self):
        if self.script_val == '':
            return u''
        elif self.script_val:
            return self.cleaned_data['script']
        else:
            return None

    def clean_notes(self):
        if self.notes_val == '':
            return u''
        elif self.notes_val:
            return self.cleaned_data['notes']
        else:
            return None

    # def clean_alias(self):
    #    data = self.cleaned_data['alias']
    #    tc_count = TestCase.objects.filter(alias = data).count()
    #
    #    if tc_count == 0:
    #        return data
    #
    #    raise forms.ValidationError('Duplicated alias exist in database.')

    def clean_tag(self):
        tags = []
        if self.cleaned_data['tag']:
            tag_names = TestTag.string_to_list(self.cleaned_data['tag'])
            tags = TestTag.get_or_create_many_by_name(tag_names)
        return tags

    def populate(self, product_id=None):
        if product_id:
            self.fields['category'].queryset = TestCaseCategory.objects.filter(
                product__id=product_id)
            self.fields['component'].queryset = Component.objects.filter(
                product__id=product_id)
        else:
            self.fields['category'].queryset = TestCaseCategory.objects.all()
            self.fields['component'].queryset = Component.objects.all()