Example #1
0
class Comment(db.Model):
    __tablename__ = 'comment'

    id = db.Column(db.Integer, autoincrement=True, primary_key=True)
    content = db.Column(db.String(255), nullable=False)
    article_id = db.Column(db.Integer,
                           db.ForeignKey('article.id', ondelete='CASCADE'),
                           nullable=False)
    user_id = db.Column(db.String(100),
                        db.ForeignKey('front_user.id', ondelete='CASCADE'),
                        nullable=False)
    article = db.relationship('Article',
                              backref=db.backref('comments', lazy='dynamic'))
    is_use = db.Column(db.Boolean, default=True)
    create_time = db.Column(db.DateTime, default=datetime.now)
    user = db.relationship('FrontUser',
                           backref=db.backref('comment', lazy='dynamic'))

    def make_dict(self):
        return {
            'id': self.id,
            'content': self.content,
            'article': self.article_id,
            'is_use': self.is_use,
            'create_time': self.create_time,
            'user_name': g.user.username
        }
Example #2
0
class Article(db.Model):
    __tablename__ = 'article'
    id = db.Column(db.Integer, autoincrement=True, primary_key=True)
    title = db.Column(db.String(30), nullable=False)
    content = db.Column(db.Text, nullable=False)
    praise = db.Column(db.Integer, default=0)
    marvellous = db.Column(db.Boolean, default=False)
    create_time = db.Column(db.DateTime, default=datetime.now)
    last_update_time = db.Column(db.DateTime, onupdate=datetime.now)
    can_read = db.Column(db.Boolean, default=True)
    user_id = db.Column(db.String(100),
                        db.ForeignKey('front_user.id', ondelete='CASCADE'))
    model_id = db.Column(db.Integer,
                         db.ForeignKey('model.id', ondelete='CASCADE'))
    model = db.relationship(Model,
                            backref=db.backref('articles', lazy='dynamic'),
                            cascade='all')
    user = db.relationship(FrontUser,
                           backref=db.backref('articles', lazy='dynamic'),
                           cascade='all')

    def update_article(self, title, content):
        self.title = title
        self.content = content

    def __add__(self, other):
        self.praise += 1

    def __sub__(self, other):
        self.praise -= 1
Example #3
0
class Answer(db.Model):
    __tablename__ = 'answers'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    content = db.Column(db.Text, nullable=False)
    question_id = db.Column(db.Integer,db.ForeignKey('questions.id'))
    author_id = db.Column(db.Integer,db.ForeignKey('users.id'))

    question = db.relationship('Question',backref=db.backref('answers'))
    author = db.relationship('User',backref=db.backref('answers'))
Example #4
0
class Request_api(db.Model):
    __tablename__ = 'request_api'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    req_name = db.Column(db.String(100), nullable=False)
    project_id = db.Column(db.Integer, db.ForeignKey('project.id'), nullable=False, )
    file_level_id = db.Column(db.Integer, db.ForeignKey('file_level.id'), nullable=False, )
    req_method = db.Column(db.String(100), nullable=False)
    req_url = db.Column(db.String(100), nullable=False)
    req_data = db.Column(db.Text)
    create_datetime = db.Column(db.DateTime, server_default=db.text("CURRENT_TIMESTAMP"), doc="创建时间")
    update_datetime = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), doc="更新时间")
    # 在Req_api可以通过project(关系名称)关联到project表根据project_id, 同时在Project表也可以通过api,关联到Comment表
    project = db.relationship('Project', backref=db.backref('request_api', order_by=create_datetime.desc()))
    file_level = db.relationship('File_level', backref=db.backref('request_api', order_by=create_datetime.desc()))
