Example #1
0
class PlanFilterRunForm(forms.Form):
    build = forms.ModelChoiceField(
        label='Build', queryset=TestBuild.objects.all(),
        required=False
    )
    manager__username__iexact = UserField(required=False)
    plan = forms.CharField(required=True)
    run_id = forms.CharField(required=False)
    start_date__gt = forms.DateTimeField(required=False)
    summary__icontains = forms.CharField(required=False)
    default_tester__username__iexact = UserField(required=False)

    def __init__(self, request_data):
        super(PlanFilterRunForm, self).__init__(
            dict((k, v) for k, v in request_data.iteritems() if v.strip())
        )

    def clean(self):
        cleaned_data = {}
        for key, value in self.cleaned_data.iteritems():
            if not value:
                continue
            if not (isinstance(value, basestring) and not value.strip()):
                cleaned_data[key] = value
        return cleaned_data
Example #2
0
class RunModelForm(forms.ModelForm):
    manager = UserField(label='Manager')
    default_tester = UserField(label='Default Tester', required=False)
    product = forms.ModelChoiceField(
        label='Product',
        queryset=Product.objects.all(),
        empty_label=None,
    )
    build = forms.ModelChoiceField(
        label='Build',
        queryset=TestBuild.objects.none(),
    )

    class Meta:
        model = TestRun

    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)

    def clean_product_version(self):
        if hasattr(self.cleaned_data['product_version'], 'value'):
            return self.cleaned_data['product_version'].value
Example #3
0
class MulitpleRunsCloneForm(forms.Form):
    run = forms.ModelMultipleChoiceField(
        queryset=TestRun.objects.none(),
        widget=forms.CheckboxSelectMultiple(),
        required=False
    )
    product = forms.ModelChoiceField(
        queryset=Product.objects.all(),
        required=False
    )
    product_version = forms.ModelChoiceField(
        queryset=Version.objects.none(),
        required=False
    )
    build = forms.ModelChoiceField(
        label='Build',
        queryset=TestBuild.objects.none(),
        empty_label=None,
    )
    manager = UserField(required=False)
    default_tester = UserField(required=False)
    # assignee = UserField(required=False)
    update_manager = forms.BooleanField(
        help_text='Unchecking will keep the original manager',
        required=False,
    )
    update_default_tester = forms.BooleanField(
        help_text='Unchecking will keep the original default tester',
        required=False,
    )
    # update_assignee = forms.BooleanField(
    # help_text='Unchecking will keep the original assignee of case runs',
    #     required=False,
    # )
    update_case_text = forms.BooleanField(
        label='Use newest case text(setup/actions/effects/breakdown)',
        help_text='Unchecking will make me the default tester of copied cases',
        required=False
    )
    clone_cc = forms.BooleanField(
        help_text='Unchecking it will not clone the CC',
        required=False
    )
    clone_tag = forms.BooleanField(
        help_text='Unchecking it will not clone the tags',
        required=False
    )

    def populate(self, trs, product_id=None):
        self.fields['run'].queryset = TestRun.objects.filter(
            pk__in=trs).order_by('-pk')

        if product_id:
            self.fields['product_version'].queryset = Version.objects.filter(
                product__pk=product_id
            )
            self.fields['build'].queryset = TestBuild.objects.filter(
                product__pk=product_id
            )
Example #4
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)
Example #5
0
class SearchRunForm(forms.Form):
    search = forms.CharField(required=False)
    summary = forms.CharField(required=False)
    plan = forms.CharField(required=False)
    product = forms.ModelChoiceField(
        queryset=Product.objects.all(),
        required=False
    )
    product_version = forms.ModelChoiceField(
        queryset=Version.objects.none(),
        required=False
    )
    env_group = forms.ModelChoiceField(
        label='Environment Group',
        queryset=TCMSEnvGroup.get_active().all(),
        required=False
    )
    build = forms.ModelChoiceField(
        label='Build',
        queryset=TestBuild.objects.none(),
        required=False,
    )
    people_type = forms.ChoiceField(choices=PEOPLE_TYPE_CHOICES,
                                    required=False)
    people = UserField(required=False)
    manager = UserField(required=False)
    default_tester = UserField(required=False)
    status = forms.ChoiceField(choices=STATUS_CHOICES, required=False)
    tag__name__in = forms.CharField(label='Tag', required=False)

    case_run__assignee = UserField(required=False)

    def clean_tag__name__in(self):
        return TestTag.string_to_list(self.cleaned_data['tag__name__in'])

    def populate(self, product_id=None):
        # 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?
        if product_id:
            self.fields['product_version'].queryset = Version.objects.filter(
                product__pk=product_id
            )
            self.fields['build'].queryset = TestBuild.objects.filter(
                product__pk=product_id
            )
        else:
            self.fields['product_version'].queryset = Version.objects.all()
            self.fields['build'].queryset = TestBuild.list_active()
