def _updateMembers(members, user, book, lock, address): lock.acquire() ids = [id for id in members if id not in book.members] freezeCount = 0 while ids: id = ids.pop(0) newcomer = User(**members[id]) if newcomer.approverID in book.members and User.isValidInvitation(book.members[newcomer.approverID], newcomer, book.getID()): book.members[id] = newcomer book.versions[id] = 0 freezeCount = 0 else: freezeCount += 1 ids.append(id) if freezeCount >= len(ids): break lock.release() lock.acquire() myMembers = dict(book.members) lock.release() for user in myMembers: if user not in members: http_client = tornado.httpclient.HTTPClient() _body = 'userName='******'&userPubKey=' + escape.url_escape(user.pubKey) _body += '&host=' + escape.url_escape(user.host) _body += '&port=' + escape.url_escape(str(user.port)) _body += '&invitation=' + escape.url_escape(user.invitation if user.invitation is not None else ' ') _body += '&approverID=' + escape.url_escape(user.approverID if user.approverID is not None else ' ') _body += '&bookID=' + escape.url_escape(book.getID()) _body += '&password='******'/newmembers', method = 'POST', body = _body) break
def isMember(self, user): if user.ID() in self.members: return True if user.approverID is not None and user.approverID in self.members: # a newcomer but has not yet been appended to members dictionary return User.isValidInvitation(self.members[user.approverID], user, self.getID()) return False