Example #5
0
class Power(db.Model):
    __tablename__ = 'power'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    index_r = db.Column(db.Boolean, nullable=False, default=True)
    index_w = db.Column(db.Boolean, nullable=False, default=False)
    person_r = db.Column(db.Boolean, nullable=False, default=True)
    person_w = db.Column(db.Boolean, nullable=False, default=False)
    article_r = db.Column(db.Boolean, nullable=False, default=True)
    article_w = db.Column(db.Boolean, nullable=False, default=False)
    comment_r = db.Column(db.Boolean, nullable=False, default=True)
    comment_w = db.Column(db.Boolean, nullable=False, default=False)
    models_r = db.Column(db.Boolean, nullable=False, default=True)
    models_w = db.Column(db.Boolean, nullable=False, default=False)
    users_r = db.Column(db.Boolean, nullable=False, default=True)
    users_w = db.Column(db.Boolean, nullable=False, default=False)
    cms_users_r = db.Column(db.Boolean, nullable=False, default=True)
    cms_users_w = db.Column(db.Boolean, nullable=False, default=False)
    cms_group_r = db.Column(db.Boolean, nullable=False, default=True)
    cms_group_w = db.Column(db.Boolean, nullable=False, default=False)
    group_r = db.Column(db.Boolean, nullable=False, default=True)
    group_w = db.Column(db.Boolean, nullable=False, default=False)
    swiper_r = db.Column(db.Boolean, nullable=False, default=True)
    swiper_w = db.Column(db.Boolean, nullable=False, default=True)
    groups = db.relationship(Group,
                             backref=db.backref('powers', order_by=id),
                             order_by=Group.id,
                             secondary=Group_Power)
Example #6
0
class Blog(BaseMixin, db.Model):
    __tablename__ = 'blogs'

    name = db.Column(db.String(255),nullable=False)
    title = db.Column(db.String(255),nullable=False)
    slug = db.Column(db.String(255),nullable=False)
    category_id = db.Column(db.Integer,db.ForeignKey('categories.id'))
    category = db.relationship('Category',backref=db.backref(
                        'blogs',lazy='dynamic'))
    author_id = db.Column(db.Integer,db.ForeignKey('users.id'))
    #author = db.relationship('User',backref=db.backref(
    #                    'blogs',lazy='dynamic'))

    icon_id = db.Column(db.Integer,db.ForeignKey('font_icons.id'))
    icon = db.relationship('FontIcon',backref='blogs')


    @property
    def post_count(self):
        return len(self.posts)
    

    @staticmethod
    def get_by_author_id(author_id):
        return Blog.query.filter(Blog.author_id==author_id).all()

    def _get_absolute_url(self):
        return url_for('blog.post_list',item_id=self.id)

    def _get_edit_url(self):
        return url_for('admin.add_blog')
    
    def _get_create_url(self):
        return url_for('admin.add_blog')
Example #7
0
class EquipmentManagement(db.Model):
    __tablename__ = 'equipment_management'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    rank = db.Column(db.Integer, nullable=False)
    title = db.Column(db.String(100), nullable=False, comment="配置名")
    setting_args = db.Column(db.Text, comment="配置参数")
    status = db.Column(db.Integer,
                       default=0,
                       nullable=False,
                       comment="运行状态 0停止,1运行中")
    cron_status = db.Column(db.Integer,
                            default=0,
                            nullable=False,
                            comment="定时任务状态 0停止,1启动")
    cron_times = db.Column(db.String(100), nullable=True, comment="crontab表达式")
    next_run_time = db.Column(db.String(100),
                              nullable=True,
                              comment="下次任务运行时间")
    session_id = db.Column(db.String(100), nullable=True, comment="session_id")
    remoteHost = db.Column(db.String(100),
                           nullable=False,
                           comment="远程appium服务器地址")
    remotePort = db.Column(db.Integer, nullable=False, comment="远程appium服务器端口")

    test_case_suit = db.relationship('EquipmentIncludeTesSuit',
                                     backref=db.backref('equipment'),
                                     order_by='EquipmentIncludeTesSuit.rank')
Example #8
0
class Tag(db.Model):
    __tablename__ = "tag"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    post_id = db.Column(db.Integer, db.ForeignKey("post.id"))
    isTag = db.Column(db.Boolean, default=False)
    post = db.relationship('Post', backref=db.backref('tag', uselist=False))
    create_time = db.Column(db.DateTime, default=datetime.now)
