Ejemplo n.º 1
0
class Comment(db.Model):
    __tablename__ = 'comments'

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(64), nullable=True)
    node_id = db.Column(db.Integer, db.ForeignKey('nodes.id'))
    owner_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    owner = db.relationship('User',
                            backref=db.backref('comments', lazy='dynamic'))
    description = db.Column(db.String(2048))
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime,
                           default=datetime.utcnow,
                           onupdate=datetime.utcnow)

    def __repr__(self):
        return '{}'.format(self.title)

    def to_dict(self):
        return {
            'id': self.id,
            'node_id': self.node_id,
            'title': self.title,
            'owner_id': self.owner_id,
            'owner_name': self.owner.name,
            'description': self.description,
        }
Ejemplo n.º 2
0
Archivo: graph.py Proyecto: itmap/itmap
class NodeRelation(db.Model):
    __tablename__ = 'node_relations'

    source_node_id = db.Column(db.Integer,
                               db.ForeignKey('nodes.id'),
                               primary_key=True)
    target_node_id = db.Column(db.Integer,
                               db.ForeignKey('nodes.id'),
                               primary_key=True)
    graph_id = db.Column(db.Integer, db.ForeignKey('graphs.id'))
    owner_id = db.Column(db.Integer, db.ForeignKey('users.id'))

    timestamp = db.Column(db.DateTime, default=datetime.utcnow)
    info = db.Column(db.String(255), default='')
    color = db.Column(db.String(255))
    is_dual_way = db.Column(db.Boolean, default=False)  # 是双向还是单向
    line_type = db.Column(db.String(255))  # 线的类型
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime,
                           default=datetime.utcnow,
                           onupdate=datetime.utcnow)

    def __repr__(self):
        arch = '<->' if self.is_dual_way else '->'
        return '<NodeRelation {!r}{}{!r}>'.format(self.from_node.name, arch,
                                                  self.to_node.name)

    @classmethod
    def find_relation(cls, sid, tid, gid, oid=None):
        kwargs = {
            'source_node_id': sid,
            'target_node_id': tid,
            'graph_id': gid,
        }
        if oid is not None:
            kwargs.update({'owner_id': oid})
        rels = cls.query.filter_by(**kwargs).first()
        return rels

    @classmethod
    def get_relation_by_node_id(cls, nid):
        return cls.query.filter(
            or_(cls.source_node_id == nid, cls.target_node_id == nid)).all()
Ejemplo n.º 3
0
class Article(db.Model):
    __tablename__ = 'articles'

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(64), nullable=True)
    node_id = db.Column(db.Integer, db.ForeignKey('nodes.id'))
    owner_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    url = db.Column(db.String(128))
    author = db.Column(db.String(64))
    source = db.Column(db.String(32))
    description = db.Column(db.String(2048))
    body = db.Column(db.Text())
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime,
                           default=datetime.utcnow,
                           onupdate=datetime.utcnow)

    def __repr__(self):
        return '{}'.format(self.title)
Ejemplo n.º 4
0
class Book(db.Model):
    __tablename__ = 'books'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), nullable=True)
    node_id = db.Column(db.Integer, db.ForeignKey('nodes.id'))
    owner_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    url = db.Column(db.String(256))
    author = db.Column(db.String(64))
    source = db.Column(db.String(32))
    description = db.Column(db.String(2048))
    image = db.Column(db.String(256))
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime,
                           default=datetime.utcnow,
                           onupdate=datetime.utcnow)

    @property
    def pic(self):
        return '{}.jpg'.format(self.id)
Ejemplo n.º 5
0
Archivo: graph.py Proyecto: itmap/itmap
class Node(db.Model):
    __tablename__ = 'nodes'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), index=True, nullable=True)
    relate_page_url = db.Column(db.String(128))

    is_template = db.Column(db.Boolean, default=False)  # 是否作为模板

    color = db.Column(db.String(255))
    size = db.Column(db.String(255))  # 大小
    shape = db.Column(db.String(255))  # 形状
    description = db.Column(db.String(255))

    owner_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    graph_id = db.Column(db.Integer, db.ForeignKey('graphs.id'))
    from_nodes = db.relationship('NodeRelation',
                                 foreign_keys=[NodeRelation.target_node_id],
                                 backref=db.backref('to_node', lazy='joined'),
                                 lazy='dynamic',
                                 cascade='all, delete-orphan')
    to_nodes = db.relationship('NodeRelation',
                               foreign_keys=[NodeRelation.source_node_id],
                               backref=db.backref('from_node', lazy='joined'),
                               lazy='dynamic',
                               cascade='all, delete-orphan')
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime,
                           default=datetime.utcnow,
                           onupdate=datetime.utcnow)

    def __repr__(self):
        return '{}'.format(self.name)

    @property
    def pic(self):
        return '{}.jpg'.format(self.id)
Ejemplo n.º 6
0
Archivo: graph.py Proyecto: itmap/itmap
class Graph(db.Model):
    __tablename__ = 'graphs'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), index=True, nullable=True)
    owner_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    graph_type = db.Column(db.String(64))
    is_private = db.Column(db.Boolean, default=False)  # 是否仅自己可见

    nodes = db.relationship('Node',
                            backref='graph',
                            cascade='all, delete-orphan')
    relations = db.relationship('NodeRelation',
                                backref='graph',
                                cascade='all, delete-orphan')
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime,
                           default=datetime.utcnow,
                           onupdate=datetime.utcnow)

    def __repr__(self):
        return '{}'.format(self.name)
Ejemplo n.º 7
0
from itmap.ext import db, redis, login_manager, mail
from itmap.utils import send_async_email

logger = logging.getLogger(__name__)

class Permission(object):
    OPERATE_MAPS = 0x01
    OPERATE_RESOURCE = 0x02
    OPERATE_QUESTION = 0x04
    DELETE = 0x08
    ADMINISTER = 0x80

roles_users = db.Table(
    'roles_users',
    db.Column('user_id', db.Integer(), db.ForeignKey('users.id')),
    db.Column('role_id', db.Integer(), db.ForeignKey('roles.id'))
)

class Role(db.Model, RoleMixin):
    __tablename__ = 'roles'

    id = db.Column(db.Integer, primary_key=True)
    default = db.Column(db.Boolean, default=False)
    name = db.Column(db.String(80), unique=True, index=True, nullable=True)
    permissions = db.Column(db.Integer)
    created_at = db.Column(db.DateTime, default=datetime.now)
    updated_at = db.Column(db.DateTime, default=datetime.now,
                        onupdate=datetime.now)
    @staticmethod
    def insert_roles():