from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, String
from sqlalchemy.dialects.postgresql import CIDR
from sqlalchemy.orm import relationship, backref
from . import db
from . import login
from flask_login import UserMixin
class User(db.Model, UserMixin):
id = Column(String, primary_key=True)
email = Column(String, unique=True, nullable=False)
password = Column(String, nullable=False)
pref_name = Column(String, nullable=False)
last_login = Column(DateTime, nullable=False)
fs_uniquifier = Column(String, unique=True, nullable=False)
active = Column(Boolean, nullable=False)
roles = relationship('Role', secondary='roles_users',backref=backref('users', lazy='dynamic'))
class Role(db.Model):
id = Column(String, primary_key=True)
name = Column(String, unique=True)
description = Column(String)
class RolesUsers(db.Model):
__tablename__ = "roles_users"
id = Column(Integer(), primary_key=True)
user_id = Column('user_id', String(), ForeignKey('user.id'))
role_id = Column('role_id', String(), ForeignKey('role.id'))
@login.user_loader
def load_user(user_id):
return User.query.filer_by(id=user_id)
class Peer(db.Model):
id = Column(String, primary_key=True)
addr = Column(CIDR, nullable=False)
public_key = Column(String, nullable=False)
class Network(db.Model):
id = Column(String, primary_key=True)
subnet = Column(CIDR, nullable=False)
description = Column(String, nullable=True)