Пример #1
0
    def clean(self):
        "validate the form"
        cleaned_data = self.cleaned_data
        submited_field = cleaned_data.get('filtered_field')
        submited_by = int(cleaned_data.get('filtered_by'))
        submited_value = cleaned_data.get('filtered_value')
        if submited_by != 0:
            sbi = (submited_by - 1)
        else:
            sbi = submited_by

        if submited_field in BOOL_FIELDS:
            if not submited_by in BOOL_FILTER:
                filter_items = dict(FILTER_ITEMS)
                error_msg = _("%(field)s does not support the %(filt)s filter") % {
                'field': filter_items[submited_field], 'filt': FILTER_BY[sbi][1]}
                raise forms.ValidationError(error_msg)
        if submited_field in NUM_FIELDS:
            if not submited_by in NUM_FILTER:
                filter_items = dict(FILTER_ITEMS)
                error_msg = _("%(field)s does not support the %(filt)s filter") % {
                'field': filter_items[submited_field], 'filt': FILTER_BY[sbi][1]}
                raise forms.ValidationError(error_msg)
            if submited_value in EMPTY_VALUES:
                raise forms.ValidationError(_("Please supply a value to query"))
            if not isnumeric(submited_value):
                raise forms.ValidationError(_("The value has to be numeric"))
        if submited_field in TEXT_FIELDS:
            if not submited_by in TEXT_FILTER:
                filter_items = dict(FILTER_ITEMS)
                error_msg = _("%(field)s does not support the %(filt)s filter") % {
                'field': filter_items[submited_field], 'filt': FILTER_BY[sbi][1]}
                raise forms.ValidationError(error_msg)
            if submited_value in EMPTY_VALUES and submited_by not in [9, 10]:
                raise forms.ValidationError(_("Please supply a value to query"))
            if ((submited_field == 'from_address' or
                submited_field == 'to_address') and
                submited_by in [1, 2]):
                if not email_re.match(submited_value.strip()):
                    raise forms.ValidationError(
                        _('%(email)s is not a valid e-mail address.')
                        % {'email': force_escape(submited_value)})
            else:
                if submited_by in [7, 8]:
                    try:
                        re.compile(submited_value)
                    except re.error:
                        raise forms.ValidationError(
                            _("Please provide a valid regex")
                        )
            if ((submited_field == 'from_domain' or
                submited_field == 'to_domain') and
                submited_by in [1, 2]):
                if not DOM_RE.match(submited_value.strip()):
                    raise forms.ValidationError(
                        _('Please provide a valid domain name'))
            else:
                if submited_by in [7, 8]:
                    try:
                        re.compile(submited_value)
                    except re.error:
                        raise forms.ValidationError(
                            _("Please provide a valid regex")
                        )
            if submited_field == 'clientip':
                if not ipv4_re.match(submited_value.strip()):
                    raise forms.ValidationError(
                        _('Please provide a valid ipv4 address'))
            if submited_field == 'hostname':
                if ((not ipv4_re.match(submited_value.strip())) and
                (not DOM_RE.match(submited_value.strip()))):
                    raise forms.ValidationError(
                    _("Please provide a valid hostname or ipv4 address")
                    )
        if submited_field in TIME_FIELDS:
            if not submited_by in TIME_FILTER:
                filter_items = dict(FILTER_ITEMS)
                error_msg = _("%(field)s does not support the %(filt)s filter") % {
                'field': filter_items[submited_field], 'filt': FILTER_BY[sbi][1]}
                raise forms.ValidationError(error_msg)
            if submited_value in EMPTY_VALUES:
                raise forms.ValidationError(_("Please supply a value to query"))
            if submited_field == 'date':
                try:
                    datetime.date(
                        *time.strptime(submited_value, '%Y-%m-%d')[:3])
                except ValueError:
                    raise forms.ValidationError(
                        _('Please provide a valid date in YYYY-MM-DD format'))
            if submited_field == 'time':
                try:
                    datetime.time(*time.strptime(submited_value, '%H:%M')[3:6])
                except ValueError:
                    raise forms.ValidationError(
                        _('Please provide valid time in HH:MM format'))

        return cleaned_data
