Esempio n. 1
0
def create(username, password, name=None, **kwargs):
    """Create and return a new instance of
    :class:`pooldlib.postgresql.models.User`. Any unspecified
    kwargs will be assumed to be metadata to be associated with
    the new user. All errors are bubbled up.

    :param username: The username of the new user.
    :type username: string
    :param password: The password for the new user.
    :type password: string
    :param name: The full name of the new user (optional).
    :type password: string
    :param kwargs: Metadata to associate with the new user.
    :type kwargs: kwarg dictionary

    :raises: :class:`pooldlib.exceptions.InvalidPasswordError`
             :class:`pooldlib.exceptions.UsernameUnavailableError`
             :class:`pooldlib.exceptions.EmailUnavailableError`

    :returns: :class:`pooldlib.postgresql.models.User`
    """
    validate_password(password, exception_on_invalid=True)

    if 'email' in kwargs:
        if email_exists(kwargs['email']):
            msg = 'The email address %s is already assigned to another user.'
            msg %= kwargs['email']
            raise EmailUnavailableError(msg)
        # Only store lower-case emails in the system
        kwargs['email'] = kwargs['email'].lower()

    u = UserModel()
    u.username = username
    u.password = password
    if name:
        u.name = name

    with transaction_session() as session:
        try:
            session.add(u)
            session.commit()
        except SQLAlchemyIntegrityError:
            msg = "Username %s already in use." % username
            raise UsernameUnavailableError(msg)

    meta = list()
    for (k, v) in kwargs.items():
        um = UserMetaModel()
        um.key = k
        um.value = v
        um.user = u
        meta.append(um)

    with transaction_session(auto_commit=True) as session:
        for um in meta:
            session.add(um)
    return u
Esempio n. 2
0
    def test_create(self):
        u = User()
        u.name = 'Testy McTesterson'
        u.username = '******'
        u.password = '******'
        self.commit_model(u)

        qs = User.query.filter_by(username='******').all()
        assert_equal(1, len(qs))

        assert_true(u.password.startswith('sha1'))
        assert_true(len(u.password.split('$', 2)) == 3)
Esempio n. 3
0
    def test_create(self):
        u = User()
        u.name = 'Testy McTesterson'
        u.username = '******'
        u.password = '******'
        self.commit_model(u)

        qs = User.query.filter_by(username='******').all()
        assert_equal(1, len(qs))

        assert_true(u.password.startswith('sha1'))
        assert_true(len(u.password.split('$', 2)) == 3)
Esempio n. 4
0
    def test_create_duplicate(self):
        u1 = User()
        u1.name = 'Testy McDuplicate'
        u1.username = '******'
        u1.password = '******'
        self.session.add(u1)
        self.session.flush()

        u2 = User()
        u2.name = 'Testy McDuplicate'
        u2.username = '******'
        u2.password = '******'
        self.session.add(u2)
        self.session.flush()
Esempio n. 5
0
    def factory(name, description, percentage, flat):
        u = User()
        u.username = name
        u.password = name
        db.session.add(u)
        db.session.flush()

        b = Balance()
        b.type = 'user'
        b.user_id = u.id
        b.amount = 0
        b.currency_id = 1
        db.session.add(b)

        f = Fee()
        f.name = name
        f.description = description
        f.fractional_pct = percentage
        f.flat = flat
        f.user_id = u.id
        db.session.add(f)
Esempio n. 6
0
    def test_create_duplicate(self):
        u1 = User()
        u1.name = 'Testy McDuplicate'
        u1.username = '******'
        u1.password = '******'
        self.session.add(u1)
        self.session.flush()

        u2 = User()
        u2.name = 'Testy McDuplicate'
        u2.username = '******'
        u2.password = '******'
        self.session.add(u2)
        self.session.flush()
Esempio n. 7
0
    def create_user(self, username, name, email=None):
        u = User()
        u.name = name
        u.username = username
        # Passwords must contain at least one number, so we force it...
        u.password = username + '1'
        u.verified = True
        u.enabled = True
        self.commit_model(u)

        if email is not None:
            um = UserMeta()
            um.key = 'email'
            um.value = email
            um.user = u
            self.commit_model(um)

        return u
Esempio n. 8
0
    def create_user(self, username, name, email=None):
        u = User()
        u.name = name
        u.username = username
        # Passwords must contain at least one number, so we force it...
        u.password = username + '1'
        u.verified = True
        u.enabled = True
        self.commit_model(u)

        if email is not None:
            um = UserMeta()
            um.key = 'email'
            um.value = email
            um.user = u
            self.commit_model(um)

        return u