def is_valid_email(address): # FIXME In Django 1.2 we can use validators field = EmailField() try: field.clean(address) except ValidationError, e: return False
def validate_cc_list(cc_list): '''Validate each email in cc_list argument This is called by ``notification_*`` methods internally. No return value, and if any email in cc_list is not valid, ValidationError will be raised. ''' if not isinstance(cc_list, list): raise TypeError('cc_list should be a list object.') field = EmailField(required=True) invalid_emails = [] for item in cc_list: try: field.clean(item) except ValidationError: invalid_emails.append(item) if invalid_emails: raise ValidationError( field.error_messages['invalid'] % { 'value': ', '.join(invalid_emails)})
def validate_url(url): protocols = ['http://', 'https://'] flag = 0 url_form_field = URLField() email_field = EmailField() try: email_field.clean(url) except ValidationError: if url != '': for protocol in protocols: n = len(protocol) if url[0:n] == protocol: flag = 1 break if flag == 0: flag1 = 1 for protocol in protocols: new_url = protocol + url try: new_url == url_form_field.clean(new_url) except ValidationError: flag1 = 0 else: url = new_url break if flag1 == 1: return True, url return False, url return True, url return False, url else: return False, url
def _validate_cc_list(cc_list): """ Validate each email address given in argument. Called by notification RPC methods. :param cc_list: List of email addresses :type cc_list: list :return: None :raises: TypeError or ValidationError if addresses are not valid. """ if not isinstance(cc_list, list): raise TypeError('cc_list should be a list object.') field = EmailField(required=True) invalid_emails = [] for item in cc_list: try: field.clean(item) except ValidationError: invalid_emails.append(item) if invalid_emails: raise ValidationError(field.error_messages['invalid'] % {'value': ', '.join(invalid_emails)})
def _validate_cc_list(cc_list): """ Validate each email address given in argument. Called by notification RPC methods. :param cc_list: List of email addresses :type cc_list: list :raises TypeError or ValidationError: if addresses are not valid. """ if not isinstance(cc_list, list): raise TypeError("cc_list should be a list object.") field = EmailField( required=True, error_messages={ "invalid": "Following email address(es) are invalid: %s" }, ) invalid_emails = [] for item in cc_list: try: field.clean(item) except ValidationError: invalid_emails.append(item) if invalid_emails: raise ValidationError(field.error_messages["invalid"] % ", ".join(invalid_emails))
def test_emailfield_min_max_length(self): f = EmailField(min_length=10, max_length=15) self.assertWidgetRendersTo(f, '<input id="id_f" type="email" name="f" maxlength="15" />') with self.assertRaisesMessage(ValidationError, "'Ensure this value has at least 10 characters (it has 9).'"): f.clean("*****@*****.**") self.assertEqual("*****@*****.**", f.clean("*****@*****.**")) with self.assertRaisesMessage(ValidationError, "'Ensure this value has at most 15 characters (it has 20).'"): f.clean("*****@*****.**")
def test_emailfield_min_max_length(self): f = EmailField(min_length=10, max_length=15) self.assertWidgetRendersTo(f, '<input id="id_f" type="email" name="f" maxlength="15" minlength="10" />') with self.assertRaisesMessage(ValidationError, "'Ensure this value has at least 10 characters (it has 9).'"): f.clean('*****@*****.**') self.assertEqual('*****@*****.**', f.clean('*****@*****.**')) with self.assertRaisesMessage(ValidationError, "'Ensure this value has at most 15 characters (it has 20).'"): f.clean('*****@*****.**')
def test_was_submited_within_timeout(self): duration = datetime.timedelta(hours=4) base = timezone.now() - duration + datetime.timedelta(minutes=4) email = "*****@*****.**" field = EmailField(validators=[EmailTimeoutValidator(duration)]) create_contactMessage(email=email, date=base, contact_category=create_contactCategory()) with self.assertRaises(ValidationError): field.clean(email)
def post(self,request,*args,**kwargs): email = request.POST['email'] ef = EmailField() try: ef.clean(email) Candidate.objects.get(email=email) except Candidate.DoesNotExist: url = "%s?email=%s" % (reverse('home:reg'), email) return HttpResponseRedirect(url) except ValidationError: messages.error(self.request, u"Email inválido") else: messages.info(self.request, u"O email %s já está cadastrado!" % email) return super(HomeView, self).get(request,*args,**kwargs)
def post(self, request, *args, **kwargs): email = request.POST['email'] ef = EmailField() try: ef.clean(email) Candidate.objects.get(email=email) except Candidate.DoesNotExist: url = "%s?email=%s" % (reverse('home:reg'), email) return HttpResponseRedirect(url) except ValidationError: messages.error(self.request, u"Email inválido") else: messages.info(self.request, u"O email %s já está cadastrado!" % email) return super(HomeView, self).get(request, *args, **kwargs)
def test_was_submited_after_timeout(self): duration = datetime.timedelta(hours=2, minutes=2) base = timezone.now() - duration - datetime.timedelta(minutes=20) email = "*****@*****.**" field = EmailField(validators=[EmailTimeoutValidator(duration)]) create_contactMessage(email=email, date=base, contact_category=create_contactCategory()) self.assertIs(field.clean(email), email)
def validate_cc_list(cc_list): """Validate each email in cc_list argument This is called by ``notification_*`` methods internally. No return value, and if any email in cc_list is not valid, ValidationError will be raised. """ if not isinstance(cc_list, list): raise TypeError('cc_list should be a list object.') field = EmailField(required=True, error_messages={ 'required': 'Missing email address.', 'invalid': '%(value)s is not a valid email address.', }) for item in cc_list: field.clean(item)
def clean(self): if 'username' in self.cleaned_data: username = self.cleaned_data["username"] else: raise forms.ValidationError(_("Username and Password required")) if 'password' in self.cleaned_data: password = self.cleaned_data["password"] else: raise forms.ValidationError(_("Username and Password required")) try: # User can login via email address too # Check whether the provided username is email email_check = EmailField() email = email_check.clean(username) if self.request.site.is_core: site_users = SiteUser.objects.filter( email=email, role=settings.SITE_ROLES['ADMIN']) site_user = site_users[0] else: site_user = SiteUser.objects.get(email=email, site_id=self.request.site.id) unique_username = site_user.user.username except SiteUser.DoesNotExist: # Email does not exist in the current site raise forms.ValidationError(_("Username or password incorrect")) except forms.ValidationError: # Not an email. Probably user is trying to login via username try: if self.request.site.is_core: site_users = SiteUser.objects.filter( username=username, role=settings.SITE_ROLES['ADMIN']) site_user = site_users[0] else: site_user = SiteUser.objects.get( username=username, site_id=self.request.site.id) unique_username = site_user.user.username except SiteUser.DoesNotExist: #User name does not exist in current database raise forms.ValidationError( _("Username or password incorrect")) user = authenticate(username=unique_username, password=password) if user is not None: if user.is_active: login(self.request, user) else: raise forms.ValidationError( _("This account is deactivated.")) else: raise forms.ValidationError( _("Username or password incorrect"))
def test_emailfield_1(self): f = EmailField() self.assertWidgetRendersTo(f, '<input type="email" name="f" id="id_f" required>') with self.assertRaisesMessage(ValidationError, "'This field is required.'"): f.clean('') with self.assertRaisesMessage(ValidationError, "'This field is required.'"): f.clean(None) self.assertEqual('*****@*****.**', f.clean('*****@*****.**')) with self.assertRaisesMessage(ValidationError, "'Enter a valid email address.'"): f.clean('foo') self.assertEqual( '[email protected]\xe4\xf6\xfc\xdfabc.part.com', f.clean('[email protected]äöüßabc.part.com') )
def clean_address_list(addresses, field_name=None): if (addresses is None or len(addresses) == 0) and field_name is None: return [] if not isinstance(addresses, list): addresses = addresses.split(',') field_ = EmailField() try: return [field_.clean(addr) for addr in addresses] except ValidationError: raise ValidationError( _('Enter a valid comma separated ' 'list of email addresses for ' 'field {}.'.format(field_name)))
def test_emailfield_not_required(self): f = EmailField(required=False) self.assertEqual('', f.clean('')) self.assertEqual('', f.clean(None)) self.assertEqual('*****@*****.**', f.clean('*****@*****.**')) self.assertEqual('*****@*****.**', f.clean(' [email protected] \t \t ')) with self.assertRaisesMessage(ValidationError, "'Enter a valid email address.'"): f.clean('foo')
def clean(self): """called in `save()` """ emails = functions.split_list(self.preapproved_emails) email_field = EmailField() try: map(lambda v: email_field.clean(v), emails) except exceptions.ValidationError: raise exceptions.ValidationError(_("Please give a list of valid email addresses.")) self.preapproved_emails = " " + "\n".join(emails) + " " domains = functions.split_list(self.preapproved_email_domains) domain_field = DomainNameField() try: map(lambda v: domain_field.clean(v), domains) except exceptions.ValidationError: raise exceptions.ValidationError(_("Please give a list of valid email domain names.")) self.preapproved_email_domains = " " + "\n".join(domains) + " "
def clean(self): """called in `save()` """ emails = functions.split_list(self.preapproved_emails) email_field = EmailField() try: map(lambda v: email_field.clean(v), emails) except exceptions.ValidationError: raise exceptions.ValidationError( _('Please give a list of valid email addresses.')) self.preapproved_emails = ' ' + '\n'.join(emails) + ' ' domains = functions.split_list(self.preapproved_email_domains) domain_field = DomainNameField() try: map(lambda v: domain_field.clean(v), domains) except exceptions.ValidationError, e: raise e
def clean(self): """called in `save()` """ emails = functions.split_list(self.preapproved_emails) email_field = EmailField() try: map(lambda v: email_field.clean(v), emails) except exceptions.ValidationError: raise exceptions.ValidationError( _('Please give a list of valid email addresses.') ) self.preapproved_emails = ' ' + '\n'.join(emails) + ' ' domains = functions.split_list(self.preapproved_email_domains) from askbot.forms import DomainNameField domain_field = DomainNameField() try: map(lambda v: domain_field.clean(v), domains) except exceptions.ValidationError: raise exceptions.ValidationError( _('Please give a list of valid email domain names.') ) self.preapproved_email_domains = ' ' + '\n'.join(domains) + ' '
def test_emailfield_strip_on_none_value(self): f = EmailField(required=False, empty_value=None) self.assertIsNone(f.clean(None))
def test_email_regexp_for_performance(self): f = EmailField() # Check for runaway regex security problem. This will take a long time # if the security fix isn't in place. addr = '[email protected]' self.assertEqual(addr, f.clean(addr))
def test_emailfield_strip_on_none_value(self): f = EmailField(required=False, empty_value=None) self.assertIsNone(f.clean('')) self.assertIsNone(f.clean(None))