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