Пример #2
0
    def clean(self):
        "validate the form"
        cleaned_data = self.cleaned_data
        submited_field = cleaned_data.get('filtered_field')
        submited_by = int(cleaned_data.get('filtered_by'))
        submited_value = cleaned_data.get('filtered_value')
        if submited_by != 0:
            sbi = (submited_by - 1)
        else:
            sbi = submited_by

        if submited_field in BOOL_FIELDS:
            if not submited_by in BOOL_FILTER:
                filter_items = dict(FILTER_ITEMS)
                error_msg = _(
                    "%(field)s does not support the %(filt)s filter") % {
                        'field': filter_items[submited_field],
                        'filt': FILTER_BY[sbi][1]
                    }
                raise forms.ValidationError(error_msg)
        if submited_field in NUM_FIELDS:
            if not submited_by in NUM_FILTER:
                filter_items = dict(FILTER_ITEMS)
                error_msg = _(
                    "%(field)s does not support the %(filt)s filter") % {
                        'field': filter_items[submited_field],
                        'filt': FILTER_BY[sbi][1]
                    }
                raise forms.ValidationError(error_msg)
            if submited_value in EMPTY_VALUES:
                raise forms.ValidationError(
                    _("Please supply a value to query"))
            if not isnumeric(submited_value):
                raise forms.ValidationError(_("The value has to be numeric"))
        if submited_field in TEXT_FIELDS:
            if not submited_by in TEXT_FILTER:
                filter_items = dict(FILTER_ITEMS)
                error_msg = _(
                    "%(field)s does not support the %(filt)s filter") % {
                        'field': filter_items[submited_field],
                        'filt': FILTER_BY[sbi][1]
                    }
                raise forms.ValidationError(error_msg)
            if submited_value in EMPTY_VALUES and submited_by not in [9, 10]:
                raise forms.ValidationError(
                    _("Please supply a value to query"))
            if ((submited_field == 'from_address'
                 or submited_field == 'to_address') and submited_by in [1, 2]):
                if not email_re.match(submited_value.strip()):
                    raise forms.ValidationError(
                        _('%(email)s is not a valid e-mail address.') %
                        {'email': force_escape(submited_value)})
            else:
                if submited_by in [7, 8]:
                    try:
                        re.compile(submited_value)
                    except re.error:
                        raise forms.ValidationError(
                            _("Please provide a valid regex"))
            if ((submited_field == 'from_domain'
                 or submited_field == 'to_domain') and submited_by in [1, 2]):
                if not DOM_RE.match(submited_value.strip()):
                    raise forms.ValidationError(
                        _('Please provide a valid domain name'))
            else:
                if submited_by in [7, 8]:
                    try:
                        re.compile(submited_value)
                    except re.error:
                        raise forms.ValidationError(
                            _("Please provide a valid regex"))
            if submited_field == 'clientip':
                if not ipv4_re.match(submited_value.strip()):
                    raise forms.ValidationError(
                        _('Please provide a valid ipv4 address'))
            if submited_field == 'hostname':
                if ((not ipv4_re.match(submited_value.strip()))
                        and (not DOM_RE.match(submited_value.strip()))):
                    raise forms.ValidationError(
                        _("Please provide a valid hostname or ipv4 address"))
        if submited_field in TIME_FIELDS:
            if not submited_by in TIME_FILTER:
                filter_items = dict(FILTER_ITEMS)
                error_msg = _(
                    "%(field)s does not support the %(filt)s filter") % {
                        'field': filter_items[submited_field],
                        'filt': FILTER_BY[sbi][1]
                    }
                raise forms.ValidationError(error_msg)
            if submited_value in EMPTY_VALUES:
                raise forms.ValidationError(
                    _("Please supply a value to query"))
            if submited_field == 'date':
                try:
                    datetime.date(
                        *time.strptime(submited_value, '%Y-%m-%d')[:3])
                except ValueError:
                    raise forms.ValidationError(
                        _('Please provide a valid date in YYYY-MM-DD format'))
            if submited_field == 'time':
                try:
                    datetime.time(*time.strptime(submited_value, '%H:%M')[3:6])
                except ValueError:
                    raise forms.ValidationError(
                        _('Please provide valid time in HH:MM format'))

        return cleaned_data