Example #9
0
class TestCaseStep(db.Model):
    __tablename__ = 'test_case_step'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    rank = db.Column(db.Integer, nullable=False, comment="步骤")
    title = db.Column(db.String(100), comment="用例步骤名称")
    action_id = db.Column(db.Integer,
                          db.ForeignKey('action.id'),
                          nullable=False,
                          comment="执行动作")
    skip = db.Column(db.Integer, nullable=False, comment="是否略过")
    take_screen_shot = db.Column(db.Integer,
                                 default=0,
                                 nullable=False,
                                 comment="是否截图")
    wait_time = db.Column(db.Integer,
                          default=0,
                          nullable=False,
                          comment="用例等待时间")
    input_key = db.Column(db.String(100), comment="输入参数名称")
    output_key = db.Column(db.String(100), comment="输出参数名称")
    test_case_id = db.Column(db.Integer,
                             db.ForeignKey('test_case.id'),
                             comment="所属用例ID")
    create_datetime = db.Column(db.DateTime,
                                server_default=db.text("CURRENT_TIMESTAMP"),
                                comment="创建时间")
    update_datetime = db.Column(
        db.DateTime,
        nullable=False,
        server_default=db.text(
            "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"),
        comment="更新时间")
    action = db.relationship('Action', backref=db.backref('step'))
Example #10
0
class Article(BaseMixin, db.Model):
    __tablename__ = 'articles'

    name = db.Column(db.String(255))
    title = db.Column(db.String(100))
    content = db.Column(db.Text)
    date_added = db.Column(db.DateTime, default=datetime.datetime.now)
    category_id = db.Column(db.Integer, db.ForeignKey('categories.id'))
    category = db.relationship('Category',backref=db.backref(
        'articles',lazy='dynamic'))
    author_id = db.Column(db.Integer,db.ForeignKey('users.id', onupdate="CASCADE", ondelete="CASCADE"))
    blog_id = db.Column(db.Integer,db.ForeignKey('blogs.id'))
    blog = db.relationship('Blog',backref=db.backref(
                        'articles',lazy='dynamic'),lazy='select')
    #author = db.relationship('User',backref="articles",lazy="dynamic")
    visible = db.Column(db.Boolean,default=False)
    description = db.Column(db.Text)
    slug = db.Column(db.String(255))
    url =  db.Column(db.String(255))
    meta_title =  db.Column(db.String(255))
    tags =  db.Column(db.String(255))


    @classmethod
    def all(cls):
        return Article.query.order_by(desc(Article.created)).all()
 
    @classmethod
    def find_by_id(cls, id):
        return Article.query.filter(Article.id == id).first()
 
    @classmethod
    def find_by_author(cls, name):
        return Article.query.filter(Article.author_name == name).all()
 
    @classmethod
    def find_by_category(cls, category):
        return Article.query.filter(Article.category_name == category).all()
 
    @property
    def slug(self):
        return urlify(self.title)
 
    @property
    def created_in_words(self):
        return time_ago_in_words(self.created)
Example #11
0
class Role(db.Model):
    __tablename__ = 'role'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(30), nullable=False)
    groups = db.relationship(Group,
                             backref=db.backref('roles', order_by=id),
                             order_by=Group.id,
                             secondary=Group_Role)
Example #12
0
class File:
    __table_args__ = {'abstract': True}
    __abstract__ = True

    name = db.Column(db.String(255), nullable=False)
    parent_id = db.Column(db.Integer, db.ForeignKey('directories.id'))
    parent = db.relationship('Directory',
                             backref=db.backref('files', lazy='dynamic'))
    full_path = db.Column(db.String(255), nullable=False, unique=True)
Example #13
0
class File_level(db.Model):
    __tablename__ = 'file_level'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    project_id = db.Column(db.Integer, db.ForeignKey('project.id'), nullable=False, )
    pro_id = db.Column(db.String(100), nullable=False)
    label = db.Column(db.String(100))
    create_datetime = db.Column(db.DateTime, server_default=db.text("CURRENT_TIMESTAMP"), doc="创建时间")
    update_datetime = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), doc="更新时间")
    project = db.relationship('Project', backref=db.backref('file_level', order_by=create_datetime.desc()))
Example #14
0
class Project(db.Model):
    __tablename__ = 'project'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(100), nullable=False)
    env_id = db.Column(db.Integer)
    author_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    create_datetime = db.Column(db.DateTime, server_default=db.text("CURRENT_TIMESTAMP"), doc="创建时间")
    update_datetime = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), doc="更新时间")
    author = db.relationship('User', backref=db.backref('project'))
Example #15
0
class Role(db.Model):
    __tablename__ = 'role'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    roleName = db.Column(db.String(20), unique=True, nullable=False)
    desc = db.Column(db.String(200))
    permissions = db.Column(db.Integer, default=Permission.USER_INFO)
    # 中间表绑定到角色zh
    users = db.relationship('User',
                            secondary=cms_role_user,
                            backref=db.backref("roles"))
