def test_ipaddress(self): with warnings.catch_warnings(record=True): warnings.simplefilter("always") f = IPAddressField() self.assertFormErrors(['This field is required.'], f.clean, '') self.assertFormErrors(['This field is required.'], f.clean, None) self.assertEqual(f.clean(' 127.0.0.1'), '127.0.0.1') self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, 'foo') self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '127.0.0.') self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '1.2.3.4.5') self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '256.125.1.5') with warnings.catch_warnings(record=True): warnings.simplefilter("always") f = IPAddressField(required=False) self.assertEqual(f.clean(''), '') self.assertEqual(f.clean(None), '') self.assertEqual(f.clean(' 127.0.0.1'), '127.0.0.1') self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, 'foo') self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '127.0.0.') self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '1.2.3.4.5') self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '256.125.1.5')
class NetworkForm(Form): choices = [ ('dhcp', _('DHCP')), ('static', _('Static')), ] type = ChoiceField(choices=choices, widget=RadioSelect) ip = IPAddressField() dns = IPAddressField() netmask = IPAddressField() gateway = IPAddressField() def __init__(self, *args, **kwargs): super(NetworkForm, self).__init__(*args, **kwargs) type, ip, dns, netmask, gateway = read() self.fields['type'].initial = type def save(self): if self.cleaned_data['type'] == 'static': set_static( self.cleaned_data['ip'], self.cleaned_data['dns'], self.cleaned_data['netmask'], self.cleaned_data['gateway'], ) else: set_dhcp()
class ApiKeyForm(ModelForm): """ Generate a random API key if one isn't provided. """ class Meta: model = ApiKey key = CharField( max_length=KEY_SIZE, required=False, help_text=u'If not provided, a random key will be generated.') logged_ip = IPAddressField(required=False) def clean(self): apikey = self.cleaned_data.get('key') or '' if not apikey: # 'key' is required, but we want to allow generating it # server-side. so we remove its errors if it's not # provided. Note that we can't just define # self.clean_key() because that's never called if the key # isn't provided. self._errors.pop('key', None) apikey = generate_unique_api_key() self.cleaned_data['key'] = apikey if hasattr(self, 'clean_key'): # NOW we can call this... self.cleaned_data['key'] = self.clean_key() # For logged IP, convert blank to NULL self.cleaned_data['logged_ip'] = self.cleaned_data.get( 'logged_ip') or None return self.cleaned_data
def test_ipaddressfield(self): e = { 'required': 'REQUIRED', 'invalid': 'INVALID IP ADDRESS', } f = IPAddressField(error_messages=e) self.assertFormErrors(['REQUIRED'], f.clean, '') self.assertFormErrors(['INVALID IP ADDRESS'], f.clean, '127.0.0')
def test_ipaddressfield(self): e = { 'required': 'REQUIRED', 'invalid': 'INVALID IP ADDRESS', } with warnings.catch_warnings(record=True): warnings.simplefilter("always") f = IPAddressField(error_messages=e) self.assertFormErrors(['REQUIRED'], f.clean, '') self.assertFormErrors(['INVALID IP ADDRESS'], f.clean, '127.0.0')
def test_ipaddress(self): f = IPAddressField() self.assertFormErrors(['This field is required.'], f.clean, '') self.assertFormErrors(['This field is required.'], f.clean, None) self.assertEqual(f.clean(' 127.0.0.1'), '127.0.0.1') self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, 'foo') self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '127.0.0.') self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '1.2.3.4.5') self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '256.125.1.5') f = IPAddressField(required=False) self.assertEqual(f.clean(''), '') self.assertEqual(f.clean(None), '') self.assertEqual(f.clean(' 127.0.0.1'), '127.0.0.1') self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, 'foo') self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '127.0.0.') self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '1.2.3.4.5') self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '256.125.1.5')
class AllFieldTypesForm(Form): char = CharField() int_ = IntegerField() date = DateField() time = TimeField() datetime_ = DateTimeField() regex = RegexField(regex='^[a-f]{3}$') email = EmailField() file = FileField() # image = ImageField() url = URLField() bool = BooleanField() nullbool = NullBooleanField() choice = ChoiceField(choices=(('test choice', 'yay test choice'), )) multichoice = MultipleChoiceField(choices=( ('test choice', 'yay test choice'), ('test choice 2', 'yay another choice'), ('test choice 3', 'yay test choice'), )) float = FloatField() decimal = DecimalField() ip = IPAddressField() generic_ip = GenericIPAddressField() filepath = FilePathField(path=tempfile.gettempdir(), allow_files=True, allow_folders=True) slug = SlugField() typed_choice = TypedChoiceField(choices=( (1, 'test'), (2, 'test 2'), (3, 'bah'), ), coerce=int) typed_multichoice = TypedMultipleChoiceField(choices=( (1, 'test'), (2, 'test 2'), (3, 'bah'), ), coerce=int) model_choice = ModelChoiceField(queryset=get_user_model().objects.all()) model_multichoice = ModelMultipleChoiceField( queryset=get_user_model().objects.all())
class ApiKeyForm(ModelForm): """ Generate a random API key if one isn't provided. """ class Meta: model = ApiKey key = CharField( max_length=KEY_SIZE, required=False, help_text=u'If not provided, a random key will be generated.') logged_ip = IPAddressField(required=False) def clean(self): profile = self.cleaned_data.get('user').user.get_profile() if self.instance.pk is None: # We're creating a new instance if not profile.can_make_api_key(): raise ValidationError("User already has max number of keys") apikey = self.cleaned_data.get('key') or '' if not apikey: # 'key' is required, but we want to allow generating it server-side. # so we remove its errors if it's not provided. # Note that we can't just define self.clean_key() because that's never # called if the key isn't provided. self._errors.pop('key', None) apikey = generate_unique_api_key() self.cleaned_data['key'] = apikey if hasattr(self, 'clean_key'): # NOW we can call this... self.cleaned_data['key'] = self.clean_key() # For logged IP, convert blank to NULL self.cleaned_data['logged_ip'] = self.cleaned_data.get( 'logged_ip') or None return self.cleaned_data