Пример #3
0
    def clean(self):
        "validate the form"
        cleaned_data = self.cleaned_data
        submited_field = cleaned_data.get('filtered_field')
        submited_by = int(cleaned_data.get('filtered_by'))
        submited_value = cleaned_data.get('filtered_value')
        if submited_by != 0:
            sbi = (submited_by - 1)
        else:
            sbi = submited_by

        if submited_field in BOOL_FIELDS:
            if not submited_by in BOOL_FILTER:
                filter_items = to_dict(list(FILTER_ITEMS))
                error_msg = "%s does not support the %s filter" % (
                    filter_items[submited_field],FILTER_BY[sbi][1])
                raise forms.ValidationError(error_msg)
        if submited_field in NUM_FIELDS:
            if not submited_by in NUM_FILTER:
                filter_items = to_dict(list(FILTER_ITEMS))
                error_msg = "%s does not support the %s filter" % (
                    filter_items[submited_field],FILTER_BY[sbi][1])
                raise forms.ValidationError(error_msg)
            if submited_value in EMPTY_VALUES:
                raise forms.ValidationError("Please supply a value to query")
            if not isnumeric(submited_value):
                raise forms.ValidationError("The value has to be numeric")
        if submited_field in TEXT_FIELDS:
            if not submited_by in TEXT_FILTER:
                filter_items = to_dict(list(FILTER_ITEMS))
                error_msg = "%s does not support the %s filter" % (
                    filter_items[submited_field],FILTER_BY[sbi][1])
                raise forms.ValidationError(error_msg)
            if submited_value in EMPTY_VALUES:
                raise forms.ValidationError("Please supply a value to query")
            if ( FILTER_BY[sbi][1] == 'is equal to' or FILTER_BY[sbi][1] == 'is not equal to' ):
                if (submited_field == 'from_address') or (
                    submited_field == 'to_address'):
                    if not email_re.match(submited_value.strip()):
                        raise forms.ValidationError(
                            '%s is not a valid e-mail address.'
                            % force_escape(submited_value))
                if (submited_field == 'from_domain') or (
                    submited_field == 'to_domain'):
                    if not DOM_RE.match(submited_value.strip()):
                        raise forms.ValidationError(
                            'Please provide a valid domain name')
                if submited_field == 'clientip':
                    if not ipv4_re.match(submited_value.strip()):
                        raise forms.ValidationError(
                            'Please provide a valid ipv4 address')
        if submited_field in TIME_FIELDS:
            if not submited_by in TIME_FILTER:
                filter_items = to_dict(list(FILTER_ITEMS))
                error_msg = "%s does not support the %s filter" % (
                    filter_items[submited_field],FILTER_BY[sbi][1])
                raise forms.ValidationError(error_msg)
            if submited_value in EMPTY_VALUES:
                raise forms.ValidationError("Please supply a value to query")
            if submited_field == 'date':
                try:
                    datetime.date(
                        *time.strptime(submited_value, '%Y-%m-%d')[:3])
                except ValueError:
                    raise forms.ValidationError(
                        'Please provide a valid date in YYYY-MM-DD format')
            if submited_field == 'time':
                try:
                    datetime.time(*time.strptime(submited_value, '%H:%M')[3:6])
                except ValueError:
                    raise forms.ValidationError(
                        'Please provide valid time in HH:MM format')

        return cleaned_data