Example #6
0
class BaseCaseRunForm(forms.Form):
    build = forms.ModelChoiceField(
        label='Build', queryset=TestBuild.objects.all(),
    )
    case_run_status = forms.ModelChoiceField(
        label='Case Run Status', queryset=TestCaseRunStatus.objects.all(),
        required=False,
    )
    assignee = UserField(label='Assignee', required=False)
    case_text_version = forms.IntegerField(
        label='Case text version', required=False
    )
    notes = forms.CharField(label='Notes', required=False)
    sortkey = forms.IntegerField(label='Sortkey', required=False)
Example #7
0
class NewReviewForm(forms.ModelForm):
    default_reviewer = UserField(required=False)
    case = forms.ModelMultipleChoiceField(queryset=TestCase.objects.all())

    class Meta:
        model = TestReview
        exclude = ('plan', 'author')

    def __init__(self, author, plan, *args, **kwargs):
        super(NewReviewForm, self).__init__(*args, **kwargs)
        self.plan = plan
        self.author = author
        query = {'product_id': self.plan.product_id}
        self.fields['build'].queryset = TestBuild.list_active(query)
Example #8
0
 class Meta:
     model = TestCase
     exclude = ('author', )
     widgets = {
         'default_tester': UserField(),
     }
Example #9
0
class CaseModelForm(forms.ModelForm):
    default_tester = UserField(required=False)

    is_automated = forms.MultipleChoiceField(
        choices=AUTOMATED_CHOICES,
        widget=forms.CheckboxSelectMultiple(),
    )
    is_automated_proposed = forms.BooleanField(label='Autoproposed',
                                               widget=forms.CheckboxInput(),
                                               required=False)

    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,
    )

    case_status = forms.ModelChoiceField(
        label="Case status",
        queryset=TestCaseStatus.objects.all(),
        empty_label=None,
    )

    priority = forms.ModelChoiceField(
        label="Priority",
        queryset=Priority.objects.all(),
        empty_label=None,
    )

    class Meta:
        model = TestCase
        exclude = ('author', )
        widgets = {
            'default_tester': UserField(),
        }

    # 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_is_automated(self):
        data = self.cleaned_data['is_automated']
        if len(data) == 2:
            return 2

        if len(data):
            return data[0]

        return data

    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()
Example #10
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()
Example #11
0
class CaseModelForm(forms.ModelForm):
    default_tester = UserField(required = False)

    is_automated = forms.MultipleChoiceField(
        choices = AUTOMATED_CHOICES,
        widget = forms.CheckboxSelectMultiple(),
    )
    is_automated_proposed = forms.BooleanField(
        label = 'Autoproposed', widget = forms.CheckboxInput(),
        required = False
    )

    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,
    )

    case_status = forms.ModelChoiceField(
        label = "Case status",
        queryset = TestCaseStatus.objects.all(),
        empty_label = None,
    )

    priority = forms.ModelChoiceField(
        label = "Priority",
        queryset = Priority.objects.all(),
        empty_label = None,
    )

    class Meta:
        model = TestCase
        exclude = ('author', )
        widgets = {
            'default_tester': UserField(),
        }

    #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_is_automated(self):
        data = self.cleaned_data['is_automated']
        if len(data) == 2:
            return 2

        if len(data):
            return data[0]

        return data

    def populate(self, product_id = None):
        # 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?
        if hasattr(self, 'product') and self.product and not product_id:
            product = self.product

        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()
Example #12
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 = forms.URLField(
        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 = TimedeltaFormField()
    setup = forms.CharField(label="Setup", widget = TinyMCEWidget, required = False)
    action = forms.CharField(label="Actions", widget = TinyMCEWidget, required = False)
    effect = forms.CharField(label="Expect results", widget = TinyMCEWidget, required = False)
    breakdown = forms.CharField(label="Breakdown", widget = TinyMCEWidget, required = False)

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

    def __init__(self, *args, **kwargs):
        self.notes_val = args[0].get('notes', None)
        self.script_val = args[0].get('script', None)
        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, e:
                return data[0]

        return data