Example #16
0
class Project(db.Model):
    __tablename__ = 'project'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(100), nullable=False, comment="项目名")
    env_id = db.Column(db.Integer)
    author_id = db.Column(db.Integer, db.ForeignKey('user.id'), comment="项目名")
    is_del = db.Column(db.Integer, nullable=False, default=0, comment="是否已删除")
    create_datetime = db.Column(db.DateTime,
                                server_default=db.text("CURRENT_TIMESTAMP"),
                                comment="创建时间")
    update_datetime = db.Column(
        db.DateTime,
        nullable=False,
        server_default=db.text(
            "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"),
        comment="更新时间")
    author = db.relationship('User', backref=db.backref('project'))
    test_case = db.relationship('TestCase', backref=db.backref('project'))
    test_case_suit = db.relationship('TestCaseSuit',
                                     backref=db.backref('project'))
    page = db.relationship('Page', backref=db.backref('project'))
Example #17
0
class QueryGroup(db.Model):
    __tablename__ = 'query_group'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(32))

    vars = db.relationship(
        'YjVariableInfo',
        secondary=var_queries,
        backref=db.backref('querys', lazy='dynamic'),
        cascade="delete, delete-orphan",
        single_parent=True,
    )
class Appointment(db.Model):
    __tablename__ = 'appointment'
    id = db.Column(db.Integer, primary_key=True)
    time = db.Column(db.Integer)
    add_time = db.Column(db.Integer)
    user_id = db.Column(db.ForeignKey('user.id'))
    user = db.relationship('User',
                           backref=db.backref(
                               'appointments',
                               order_by='Appointment.time.desc()'))

    def __repr__(self):
        return f"Appointment('{self.time}','{self.add_time}')"
Example #19
0
class Post(BaseMixin,db.Model):
    __tablename__ = 'posts'

    name = db.Column(db.String(255),nullable=False)
    content = db.Column(db.Text)
    blog_id = db.Column(db.Integer,db.ForeignKey('blogs.id'))
    blog = db.relationship('Blog',backref=db.backref(
                    'posts'),uselist=False)
    category_id = db.Column(db.Integer,db.ForeignKey('categories.id'))
    category = db.relationship('Category',backref=db.backref(
                    'posts'),uselist=False)
    #tags = db.relationship('Tag',secondary='posts_tags',backref=db.backref(
    #                'posts',lazy='dynamic'),lazy='dynamic')
    author_id = db.Column(db.Integer,db.ForeignKey('users.id'))
    author = db.relationship('User',backref=db.backref(
                    'posts'),uselist=False)
    date_added = db.Column(db.DateTime,default=db.func.now())
    date_modified = db.Column(db.DateTime,default=db.func.now(),onupdate=db.func.now())
    excerpt_length = db.Column(db.Integer,default=55,nullable=False)
    slug = db.Column(db.String(255),unique=True)
    icon_id = db.Column(db.Integer,db.ForeignKey('font_icons.id'))
    icon = db.relationship('FontIcon',backref='posts')

    @property
    def comment_count(self):
        return len(self.comments.query.all())

    @property 
    def author_name(self):
        return self.author.name or ''
    
    @property
    def title(self):
        return self.name.title()

    @property
    def excerpt(self):
        return self.content[:self.excerpt_length]
Example #20
0
class Comment(BaseMixin,db.Model):
    __tablename__ = 'comments'

    slug = db.Column(db.String(255),nullable=False,unique=True)
    content = db.Column(db.Text,nullable=False)
    author_id = db.Column(db.Integer,db.ForeignKey('users.id'))
    author = db.relationship('User',backref=db.backref(
                'comments',lazy="dynamic"))
    article_id = db.Column(db.Integer,db.ForeignKey('articles.id'))
    article = db.relationship('Article',backref=db.backref(
                'comments',lazy='dynamic'))

    post_id = db.Column(db.Integer,db.ForeignKey('posts.id'))
    post = db.relationship('Post',backref=db.backref(
                'comments',lazy='dynamic'))

    def __init__(self,*args,**kwargs):
        if kwargs.get('content',False):
            self.content = kwargs.pop('content')
        if kwargs.get('author_id',False):
            self.author_id = kwargs.pop('author_id')
        else:
            self.author_id = None
        if kwargs.get('article_id',False):
            self.article_id = kwargs.pop('article_id')
        else:
            self.article_id = None
        if kwargs.get('slug',False):
            self.slug = kwargs.pop('slug')
        else:
            tmp = '/comments/'
            if self.article_id is not None:
                tmp += self.article_id + '/'
            if self.author_id is not None:
                tmp += self.author_id + '/'
            self.slug = tmp
        super(Comment,self).__init__(*args,**kwargs)
