Role   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 21
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 2
c 2
b 0
f 0
dl 0
loc 21
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A __repr__() 0 4 2
1
"""
2
Model for user
3
"""
4
from flask_security import UserMixin, RoleMixin, SQLAlchemyUserDatastore
5
6
from app.database import db
7
8
roles_users = db.Table('roles_users',
9
                       db.Column('user_id',
10
                                 db.Integer(),
11
                                 db.ForeignKey('users.id')),
12
                       db.Column('role_id',
13
                                 db.Integer(),
14
                                 db.ForeignKey('roles.id')))
15
16
17
class Role(db.Model, RoleMixin):
18
    """
19
    Role Model
20
21
    Using Flask-Security's RoleMixin
22
23
    Arguments:
24
        id (int): Primary Role Key
25
        name (str): Role name for reference in admin and for restrictions
26
        description (str): Role description
27
    """
28
    __tablename__ = 'roles'
29
30
    id = db.Column(db.Integer(), primary_key=True)
31
    name = db.Column(db.String(80), unique=True)
32
    description = db.Column(db.String(255))
33
34
    def __repr__(self):
35
        if self.description is not None:
36
            return '{0} - {1}'.format(self.name, self.description)
37
        return '{0}'.format(self.name)
38
39
40
class User(db.Model, UserMixin):
41
    """
42
    User model
43
44
    Arguments:
45
        id (int): Primary User Key
46
        username (str): Unique username as chosen by the user
47
        email (str): User's email address
48
        password_hash (str): Users hashed password
49
    """
50
    __tablename__ = 'users'
51
52
    id = db.Column(db.Integer, primary_key=True)
53
    username = db.Column(db.String(80), unique=True)
54
    email = db.Column(db.String(120), unique=True)
55
    password = db.Column(db.String(255))
56
    active = db.Column(db.Boolean())
57
    confirmed_at = db.Column(db.DateTime())
58
59
    roles = db.relationship('Role', secondary=roles_users,
60
                            backref=db.backref('users', lazy='dynamic'))
61
62
    def __repr__(self):
63
        return '<User %r>' % self.username
64
    
65
    def __str(self):
66
        return self.username
67
68
user_datastore = SQLAlchemyUserDatastore(db, User, Role)
69