Пример #1
0
def test_invalid_email_addresses():
    invalid_usernames = [
        # (email, message_name),
        ('foo\tbar', 'formencode.org', 'badUsername'),
        ('foo\nbar', 'formencode.org', 'badUsername'),
        ('test', '', 'noAt'),
        ('test', 'foobar', 'badDomain'),
        ('test', 'foobar.5', 'badDomain'),
        ('test', 'foo..bar.com', 'badDomain'),
        ('test', '.foo.bar.com', 'badDomain'),
        ('foo,bar', 'formencode.org', 'badUsername'),
    ]

    def expected_message(validator, message_name, username, domain):
        email = '@'.join((username, domain))
        return validator.message(message_name,
                                 email,
                                 username=username,
                                 domain=domain)

    validator = Email()

    for username, domain, message_name in invalid_usernames:
        email = '@'.join(el for el in (username, domain) if el)
        error = _validate(validator, email)
        expected = expected_message(validator, message_name, username, domain)
        yield assert_equal, error, expected
Пример #2
0
class UsuarioEditFormValidator(UsuarioAddFormValidator):
    nombre_usuario = None
    password = None
    repita_password = None
    nuevo_password = PasswordChanged()
    repita_nuevo_password = PasswordChanged()
    email = All(
        UniqueEditEmail(),
        Email(not_empty=True,
              messages={
                  'empty': 'Ingrese una direccion de email',
                  'noAt': 'Un email debe contener un @',
                  'badUsername': '******',
                  'badDomain': 'Ingrese un dominio de email correcto',
              }))
    chained_validators = (FieldsMatch(
        'nuevo_password',
        'repita_nuevo_password',
        messages={'invalidNoMatch': 'Passwords no coinciden'}), )
    nro_documento = All(
        UniqueEditNroDocumento(),
        String(
            min=5,
            max=50,
            messages={
                'tooShort':
                "Nro de Documendo invalido, debe tener 5 digitos como minimo",
                'tooLong': "Nro de Documendo invalido",
            }), NotEmpty(messages={'empty': 'Ingrese numero de documento'}),
        isInt(messages={'integer': 'Ingrese un numero'}))
class UserResetPasswordForm(Schema):
    """Schema for User password reset form."""
    chained_validators = [FieldsMatch('password', 'confirm')]

    email = Email(not_empty=True)
    password = UnicodeString(min=6)
    confirm = UnicodeString(not_empty=True)
    token = UnicodeString(not_empty=True)
class UserCreateSchema(Schema):
    """Schema for User create (fields may not be missing)."""
    email = Email(max=255, not_empty=True)
    password = UnicodeString(min=6)
    role = OneOf(('user', 'superuser', 'admin'), if_missing='user',
                         hideList=True)

    class profile(Schema):
        first_name = UnicodeString(max=100, not_empty=True)
        last_name = UnicodeString(max=100, not_empty=True)
class UserUpdateSchema(Schema):
    """Schema for User update (fields may be missing)."""
    ignore_key_missing = True

    email = Email(max=255, not_empty=True)
    password = UnicodeString(min=6)
    role = OneOf(('user', 'superuser', 'admin'), hideList=True, not_empty=True)

    class profile(Schema):
        first_name = UnicodeString(max=100, not_empty=True)
        last_name = UnicodeString(max=100, not_empty=True)
Пример #6
0
class UserSchema(Schema):
    username = Regex(r'^[a-zA-Z0-9_@+\.-]+$', max=150)
    password = UnicodeString()
    first_name = UnicodeString(max=30)
    last_name = UnicodeString(max=150)
    email = Email()
    groups = ForEach(ResourceURI(model_cls=Group))
    user_permissions = ForEach(ResourceURI(model_cls=Permission))
    is_staff = Bool()
    is_active = Bool()
    is_superuser = Bool()
class UserRegisterForm(Schema):
    """Schema for User register form."""
    pre_validators = [NestedVariables]
    chained_validators = [FieldsMatch('password', 'confirm')]

    email = Email(max=255, not_empty=True)
    password = UnicodeString(min=6)
    confirm = UnicodeString(not_empty=True)

    class profile(Schema):
        first_name = UnicodeString(max=100, not_empty=True)
        last_name = UnicodeString(max=100, not_empty=True)
Пример #8
0
def _find_user(login):
    principals = get_principals()
    principal = principals.get(login)
    if principal is not None:
        return principal
    else:
        try:
            Email().to_python(login)
        except Exception:
            pass
        else:
            for p in principals.search(email=login):
                return p