Example #21
0
class CMSUser(db.Model):

    __tablename__ = 'cms_user'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(64), nullable=False, unique=True)
    password = db.Column(db.String(128), nullable=False)
    email = db.Column(db.String(100), nullable=False, unique=True)
    is_super = db.Column(db.Boolean, default=False, nullable=False)
    join_time = db.Column(db.DATETIME, nullable=False, default=datetime.now)
    r_id = db.Column(db.Integer, db.ForeignKey('role.id', ondelete='RESTRICT'))
    roles = db.relationship(Role,
                            backref=db.backref('cmsuser', order_by=id),
                            order_by=Role.id)

    def __init__(self, **kwargs):
        for k, v in kwargs.items():
            print(k, v)
            if k == 'password':
                print(generate_password_hash(v))
                setattr(self, k, generate_password_hash(v))
                continue
            setattr(self, k, v)

    def check_passwd(self, password):
        return check_password_hash(self.password, password)

    def update_passwd(self, new):
        self.password = generate_password_hash(new)

    def has_power(self, power):
        roles = self.roles
        groups = [i for i in roles.groups]
        powers = []
        for i in groups:
            for j in i.powers:
                powers.append(j)
        print(powers[0].models_w)
        for i in powers:
            if getattr(i, power, False):
                return True

        else:
            return False
Example #22
0
class Element(db.Model):
    __tablename__ = 'element'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(100), nullable=False, comment="目录名")
    type_for_android = db.Column(db.String(30), comment="Android查找方式")
    loc_for_android = db.Column(db.String(200), comment="Android信息描述")
    type_for_ios = db.Column(db.String(30), comment="IOS查找方式")
    loc_for_ios = db.Column(db.String(200), comment="IOS信息描述")
    page_id = db.Column(db.Integer, db.ForeignKey('page.id'), comment="所属页面ID")
    create_datetime = db.Column(db.DateTime,
                                server_default=db.text("CURRENT_TIMESTAMP"),
                                comment="创建时间")
    update_datetime = db.Column(
        db.DateTime,
        nullable=False,
        server_default=db.text(
            "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"),
        comment="更新时间")
    page = db.relationship('Page', backref=db.backref('element'))
class Express(db.Model):
    __tablename__ = 'express'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)

    owner_id = db.Column(db.Integer, nullable=False)  # 此快递的主人
    taker_id = db.Column(db.Integer, nullable=True)  # 此快递的代拿人
    users = db.relationship('User',
                            secondary=express_user,
                            backref=db.backref('expresses'))  # 此快递有关的用户

    # 首页显示内容
    ownername = db.Column(db.String(20), nullable=False)
    starting = db.Column(db.String(20), nullable=False)
    destination = db.Column(db.String(30), nullable=False)
    payment = db.Column(db.Integer, nullable=False)
    tips = db.Column(db.String(15), nullable=False)

    # 详情页显示内容
    express_id = db.Column(db.String(20), nullable=False)  # 快递单号
    destination_detail = db.Column(db.String(20), nullable=True)  # 详细地址,选填
    weight = db.Column(db.String(20), nullable=True)  # 重量,选填
    size = db.Column(db.String(20), nullable=True)  # 大小,选填
    tips_detail = db.Column(db.Text, nullable=True)  # 备注,选填

    # 确认代拿后显示
    # 联系方式
    #  owner:
    tele_o = db.Column(db.String(11), nullable=True)
    wechat_o = db.Column(db.String(20), nullable=True)
    qq_o = db.Column(db.String(20), nullable=True)
    #  taker:
    tele_t = db.Column(db.String(11), nullable=True)
    wechat_t = db.Column(db.String(20), nullable=True)
    qq_t = db.Column(db.String(20), nullable=True)

    # 发布、代拿、预计送达时间
    time_publish = db.Column(db.String(20), nullable=False)
    time_take = db.Column(db.String(20), nullable=True)
    time_handover = db.Column(db.String(20), nullable=True)

    # 状态:0:等待代拿;1:在路上;2:等待支付
    state = db.Column(db.Integer, nullable=False)
