def handle_register(user_id=None, node_id=None, session=None): """ Handle a registry request, creating a new node, wrapping it in a message and returning it to the client node. *user_id* can be a numeric key to a user record, which will be set in the node record itself. If *node_id* is given, it will be used instead of creating a new node. This allows for node reuse according to criteria specified by the programmer. """ message = RegisterMessage() if node_id is not None: node = session.query(Node).filter(Node.node_id == node_id).first() if node is not None: message.node = node return message.to_json() newnode = Node() newnode.registered = datetime.datetime.now() newnode.registry_user_id = user_id newnode.secret = generate_secret(128) session.add(newnode) session.flush() message.node = newnode return message.to_json()
@client.track() class B(Base): __tablename__ = "test_b" id = Column(GUID, primary_key=True, default=lambda: uuid.uuid4()) name = Column(String) a_id = Column(GUID, ForeignKey("test_a.id")) data = Column(String) a = relationship(A, backref="bs") def __repr__(self): return u"<B id:{0} name:{1} a_id:{2}>".format(self.id, self.name, self.a_id) if os.path.exists(db_file): os.remove(db_file) Base.metadata.create_all(engine) dbsync.set_engine(engine) dbsync.create_all() dbsync.generate_content_types() _session = Session() _session.add( models.Node(registered=datetime.datetime.now(), secret=generate_secret(128))) _session.commit() _session.close()
name = Column(String) def __repr__(self): return u"<A id:{0} name:{1}>".format(self.id, self.name) @client.track class B(Base): __tablename__ = "test_b" id = Column(Integer, primary_key=True) name = Column(String) a_id = Column(Integer, ForeignKey("test_a.id")) a = relationship(A, backref="bs") def __repr__(self): return u"<B id:{0} name:{1} a_id:{2}>".format( self.id, self.name, self.a_id) Base.metadata.create_all(engine) dbsync.set_engine(engine) dbsync.create_all() dbsync.generate_content_types() _session = Session() _session.add( models.Node(registered=datetime.datetime.now(), secret=generate_secret(128))) _session.commit() _session.close()