Welcome to Clortho’s documentation!

Contents:

Quick Start

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import bcrypt

from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from sqlalchemy.exc import IntegrityError

from clortho.auth import UserBase, ActivationError

class SimpleUser(UserBase):
    __tablename__ = 'simple_users'

if __name__ == '__main__':
    engine = create_engine('sqlite:///:memory:')
    session = sessionmaker(bind=engine)()

    SimpleUser.metadata.create_all(engine)

    user1 = SimpleUser(email=u'example@example.com')
    session.add(user1)
    session.commit()

    # Users are unique by email
    try:
        user2 = SimpleUser(email=u'example@example.com')
        session.add(user2)
        session.commit()
    except IntegrityError:
        print "Users are unique by email!"
        session.rollback()

    user1.set_password('pwd')

    assert user1.check_password('pwd')
    assert user1.check_password('pwdd') == False
    assert user1.password_is_set
    assert user1.password_hash == bcrypt.hashpw('pwd', user1.password_hash)


    activation_code = user1.generate_activation_code()
    assert user1.activated == False
    user1.activate(activation_code)
    assert user1.activated

    user1.activated = False
    try:
        user1.activate(activation_code)
    except ActivationError:
        print "Activation codes only work once!"

    new_activation_code = user1.generate_activation_code()
    user1.activate(new_activation_code)
    assert user1.activated

    assert user1.disabled == False
    user1.disabled = True
    assert user1.disabled

    # Password checks fail no matter what if the user is disabled
    assert user1.check_password('pwd') == False

Indices and tables