Example #24
0
class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.String(100), primary_key=True, default=shortuuid.uuid)
    telephone = db.Column(db.String(11), nullable=False)
    username = db.Column(db.String(50), nullable=False)
    _password = db.Column(db.String(100), nullable=False)
    email = db.Column(db.String(50), nullable=False)
    create_time = db.Column(db.DateTime, default=datetime.now)
    books = db.relationship('Book',
                            backref=db.backref('users'),
                            lazy='dynamic')

    @property
    def password(self):
        return self._password

    @password.setter
    def password(self, raw_password):
        self._password = generate_password_hash(raw_password)

    def check_password(self, raw_password):
        return check_password_hash(self.password, raw_password)
Example #25
0
class Page(db.Model):
    __tablename__ = 'page'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(100), nullable=False, comment="页面名")
    project_id = db.Column(db.Integer,
                           db.ForeignKey('project.id'),
                           comment="项目id")
    parent_directory = db.Column(db.Integer,
                                 nullable=False,
                                 default=0,
                                 comment="父级目录ID")
    is_del = db.Column(db.Integer, nullable=False, default=0, comment="是否已删除")
    create_datetime = db.Column(db.DateTime,
                                server_default=db.text("CURRENT_TIMESTAMP"),
                                comment="创建时间")
    update_datetime = db.Column(
        db.DateTime,
        nullable=False,
        server_default=db.text(
            "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"),
        comment="更新时间")
    action = db.relationship('Action', backref=db.backref('page'))
Example #26
0
class TestSuitStep(db.Model):
    __tablename__ = 'test_suit_step'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    rank = db.Column(db.Integer, nullable=False, comment="执行顺序")
    test_case_id = db.Column(db.Integer,
                             db.ForeignKey('test_case.id'),
                             nullable=False,
                             comment="用例")
    skip = db.Column(db.Integer, nullable=False, comment="是否略过")
    test_case_suit_id = db.Column(db.Integer,
                                  db.ForeignKey('test_case_suit.id'),
                                  comment="所属用例集ID")
    input_args = db.Column(db.Text, comment="输入参数对象")
    create_datetime = db.Column(db.DateTime,
                                server_default=db.text("CURRENT_TIMESTAMP"),
                                comment="创建时间")
    update_datetime = db.Column(
        db.DateTime,
        nullable=False,
        server_default=db.text(
            "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"),
        comment="更新时间")
    test_case = db.relationship('TestCase', backref=db.backref('suit'))
Example #27
0
class User(db.Model):
    __tablename__="user"
    id=db.Column(db.Integer,primary_key=True,autoincrement=True)
    username=db.Column(db.String(20),nullable=False)
    _password=db.Column(db.String(200),nullable=False)
    email=db.Column(db.String(20),nullable=False)
    create_time=db.Column(db.DateTime,default=datetime.now)
    roles=db.relationship("role", backref=db.backref("users"), secondary=role_user)

    @property
    def getPermission(self):
        num=0
        for role in self.roles:
            num=num | role.permis
        return num

    def checkPermision(self,permis):
        if self.getPermission & permis !=0:
            return True
        else:
            return False


    def __init__(self,password,**kwargs):
        self.password=password
        kwargs.pop("password",None)
        super(User,self).__init__(**kwargs)

    @property
    def password(self):
        return self._password
    @password.setter
    def password(self,frontpwd):
        self._password=generate_password_hash(frontpwd)

    def checkPwd(self,frontpwd):
        return check_password_hash(self._password,frontpwd)
Example #28
0
class TestCaseSuit(db.Model):
    __tablename__ = 'test_case_suit'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(100), nullable=False, comment="用例集名")
    project_id = db.Column(db.Integer,
                           db.ForeignKey('project.id'),
                           comment="所属项目ID")
    is_del = db.Column(db.Integer, nullable=False, default=0, comment="是否已删除")
    parent_directory = db.Column(db.Integer,
                                 nullable=False,
                                 default=0,
                                 comment="父级目录ID")
    create_datetime = db.Column(db.DateTime,
                                server_default=db.text("CURRENT_TIMESTAMP"),
                                comment="创建时间")
    update_datetime = db.Column(
        db.DateTime,
        nullable=False,
        server_default=db.text(
            "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"),
        comment="更新时间")
    suit_step = db.relationship('TestSuitStep',
                                backref=db.backref('case_suit'),
                                order_by='TestSuitStep.rank')
