Files
notifications-admin/app/models.py
2015-11-26 11:53:49 +00:00

51 lines
1.9 KiB
Python

from app import db
from flask import current_app
DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%S.%fZ"
DATE_FORMAT = "%Y-%m-%d"
class Roles(db.Model):
__tablename__ = 'roles'
id = db.Column(db.Integer, primary_key=True)
role = db.Column(db.String, nullable=False, unique=True)
class Users(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, nullable=False, index=True, unique=True)
email_address = db.Column(db.String(255), nullable=False, index=True)
password = db.Column(db.String, index=False, unique=False, nullable=False)
mobile_number = db.Column(db.String, index=False, unique=False, nullable=False)
created_at = db.Column(db.DateTime, index=False, unique=False, nullable=False)
updated_at = db.Column(db.DateTime, index=False, unique=False, nullable=True)
password_changed_at = db.Column(db.DateTime, index=False, unique=False, nullable=True)
role_id = db.Column(db.Integer, db.ForeignKey('roles.id'), index=True, unique=False, nullable=False)
logged_in_at = db.Column(db.DateTime, nullable=True)
failed_login_count = db.Column(db.Integer, nullable=False, default=0)
state = db.Column(db.String, nullable=False, default='pending')
def serialize(self):
serialized = {
'id': self.id,
'name': self.name,
'emailAddress': self.email_address,
'locked': self.failed_login_count > current_app.config['MAX_FAILED_LOGIN_COUNT'],
'createdAt': self.created_at.strftime(DATETIME_FORMAT),
'updatedAt': self.updated_at.strftime(DATETIME_FORMAT),
'role': self.role,
'passwordChangedAt': self.password_changed_at.strftime(DATETIME_FORMAT),
'failedLoginCount': self.failed_login_count
}
return filter_null_value_fields(serialized)
def filter_null_value_fields(obj):
return dict(
filter(lambda x: x[1] is not None, obj.items())
)