def add_unit(self, board_id, text, position): pith, transclusions = self.gm._get_pith(board_id, text) position = Position(x=position["x"], y=position["y"]) unit = Unit(board_id=board_id, pith=pith, position=position) unit.id = "{}:{}".format(unit.board_id, unit.short_id) self.gm.units.insert_one(unit.to_mongo()) unit_id = unit.short_id self.gm._insert_transclusions(board_id, unit_id, transclusions) self._record_unit_update(board_id, unit_id) return {"unit": self.gm._get_extended_unit(board_id, unit_id)}
def post(self, board_id, discussion_id, user_id, text, flairs): pith, transclusions = self.gm._get_pith(board_id, text) user = self.gm.users.find_one({"board_id": board_id, "short_id": user_id}) unit = Unit(board_id=board_id, pith=pith, chat=True, author=user_id, author_name=user["nickname"], flairs=flairs) unit.id = "{}:{}".format(unit.board_id, unit.short_id) self.gm.units.insert_one(unit.to_mongo()) unit_id = unit.short_id self.gm._insert_transclusions(board_id, unit_id, transclusions) self.gm.discussions.update_one( {"short_id" : discussion_id, "board_id": board_id}, {"$push": {"chat": unit_id}} ) return {"unit": self.gm._get_chat_unit(board_id, unit_id)}
def publish(self, board_id, discussion_id, unit_id, position): # make copy orig_unit = self.gm.units.find_one({ "short_id": unit_id, "board_id": board_id }) position = Position(x=position["x"], y=position["y"]) pith, transclusions = self.gm._get_pith(board_id, orig_unit["pith"]) unit = Unit(board_id=board_id, pith=pith, position=position) unit.id = "{}:{}".format(unit.board_id, unit.short_id) self.gm.units.insert_one(unit.to_mongo()) unit_id = unit.short_id self.gm._insert_transclusions(board_id, unit_id, transclusions) self._record_unit_update(board_id, unit_id) return {"unit": self.gm._get_extended_unit(board_id, unit_id)}
def create_notice_unit(self, board_id, discussion_id, message, user_id): # clean it of transclusions message = self._wipe_pith(message) user = self.users.find_one({"short_id": user_id, "board_id": board_id}) unit = Unit(board_id=board_id, pith=message, chat=True, author=user_id, author_name=user["nickname"], flairs=[], notice=True) unit.id = "{}:{}".format(unit.board_id, unit.short_id) self.units.insert_one(unit.to_mongo()) unit_id = unit.short_id self.discussions.update_one( { "short_id": discussion_id, "board_id": board_id }, {"$push": { "chat": unit_id }}) return unit