Exemplo n.º 1
0
class DirectorySearchForm(FormControlWidgetMixin, forms.Form):
    SEARCH_METHOD_CHOICES = (
        ('starts_with', _('Starts With')),
        ('contains', _('Contains')),
        ('exact', _('Exact')),
    )
    search_category = forms.ChoiceField(label=_('Search By'),
                                        choices=SEARCH_CATEGORIES_ADMIN,
                                        required=False)
    category = CategoryField(label=_('All Categories'),
                             choices=[],
                             required=False)
    sub_category = CategoryField(label=_('All Subcategories'),
                                 choices=[],
                                 required=False)
    q = forms.CharField(required=False)
    search_method = forms.ChoiceField(choices=SEARCH_METHOD_CHOICES,
                                      required=False,
                                      initial='exact')

    def __init__(self, *args, **kwargs):
        is_superuser = kwargs.pop('is_superuser', None)
        super(DirectorySearchForm, self).__init__(*args, **kwargs)

        if not is_superuser:
            self.fields['search_category'].choices = SEARCH_CATEGORIES

        categories, sub_categories = Directory.objects.get_categories()

        categories = [(cat.pk, cat) for cat in categories]
        categories.insert(0, ('', _('All Categories (%d)' % len(categories))))
        sub_categories = [(cat.pk, cat) for cat in sub_categories]
        sub_categories.insert(
            0, ('', _('All Subcategories (%d)' % len(sub_categories))))

        self.fields['category'].choices = categories
        self.fields['sub_category'].choices = sub_categories

    def clean(self):
        cleaned_data = self.cleaned_data
        q = self.cleaned_data.get('q', None)
        cat = self.cleaned_data.get('search_category', None)

        if cat is None or cat == "":
            if not (q is None or q == ""):
                self._errors['search_category'] = ErrorList(
                    ['Select a category'])

        if cat in ('id', 'owner__id', 'creator__id'):
            try:
                x = int(q)
            except ValueError:
                self._errors['q'] = ErrorList(['ID must be a number.'])

        return cleaned_data
Exemplo n.º 2
0
class ArticleSearchForm(FormControlWidgetMixin, forms.Form):
    search_category = forms.ChoiceField(choices=SEARCH_CATEGORIES_ADMIN,
                                        required=False,
                                        label=_(u'Search by'))
    q = forms.CharField(required=False)
    category = CategoryField(label=_('All Categories'),
                             choices=[],
                             required=False)
    sub_category = CategoryField(label=_('All Subcategories'),
                                 choices=[],
                                 required=False)
    filter_date = forms.BooleanField(required=False)
    date = forms.DateField(initial=date.today(), required=False)

    def __init__(self, *args, **kwargs):
        is_superuser = kwargs.pop('is_superuser', None)
        super(ArticleSearchForm, self).__init__(*args, **kwargs)

        if not is_superuser:
            self.fields['search_category'].choices = SEARCH_CATEGORIES

        categories, sub_categories = Article.objects.get_categories()

        categories = [(cat.name, cat) for cat in categories]
        categories.insert(0, ('', _('All Categories (%d)' % len(categories))))
        sub_categories = [(cat.name, cat) for cat in sub_categories]
        sub_categories.insert(
            0, ('', _('All Subcategories (%d)' % len(sub_categories))))

        self.fields['category'].choices = categories
        self.fields['sub_category'].choices = sub_categories

    def clean(self):
        cleaned_data = self.cleaned_data
        q = self.cleaned_data.get('q', None)
        cat = self.cleaned_data.get('search_category', None)
        filter_date = self.cleaned_data.get('filter_date', None)
        date = self.cleaned_data.get('date', None)

        if cat is None or cat == "":
            if not (q is None or q == ""):
                self._errors['search_category'] = ErrorList(
                    [_('Select a category')])

        if cat in ('id', 'owner__id', 'creator__id'):
            try:
                x = int(q)
            except ValueError:
                self._errors['q'] = ErrorList([_('Must be an integer')])

        if filter_date:
            if date is None or date == "":
                self._errors['date'] = ErrorList([_('Please select a date')])

        return cleaned_data