Example #29
0
class User(UserMixin, db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(32), nullable=False)
    email = db.Column(db.String(32))
    pw_hash = db.Column(db.String(128))
    login_count = db.Column(db.Integer, default=0)
    last_login_ip = db.Column(db.String(64), default='unknown')
    last_login_time = db.Column(db.Integer)

    roles = db.relationship('Role',
                            secondary=roles,
                            backref=db.backref('user', lazy='dynamic'),
                            passive_deletes=True)

    def __init__(self, username, password, email=None):
        self.username = username
        # self.set_password(password)
        self.pw_hash = password
        self.email = email

    def __repr__(self):
        return '<User {}'.format(self.username)

    @staticmethod
    def verify_auth_token(token):
        s = Serializer(current_app.config['SECRET_KEY'])
        try:
            data = s.loads(token)
        except SignatureExpired:
            return None
        except BadSignature:
            return None
        except TypeError:
            return None
        user_id = data['id']
        user = User.query.get(user_id)

        try:
            assert (data['time'] == user.last_login_time)
        except AssertionError:
            return None

        return user

    def is_authenticated(self):
        if isinstance(self, AnonymousUserMixin):
            return False
        else:
            return True

    def is_active(self):
        return True

    def is_anonymous(self):
        if isinstance(self, AnonymousUserMixin):
            return True
        else:
            return False

    def get_id(self):
        return unicode(self.id)

    def set_password(self, password):
        self.pw_hash = generate_password_hash(password)

    def check_password(self, password):
        # return check_password_hash(self.pw_hash, password)
        return self.pw_hash == password
Example #30
0
class User(db.Model, UserMixin, BaseMixin):
    __tablename__ = 'users'
    bio = db.Column(db.String(128), default='')
    name = db.Column(db.String(128), default='')
    nickname = db.Column(db.String(128), default='')
    email = db.Column(db.String(191), default='')
    password = db.Column(db.String(191))
    website = db.Column(db.String(191), default='')
    github_id = db.Column(db.String(191), default='')
    last_login_at = db.Column(db.DateTime())
    current_login_at = db.Column(db.DateTime())
    last_login_ip = db.Column(db.String(100))
    current_login_ip = db.Column(db.String(100))
    login_count = db.Column(db.Integer)
    active = db.Column(db.Boolean())
    icon_color = db.Column(db.String(7))
    confirmed_at = db.Column(db.DateTime())
    company = db.Column(db.String(191), default='')
    avatar_id = db.Column(db.String(20), default='')
    roles = db.relationship('Role',
                            secondary=roles_users,
                            backref=db.backref('users', lazy='dynamic'))

    __table_args__ = (
        db.Index('idx_name', name),
        db.Index('idx_email', email),
    )

    def url(self):
        return '/user/{}'.format(self.id)

    @property
    def avatar_path(self):
        avatar_id = self.avatar_id
        return '' if not avatar_id else '/static/avatars/{}.png'.format(
            avatar_id)

    def update_avatar(self, avatar_id):
        self.avatar_id = avatar_id
        self.save()

    def upload_avatar(self, img):
        avatar_id = generate_id()
        filename = os.path.join(UPLOAD_FOLDER, 'avatars',
                                '{}.png'.format(avatar_id))

        if isinstance(img, str) and img.startswith('http'):
            r = requests.get(img, stream=True)
            if r.status_code == 200:
                with open(filename, 'wb') as f:
                    for chunk in r.iter_content(1024):
                        f.write(chunk)
        else:
            img.save(filename)
        self.update_avatar(avatar_id)

    def follow(self, from_id):
        ok, _ = Contact.create(to_id=self.id, from_id=from_id)
        if ok:
            self._stats = None
        return ok

    def unfollow(self, from_id):
        contact = Contact.get_follow_item(from_id, self.id)
        if contact:
            contact.delete()
            self._stats = None
            return True
        return False

    def is_followed_by(self, user_id):
        contact = Contact.get_follow_item(user_id, self.id)
        return bool(contact)