class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) project_id = db.Column(db.Integer, index=True) email = db.Column(db.String(255), unique=True) password = db.Column(db.String(255), default=lambda: ''.join(random.choice(string.ascii_lowercase) for _ in range(20))) first_name = db.Column(db.String(255)) last_name = db.Column(db.String(255)) current_portal_user_yn = db.Column(db.Boolean) gv_end_del_log = db.Column(db.Date) active = db.Column(db.Boolean()) confirmed_at = db.Column(db.DateTime()) last_login_at = db.Column(db.DateTime()) current_login_at = db.Column(db.DateTime()) last_login_ip = db.Column(db.String(50)) current_login_ip = db.Column(db.String(50)) login_count = db.Column(db.Integer()) is_imported = db.Column(db.Boolean(), default=False) roles = db.relationship( 'Role', secondary=roles_users, backref=db.backref('users', lazy='dynamic'), collection_class=set, ) practices = db.relationship( 'Practice', secondary=practices_users, backref=db.backref('users', lazy='dynamic'), collection_class=set, ) practice_groups = db.relationship( 'PracticeGroup', secondary=practice_groups_users, backref=db.backref('users', lazy='dynamic'), collection_class=set, ) last_update_timestamp = db.Column(db.Integer, nullable=True) def get_id(self): return self.email @property def is_super(self): return self.is_admin or len(self.practice_groups) > 0 @property def is_admin(self): return self.has_role(Role.ADMIN_ROLENAME) @property def is_system(self): return self.email == '*****@*****.**' @property def all_practices(self): return set(self.practices) | set(chain.from_iterable(pg.practices for pg in self.practice_groups)) @property def full_name(self): return '{} {}'.format(self.first_name or '', self.last_name or '').strip() or self.email
class Role(db.Model, RoleMixin): ADMIN_ROLENAME = 'admin' id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) def __str__(self): return self.name
class Role(db.Model, RoleMixin): ADMIN_ROLENAME = 'admin' id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) def __init__(self, *args, **kwargs): self.name = kwargs.get('name') self.description = kwargs.get('description')
class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(255), unique=True) password = db.Column(db.String(255)) first_name = db.Column(db.String(255)) last_name = db.Column(db.String(255)) active = db.Column(db.Boolean()) confirmed_at = db.Column(db.DateTime()) last_login_at = db.Column(db.DateTime()) current_login_at = db.Column(db.DateTime()) last_login_ip = db.Column(db.String(50)) current_login_ip = db.Column(db.String(50)) login_count = db.Column(db.Integer()) roles = db.relationship( 'Role', secondary=roles_users, backref=db.backref('users', lazy='dynamic')) practices = db.relationship( 'PracticeRegistration', secondary=practice_registrations_users, backref=db.backref('users', lazy='dynamic')) def __init__(self, *args, **kwargs): self.email = kwargs.get('email') self.password = kwargs.get('password') self.first_name = kwargs.get('first_name') self.last_name = kwargs.get('last_name') self.active = 0 def is_admin(self): return self.has_role(Role.ADMIN_ROLENAME) def is_system(self): return self.email == '*****@*****.**' @property def full_name(self): return '{} {}'.format(self.first_name or '', self.last_name or '')
ADMIN_ROLENAME = 'admin' id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) def __init__(self, *args, **kwargs): self.name = kwargs.get('name') self.description = kwargs.get('description') roles_users = db.Table( 'roles_users', db.Column( 'user_id', db.Integer(), db.ForeignKey('user.id')), db.Column( 'role_id', db.Integer(), db.ForeignKey('role.id'))) practice_registrations_users = db.Table( 'practice_registrations_users', db.Column( 'user_id', db.Integer(), db.ForeignKey('user.id')), db.Column( 'practice_registration_id',