Пример #9
0
    class _RegisterForm(formencode.Schema):
        allow_extra_fields = True
        filter_extra_fields = True
        username = All(ValidUsername(edit, old_data),
                       UnicodeString(strip=True, min=1, not_empty=True))
        password = All(UnicodeString(strip=False, min=6, not_empty=True))
        password_confirmation = All(UnicodeString(strip=False, min=6, not_empty=True))
        active = StringBoolean(if_missing=False)
        name = UnicodeString(strip=True, min=1, not_empty=False)
        lastname = UnicodeString(strip=True, min=1, not_empty=False)
        email = All(Email(not_empty=True), UniqSystemEmail(old_data))

        chained_validators = [ValidPasswordsMatch, ValidPassword]
Пример #10
0
class NewResearcherForm(Schema):
    """NewResearcherForm is a Schema for validating the 
    data entered at the Add Researcher page.
    
    """

    allow_extra_fields = True
    filter_extra_fields = True
    username = formencode.All(UniqueUsername(), PlainText(not_empty=True))
    password = PlainText(not_empty=True)
    firstName = UnicodeString(not_empty=True)
    lastName = UnicodeString(not_empty=True)
    email = Email(not_empty=True)
    affiliation = UnicodeString()
    role = OneOf(app_globals.roles)
    personalPageContent = UnicodeString()
Пример #11
0
class UserForm(Schema):
    """ Form validation schema for users."""
    filter_extra_fields = True
    allow_extra_fields = True

    username = UsernamePlainText(min=5, max=16, strip=True)
    first_name = FirstNameString(not_empty=True, strip=True)
    last_name = LastNameString(not_empty=True, strip=True)
    email = Email()
    password = SecurePassword(min=6, max=80, strip=True)
    password_confirm = String(strip=True)
    group_id = Int(not_empty=True)

    chained_validators = [
        FieldsMatch('password', 'password_confirm'),
        UniqueAuthUsername(),
        UniqueAuthEmail(),
    ]
Пример #12
0
class ApplnValidator(Schema):
    name = ByteString(not_empty=True)
    email = Email()
    dob = DateConverter(month_style='iso')
    gender = OneOf(['M', 'F'])
    applntype = OneOf(['new', 'renewal'])
    race1_name = ByteString(not_empty=True)
    race1_location = ByteString(not_empty=True)
    race1_date = DateConverter(month_style='iso')
    race1_distance = Number(min=0, max=200)
    race1_units = OneOf(['miles', 'km'])
    race1_time = TimeOptHoursConverter()
    race1_resultslink = URL()
    race2_name = ByteString(not_empty=True)
    race2_location = ByteString(not_empty=True)
    race2_date = DateConverter(month_style='iso')
    race2_distance = Number(min=0, max=200)
    race2_units = OneOf(['miles', 'km'])
    race2_time = TimeOptHoursConverter()
    race2_resultslink = URL()
Пример #13
0
    def upgrade_request(self, **kwargs):
        if not request.POST:
            return
        schema = DynamicSchema()
        schema.chained_validators = []
        schema.fields['name'] = UnicodeString(not_empty=True)
        schema.fields['phone'] = UnicodeString(not_empty=True)
        schema.fields['email'] = Email(not_empty=True)
        if not c.logged_in_user:
            schema.fields['recaptcha_challenge_field'] = UnicodeString(
                not_empty=True)
            schema.fields['recaptcha_response_field'] = UnicodeString(
                not_empty=True)
            schema.chained_validators.append(
                ReCaptchaValidator(request.environ['REMOTE_ADDR']))

        data = {'upgrade_request': kwargs}
        data = validate_dict(data,
                             schema,
                             dict_to_validate_key='upgrade_request')

        from civicboom.lib.communication.email_lib import send_email
        form_string = ''
        for key, value in kwargs.iteritems():
            form_string += '\n%s: %s' % (key, value)

        if c.logged_in_user:
            form_string += '\nlogged_in_user: %s' % (c.logged_in_user.username)
            form_string += '\nlogged_in_persona: %s' % (
                c.logged_in_persona.username)
        else:
            form_string += '\nUser not logged in!'

        send_email(config['email.contact'],
                   subject='Civicboom',
                   content_text='upgrade account request: %s' % form_string)

        return action_ok(_('upgrade request sent'))
