def load_community(cls, master, my_member, integrate_with_tribler = True, auto_join_channel = False): dispersy_database = DispersyDatabase.get_instance() try: dispersy_database.execute(u"SELECT 1 FROM community WHERE master = ?", (master.database_id,)).next() except StopIteration: return cls.join_community(master, my_member, my_member, integrate_with_tribler = integrate_with_tribler, auto_join_channel = auto_join_channel) else: return super(AllChannelCommunity, cls).load_community(master, integrate_with_tribler = integrate_with_tribler, auto_join_channel = auto_join_channel)
def join_community(cls, cid, master_key, my_member, *args, **kargs): assert isinstance(cid, str) assert len(cid) == 20 assert isinstance(master_key, str) assert not master_key or cid == sha1(master_key).digest() assert isinstance(my_member, MyMember) database = DispersyDatabase.get_instance() database.execute(u"INSERT INTO community(user, classification, cid, public_key) VALUES(?, ?, ?, ?)", (my_member.database_id, cls.get_classification(), buffer(cid), buffer(master_key))) print "Join community", cid.encode("HEX") # new community instance community = cls(cid, master_key, *args, **kargs) # send out my initial dispersy-identity community.create_dispersy_identity() return community