Esempio n. 1
0
File: node.py Progetto: itmap/itmap
 def delete(self, nid):
     """
     file: swagger/node_delete.yml
     """
     node = Node.query.get(nid)
     if node is None:
         return {'msg': 'Invalid nid'}, 400
     relations = NodeRelation.get_relation_by_node_id(nid)
     for rel in relations:
         db.session.delete(rel)
     db.session.delete(node)
     db.session.commit()
     return 'success', 204
Esempio n. 2
0
 def post(self):
     """
     file: swagger/relation_post.yml
     """
     uid = get_jwt_identity()
     vals = dict(parser.parse_args())
     source = Node.query.get(vals['source_node_id'])
     target = Node.query.get(vals['target_node_id'])
     if not (source and target
             and source.graph_id == vals['graph_id']
             and source.graph_id == target.graph_id
             and source.owner_id == uid
             and target.owner_id == uid):
         return {'msg': 'Invalid args'}, 400
     relation = NodeRelation.find_relation(source.id, target.id, source.graph_id)
     if relation:
         return {'msg': 'Already exists'}, 400
     vals.update({
         'owner_id': uid,
     })
     relation = NodeRelation(**vals)
     db.session.add(relation)
     db.session.commit()
     return True, 201
Esempio n. 3
0
 def delete(self):
     """
     file: swagger/relation_delete.yml
     """
     data = request.json
     data = dict(data)
     sid = data.get('source_node_id')
     tid = data.get('target_node_id')
     gid = data.get('graph_id')
     if not (sid and tid and gid):
         return {'msg': 'Invalid args'}, 400
     relation = NodeRelation.find_relation(sid, tid, gid)
     if relation is None:
         return {'msg': 'Invalid args'}, 400
     db.session.delete(relation)
     db.session.commit()
     return '', 204
Esempio n. 4
0
 def put(self):
     """
     file: swagger/relation_put.yml
     """
     vals = dict(parser.parse_args())
     sid = vals.pop('source_node_id')
     tid = vals.pop('target_node_id')
     gid = vals.pop('graph_id')
     relation = NodeRelation.find_relation(sid, tid, gid)
     uid = get_jwt_identity()
     if not (relation and relation.owner_id == uid):
         return {'msg': 'Not allowed to put'}, 400
     else:
         update(relation, vals)
     db.session.add(relation)
     db.session.commit()
     return '', 201
Esempio n. 5
0
File: app.py Progetto: itmap/itmap
def initdb():
    click.echo('Init the db')
    from itmap.models.user import Role, User
    from itmap.models.graph import NodeRelation, Node, Graph
    from itmap.models.article import Article
    from itmap.models.comment import Comment
    from itmap.models.book import Book
    # 必须在调用db.create_all之前导入具体的Model
    # 原因是如User这种类是元类Model的实例(大体上是)
    # 当导入时,实际上是创建了User类
    # 在此过程中,会将User注册到db.metadata.tables中(具体怎么串起来的没找到)
    db.drop_all()
    db.create_all()
    Role.insert_roles()
    users = []
    for index, email in enumerate(app.config['ITMAP_ADMINS']):
        user = User.create_user(email=email,
                                password=app.config['ITMAP_ADMIN_PASSWORD'],
                                username='******'.format(index))
        users.append(user)
    #if app.debug == True:
    if True:
        user = users[0]

        graph = Graph(name='test_graph', owner_id=user.id)
        db.session.add(graph)
        db.session.commit()

        node_names = ['python', 'java', 'c++', u'鸡蛋']
        nodes = []
        for name in node_names:
            node = Node(name=name, owner_id=user.id, graph_id=graph.id)
            nodes.append(node)
        db.session.add_all(nodes)
        db.session.commit()

        node_ids = [(1, 2), (1, 3), (2, 4), (2, 1), (2, 3)]
        relations = []
        for item in node_ids:
            relation = NodeRelation(source_node_id=item[0],
                                    target_node_id=item[1],
                                    graph_id=graph.id,
                                    owner_id=user.id)
            relations.append(relation)
        db.session.add_all(relations)
        db.session.commit()