class ProjectTag(db.Model): __tablename__ = 'project_tag' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80)) def __repr__(self): return '<ProjectTag %r>' % self.name
class Notification(db.Model): id = db.Column(db.Integer, primary_key=True) content = db.Column(db.String(2000)) created_at = db.Column(db.DateTime, default=datetime.now()) def __repr__(self): return '<Field %r>' % self.name
class QuestionTag(db.Model): __tablename__ = 'question_tag' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80)) def __repr__(self): return '<QuestionTag %r>' % self.name
class User(db.Model, UserMixin): __tablename__ = 'ops_user' id = db.Column(db.Integer, autoincrement=True, primary_key=True) user_name = db.Column(db.String(20), unique=True, index=True) user_pwd = db.Column(db.String(300)) def __init__(self, user_name, user_pwd): self.user_name = user_name self.user_pwd = user_pwd @staticmethod def query_by_username(user_name): return User.query.filter(User.name == user_name).first() @property def pwd(self): raise AttributeError(u'密码不可读') @pwd.setter def pwd(self, user_pwd): self.user_pwd = generate_password_hash(user_pwd) def verify_password(self, user_pwd): if self.user_pwd == user_pwd: return True else: return check_password_hash(self.user_pwd, user_pwd) def __repr__(self): return '<User:%s>' % self.user_name
class UserV(db.Model): __tablename__ = 'user_v' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80)) users = db.relationship('User', backref='UserV', lazy='dynamic') def __repr__(self): return '<UserV %r>' % self.name
class Message(db.Model): id = db.Column(db.Integer, primary_key=True) content = db.Column(db.String(2000)) from_id = db.Column(db.Integer, db.ForeignKey('user.id')) to_id = db.Column(db.Integer, db.ForeignKey('user.id')) created_at = db.Column(db.DateTime, default=datetime.now()) def __repr__(self): return '<Message %r>' % self.name
class DBSourceModel(db.Model, UserMixin): __tablename__ = 'ops_source_detail' id = db.Column(db.Integer, autoincrement=True, primary_key=True) source_type = db.Column(db.String(255)) source_host = db.Column(db.String(255)) source_port = db.Column(db.Integer) source_user = db.Column(db.String(255)) source_pwd = db.Column(db.String(255)) source_parm = db.Column(db.String(255)) def __init__(self, source_type, source_host, source_port, source_user, source_pwd, source_parm): self.source_type = source_type self.source_host = source_host self.source_port = source_port self.source_user = source_user self.source_pwd = source_pwd self.source_parm = source_parm def __init__(self, source_type, source_host, source_pwd, source_parm): self.source_type = source_type self.source_host = source_host self.source_pwd = source_pwd self.source_parm = source_parm def __init__(self, source_type, source_host, source_user, source_pwd, source_parm): self.source_type = source_type self.source_host = source_host self.source_user = source_user self.source_pwd = source_pwd self.source_parm = source_parm @staticmethod def query_by_sourceType(source_type): return DBSourceModel.query.filter( DBSourceModel.source_type == source_type).first() @staticmethod def all(): return DBSourceModel.query.all() @staticmethod def with_entities(*entities): return DBSourceModel.query.with_entities(*entities) def __repr__(self): return '<HostInfo:%s>' % self.id def exeSql(sql, echo): if echo: print(sql) return sqlSession.execeQuery(sql) def add(hostUser): db.session.add(hostUser) db.session.commit()
class HostUserModel(db.Model, UserMixin): __tablename__ = 'ops_host_user' id = db.Column(db.Integer, autoincrement=True, primary_key=True) host_ip = db.Column(db.String(255), unique=True, index=True) host_port = db.Column(db.Integer) host_user = db.Column(db.String(255)) host_password = db.Column(db.String(255)) host_script_path = db.Column(db.String(255)) host_disk_path = db.Column(db.String(255)) def __init__(self, host_ip, host_port, host_user, host_password, host_script_path, host_disk_path): self.host_ip = host_ip self.host_port = host_port self.host_user = host_user self.host_password = host_password self.host_script_path = host_script_path self.host_disk_path = host_disk_path @staticmethod def query_by_hostsID(id): return HostUserModel.query.filter(HostUserModel.id == id).first() @staticmethod def all(): return HostUserModel.query.all() @staticmethod def with_entities(*entities): return HostUserModel.query.with_entities(*entities) def __repr__(self): return '<HostInfo:%s>' % self.id def add(source): db.session.add(source) db.session.commit()
class HostModel(db.Model, UserMixin): __tablename__ = 'ops_host_detail' id = db.Column(db.Integer, autoincrement=True, primary_key=True) host_id = db.Column(db.String(255), primary_key=True) host_name = db.Column(db.String(255)) host_ip = db.Column(db.String(255)) host_total_disk = db.Column(db.String(255)) host_used_disk = db.Column(db.String(255)) host_avai_disk = db.Column(db.String(255)) host_total_memory = db.Column(db.Integer) host_free_memory = db.Column(db.Integer) host_avai_memory = db.Column(db.Integer) host_model_cpu = db.Column(db.String(255)) host_physical_cpu = db.Column(db.String(255)) host_logic_cpu = db.Column(db.String(255)) host_os_time = db.Column(db.String(255)) host_os_version = db.Column(db.String(255)) host_computing_time = db.Column(db.String(255)) update_time = db.Column(db.String(255)) def __init__(self, id, host_id, host_name, host_ip, host_total_disk, host_used_disk, host_avai_disk, host_total_memory, host_free_memory, host_avai_memory, host_model_cpu, host_physical_cpu, host_logic_cpu, host_os_time, host_computing_time, host_os_version, update_time): self.id = id self.host_id = host_id self.host_name = host_name self.host_ip = host_ip self.host_total_disk = host_total_disk self.host_used_disk = host_used_disk self.host_avai_disk = host_avai_disk self.host_total_memory = host_total_memory self.host_free_memory = host_free_memory self.host_avai_memory = host_avai_memory self.host_model_cpu = host_model_cpu self.host_physical_cpu = host_physical_cpu self.host_logic_cpu = host_logic_cpu self.host_os_time = host_os_time self.host_computing_time = host_computing_time self.host_os_version = host_os_version self.update_time = update_time @staticmethod def query_by_hostsID(host_id): return HostModel.query.filter(HostModel.host_id == host_id).first() @staticmethod def all(): return HostModel.query.all() @staticmethod def with_entities(*entities): return HostModel.query.with_entities(*entities) def __repr__(self): return '<HostInfo:%s>' % self.id def exeSql(sql, echo): if echo: print(sql) return sqlSession.execeQuery(sql) def getHostInfo(echo=False): sql = '''SELECT host_id, host_ip, host_name, host_total_memory, host_total_disk, host_logic_cpu, host_computing_time, host_os_version FROM {} order by host_id;'''.format( HostModel.__tablename__) return HostModel.exeSql(sql, echo) def updateHostsDetail(keys, values, echo=False): sql = "REPLACE INTO {} ({})VALUES({})".format( HostModel.__tablename__, str(keys).replace("'", "").replace('[', '').replace(']', ''), str(values).replace('[', '').replace(']', '')) HostModel.exeSql(sql, echo)
class QuestionFieldMid(db.Model): __tablename__ = 'question_field_mid' id = db.Column(db.Integer, primary_key=True) question_id = db.Column(db.Integer, db.ForeignKey('question.id')) field_id = db.Column(db.Integer, db.ForeignKey('field.id'))
class ProjectTagMid(db.Model): __tablename__ = 'project_tag_mid' id = db.Column(db.Integer, primary_key=True) project_id = db.Column(db.Integer, db.ForeignKey('project.id')) tag_id = db.Column(db.Integer, db.ForeignKey('project_tag.id'))
class ProjectComment(db.Model): __tablename__ = 'project_comment' id = db.Column(db.Integer, primary_key=True) created_at = db.Column(db.DateTime, default=datetime.now()) updated_at = db.Column(db.DateTime, default=datetime.now()) content = db.Column(db.String(8000)) status = db.Column(db.String(80)) comment_id = db.Column(db.Integer) form = db.Column(db.String(80)) agree = db.Column(db.Integer, default=0) disagree = db.Column(db.Integer, default=0) project_id = db.Column(db.Integer, db.ForeignKey('project.id')) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) def __repr__(self): return '<ProjectComment %r>' % self.name
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80)) created_at = db.Column(db.DateTime, default=datetime.now()) updated_at = db.Column(db.DateTime, default=datetime.now()) content = db.Column(db.String(8000)) status = db.Column(db.String(80)) img = db.Column(db.String(200)) view_count = db.Column(db.Integer, default=0) agree = db.Column(db.Integer, default=0) disagree = db.Column(db.Integer, default=0) comments = db.relationship('PostComment', backref='Post', lazy='dynamic') tags = db.relationship('PostTag', secondary="post_tag_mid", backref='posts', lazy='dynamic') fields = db.relationship('Field', secondary="post_field_mid", backref='posts', lazy='dynamic') user_id = db.Column(db.Integer, db.ForeignKey('user.id')) def __repr__(self): return '<Post %r>' % self.name
class PostFieldMid(db.Model): __tablename__ = 'post_field_mid' id = db.Column(db.Integer, primary_key=True) post_id = db.Column(db.Integer, db.ForeignKey('post.id')) field_id = db.Column(db.Integer, db.ForeignKey('field.id'))
class QuestionTagMid(db.Model): __tablename__ = 'question_tag_mid' id = db.Column(db.Integer, primary_key=True) question_id = db.Column(db.Integer, db.ForeignKey('question.id')) tag_id = db.Column(db.Integer, db.ForeignKey('question_tag.id'))
class UserDegree(db.Model): __tablename__ = 'user_degree' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80)) users = db.relationship('User', backref='UserDegree', lazy='dynamic')
class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True) email = db.Column(db.String(80), unique=True) auth = db.Column(db.Integer) avartar = db.Column(db.String(120)) password = db.Column(db.String(120)) created_at = db.Column(db.DateTime, default=datetime.now()) work_id = db.Column(db.String(120)) mobile = db.Column(db.String(120), unique=True) content = db.Column(db.String(120)) level_id = db.Column(db.Integer, db.ForeignKey('user_level.id')) prestige_id = db.Column(db.Integer, db.ForeignKey('user_prestige.id')) v_id = db.Column(db.Integer, db.ForeignKey('user_v.id')) level = db.relationship('UserLevel') prestige = db.relationship('UserPrestige') v = db.relationship('UserV') posts = db.relationship('Post', backref='User', lazy='dynamic') post_comments = db.relationship('PostComment', backref='User', lazy='dynamic') projects = db.relationship('Project', backref='User', lazy='dynamic') project_comments = db.relationship('ProjectComment', backref='User', lazy='dynamic') questions = db.relationship('Question', backref='User', lazy='dynamic') question_comments = db.relationship('QuestionComment', backref='User', lazy='dynamic') degree_id = db.Column(db.Integer, db.ForeignKey('user_degree.id')) major_id = db.Column(db.Integer, db.ForeignKey('user_major.id')) degree = db.relationship('UserMajor') major = db.relationship('UserDegree') sended_msgs = db.relationship('Message', backref='from', lazy='dynamic', foreign_keys=Message.from_id) recived_msgs = db.relationship('Message', backref='to', lazy='dynamic', foreign_keys=Message.to_id) recived_notifications = db.relationship('Notification', secondary="notification_user_mid", backref='User', lazy='dynamic') def __repr__(self): return '<User %r>' % self.username
class NotificationUserMid(db.Model): __tablename__ = 'notification_user_mid' id = db.Column(db.Integer, primary_key=True) notification_id = db.Column(db.Integer, db.ForeignKey('notification.id')) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) status = db.Column(db.String(80))
class Field(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80)) def __repr__(self): return '<Field %r>' % self.name
class AgentModel(db.Model, UserMixin): __tablename__ = 'ops_host_detail' id = db.Column(db.Integer, autoincrement=True, primary_key=True) host_id = db.Column(db.String(255)) host_name = db.Column(db.String(255)) host_ip = db.Column(db.String(255)) host_total_disk = db.Column(db.String(255)) host_used_disk = db.Column(db.String(255)) host_avai_disk = db.Column(db.String(255)) host_total_memory = db.Column(db.Integer) host_free_memory = db.Column(db.Integer) host_used_memory = db.Column(db.Integer) host_os_time = db.Column(db.String(255)) host_computing_time = db.Column(db.String(255)) update_time = db.Column(db.String(255)) def __init__(self, id, host_id, host_name, host_ip, host_total_disk, host_used_disk, host_avai_disk, host_total_memory, host_free_memory, host_used_memory, host_computing_time, update_time): self.id = id self.host_id = host_id self.host_name = host_name self.host_ip = host_ip self.host_total_disk = host_total_disk self.host_used_disk = host_used_disk self.host_avai_disk = host_avai_disk self.host_total_memory = host_total_memory self.host_free_memory = host_free_memory self.host_used_memory = host_used_memory self.host_computing_time = host_computing_time self.update_time = update_time @staticmethod def query_by_hostsID(host_id): return AgentModel.query.filter(AgentModel.host_id == host_id).first() @staticmethod def all(): return AgentModel.query.all() @staticmethod def with_entities(*entities): return AgentModel.query.with_entities(*entities) def __repr__(self): return '<HostInfo:%s>' % self.id def getHostInfo(echo=False): sql = '''SELECT * FROM ( SELECT DISTINCT host_id, host_ip, host_name, host_total_memory, host_total_disk, host_physical_cpu, host_computing_time, host_os_version FROM {} ORDER BY update_time DESC) AS s GROUP BY s.host_id;'''.format( "ops_host_detail") if echo: print(sql) return sqlSession.execeQuery(sql)