def _update_model(self, mid, model): self._models[mid] = model self._project_models[model["project"]].add(mid) change_message = json.dumps(dict(id=mid, doc=model)) for client in self._clients: if is_project_reader(self._projects[model["project"]], client.user): client.write_message(change_message)
def _delete_model(self, mid): model = self._models.pop(mid) self._project_models[model["project"]].discard(mid) change_message = json.dumps(dict(id=mid, deleted=True)) for client in self._clients: if is_project_reader(self._projects[model["project"]], client.user): client.write_message(change_message)
def _delete_project(self, pid): project = self._projects.pop(pid) project_models = self._project_models.pop(pid, set()) change_message = json.dumps(dict(id=pid, deleted=True)) for client in self._clients: if is_project_reader(project, client.user): client.projects.discard(pid) client.write_message(change_message)
def add_client(self, client): with self._lock: self._clients.add(client) for pid, project in self._projects.items(): if is_project_reader(project, client.user): client.projects.add(pid) client.write_message(json.dumps(dict(id=pid, doc=project))) for mid, model in self._models.items(): if is_project_reader(self._projects[model["project"]], client.user): client.write_message(json.dumps(dict(id=mid, doc=model)))
def add_client(self, client): with self._lock: self._clients.add(client) for pid, project in self._projects.items(): if is_project_reader(project, client.user): client.projects.add(pid) client.write_message(json.dumps(dict(id=pid, doc=project))) for mid, model in self._models.items(): if model["project"] in self._projects: if is_project_reader(self._projects[model["project"]], client.user): client.write_message(json.dumps(dict(id=mid, doc=model))) else: log.error("Model %s belongs to project %s, but the latter isn't in the cache. This should never happen." % (mid, model["project"]))
def add_client(self, client): with self._lock: self._clients.add(client) for pid, project in self._projects.items(): if is_project_reader(project, client.user): client.projects.add(pid) client.write_message(json.dumps(dict(id=pid, doc=project))) for mid, model in self._models.items(): if model["project"] in self._projects: if is_project_reader(self._projects[model["project"]], client.user): client.write_message( json.dumps(dict(id=mid, doc=model))) else: log.error( "Model %s belongs to project %s, but the latter isn't in the cache. This should never happen." % (mid, model["project"]))
def _update_project(self, pid, project): self._projects[pid] = project change_message = json.dumps(dict(id=pid, doc=project)) for client in self._clients: if is_project_reader(project, client.user): client.write_message(change_message) # The user was added to this project. if pid not in client.projects: client.projects.add(pid) for mid in self._project_models[pid]: client.write_message(json.dumps(dict(id=mid, doc=self._models[mid]))) else: # The user was removed from this project. if pid in client.projects: client.projects.discard(pid) client.write_message(json.dumps(dict(id=pid, deleted=True))) for mid in self._project_models[pid]: client.write_message(json.dumps(dict(id=mid, deleted=True)))
def _update_project(self, pid, project): self._projects[pid] = project change_message = json.dumps(dict(id=pid, doc=project)) for client in self._clients: if is_project_reader(project, client.user): client.write_message(change_message) # The user was added to this project. if pid not in client.projects: client.projects.add(pid) for mid in self._project_models[pid]: client.write_message( json.dumps(dict(id=mid, doc=self._models[mid]))) else: # The user was removed from this project. if pid in client.projects: client.projects.discard(pid) client.write_message(json.dumps(dict(id=pid, deleted=True))) for mid in self._project_models[pid]: client.write_message( json.dumps(dict(id=mid, deleted=True)))