Пример #14
0
def test_valid_email_addresses():
    valid_email_addresses = [
        # (email address, expected email address),
        (' [email protected] ', '*****@*****.**'),
        ('*****@*****.**', '*****@*****.**'),
        ('*****@*****.**', '*****@*****.**'),
        ('o*[email protected]', 'o*[email protected]'),
        ('*****@*****.**', '*****@*****.**'),
        ('*****@*****.**', '*****@*****.**'),
        ('[email protected]', '[email protected]'),
        ('foo{bar}@example.com', 'foo{bar}@example.com'),

        # examples from RFC 3696
        #   punting on the difficult and extremely uncommon ones
        #('"Abc\@def"@example.com', '"Abc\@def"@example.com'),
        #('"Fred Bloggs"@example.com', '"Fred Bloggs"@example.com'),
        #('"Joe\\Blow"@example.com', '"Joe\\Blow"@example.com'),
        #('"Abc@def"@example.com', '"Abc@def"@example.com'),
        ('customer/[email protected]',
         'customer/[email protected]'),
        ('[email protected]', '[email protected]'),
        ('!def!xyz%[email protected]', '!def!xyz%[email protected]'),
        ('*****@*****.**', '*****@*****.**'),
    ]

    def expected_message(validator, message_name, username, domain):
        email = '@'.join((username, domain))
        return validator.message(message_name,
                                 email,
                                 username=username,
                                 domain=domain)

    validator = Email()

    for email, expected in valid_email_addresses:
        yield assert_equal, _validate(validator, email), expected
Пример #15
0
class UsuarioAddFormValidator(Schema):
    nombre_usuario = All(
        String(min=4,
               max=32,
               messages={
                   'tooShort':
                   'Nombre de usuario incorrecto, minimo 4 caracteres',
                   'tooLong':
                   'Nombre de usuario incorrecto, maximo 32 caracteres'
               }), UniqueUsername(),
        NotEmpty(messages={'empty': 'Ingrese un nombre de usuario'}))
    nombre = All(
        String(min=2,
               max=50,
               messages={
                   'tooShort': 'Nombre incorrecto, minimo 2 caracteres',
                   'tooLong': 'Nombre incorrecto, maximo 50 caracteres'
               }), NotEmpty(messages={'empty': 'Ingrese un nombre'}))
    apellido = All(
        String(min=2,
               max=50,
               messages={
                   'tooShort': 'Apellido incorrecto, minimo 2 caracteres',
                   'tooLong': 'Apellido incorrecto, maximo 50 caracteres'
               }), NotEmpty(messages={'empty': 'Ingrese un apellido'}))
    password = All(
        String(
            min=6,
            messages={'tooShort': 'Password incorrecto, minimo 6 caracteres'}),
        NotEmpty(messages={'empty': 'Ingrese password'}))
    repita_password = All(
        String(
            min=6,
            messages={'tooShort': 'Password incorrecto, minimo 6 caracteres'}),
        NotEmpty(messages={'empty': 'Ingrese password'}))
    email = All(
        UniqueNewEmail(),
        Email(not_empty=True,
              messages={
                  'empty': 'Ingrese una direccion de email',
                  'noAt': 'Un email debe contener un @',
                  'badUsername': '******',
                  'badDomain': 'Ingrese un dominio de email correcto',
              }))
    chained_validators = (FieldsMatch(
        'password',
        'repita_password',
        messages={'invalidNoMatch': 'Passwords no coinciden'}), )
    nro_documento = All(
        UniqueNewNroDocumento(),
        String(
            min=5,
            max=50,
            messages={
                'tooLong':
                "Nro de Documendo invalido, debe tener 5 digitos como minimo",
                'tooShort': "Nro de Documendo invalido",
            }), NotEmpty(messages={'empty': 'Ingrese numero de documento'}),
        isInt(messages={'integer': 'Ingrese un numero'}))
    telefono = All(
        String(
            min=6,
            max=15,
            messages={
                'tooShort':
                "Nro de Telefono invalido, debe tener 6 digitos como minimo",
                'tooLong': "Nro de Telefono invalido",
            }), NotEmpty(messages={'empty': 'Ingrese numero de telefono'}),
        isInt(messages={'integer': 'Ingrese un numero'}))
 def setUp(self):
     self.validator = Email()
 def setUp(self):
     self.validator = Email(resolve_domain=False)
Пример #18
0
class AddUserSchema(Schema):

    username = UniqueUsername(not_empty=True)
    first_name = UnicodeString(not_empty=True)
    last_name = UnicodeString(not_empty=True)
    email = Email(not_empty=True)
class UserLoginForm(Schema):
    """Schema for User login form."""
    email = Email(not_empty=True)
    password = UnicodeString(not_empty=True)
    next = UnicodeString(if_missing=None)
Пример #20
0
 class _PasswordResetForm(formencode.Schema):
     allow_extra_fields = True
     filter_extra_fields = True
     email = All(ValidSystemEmail(), Email(not_empty=True))
Пример #21
0
class MyForm(Schema):
    allow_extra_fields = True

    name = String(not_empty=True)
    email = Email(not_empty=True)