class Chat: FILE_PATH = './chat.txt' COMPLETED_FILE_PATH = './completed_message.txt' def __init__(self, user): self.user = user self.file_handler = FileHandler() def type_a_message(self, message=None, file_path=None): """메세지를 입력하는 함수 Notes: message(str)혹은 random string을 txt파일에 적는 역할을하는 함수여서 따로 반환하지 않음 Args: user (User) message (str) file_path (str) Returns: - """ # str 생성 or message_list를 인자로 받아서 txt에 저장. if file_path is None: file_path = self.FILE_PATH # TODO 1. str 생성 or message(str)를 인자로 받아서 txt에 저장. if message is None: message = str(uuid.uuid4()) # TODO 2. 보낸사람과 Message내용을 dict로 취합해서 저장 user_name = self.user.name message = { # 'id': None 'user': str(user_name), 'message': message, 'time_stamp': None } text_file, now = self.file_handler.access_text_file(file_path) message['time_stamp'] = now text_file.write(str(message) + '\n') text_file.close() def send_the_message(self, file_path=None): if file_path is None: file_path = self.FILE_PATH text_file, now = self.file_handler.access_text_file(file_path, 1) all_messages = text_file.readlines() if len(all_messages) == 0: text_file.close() print("끝") return cur_message = all_messages[0] print(cur_message) self.store_completed_the_message(cur_message) text_file.seek(0) del all_messages[0] for message in all_messages: text_file.write(message) text_file.truncate() text_file.close() def run(self): self.type_a_message() self.send_the_message() def store_completed_the_message(self, message, file_path=None): # with self.lock: if file_path is None: file_path = self.COMPLETED_FILE_PATH text_file = open(file_path, 'a') text_file.write(message) text_file.close()
class Chat: """채팅(?)에 대한 class Attributes: user (User) file_handler (FileHandler) """ def __init__(self, user): self.user = user self.file_handler = FileHandler() def type_a_message(self, message=None, file_path=None): """메세지를 입력하는 함수 Notes: message(str)혹은 random string을 txt파일에 적는 역할을하는 함수여서 따로 반환하지 않음 Args: message (str) file_path (str) Returns: - """ if file_path is None: file_path = FILE_PATH # TODO 1. str 생성 or message(str)를 인자로 받아서 txt에 저장. if message is None: message = str(uuid.uuid4()) # TODO 2. 보낸사람과 Message내용을 dict로 취합해서 저장 user_name = self.user.name message = { # 'id': None "user": str(user_name), "message": message, "time_stamp": None } text_file, now = self.file_handler.access_text_file(file_path) message['time_stamp'] = now text_file.write(str(message) + "\n") text_file.close() def send_the_message(self, file_path=None): """메세지를 보내는 함수 Notes: txt파일에 저장된 message를 전송하는(print) 함수여서 따로 반환하지않음. print 후 complete_message.txt 파일에 다시 기록함. Args: file_path (str) Returns: - """ if file_path is None: file_path = FILE_PATH text_file, now = self.file_handler.access_text_file(file_path, 1) all_messages = text_file.readlines() if len(all_messages) == 0: text_file.close() return cur_message = all_messages[0] print(cur_message) self.store_completed_the_message(cur_message) text_file.seek(0) del all_messages[0] for message in all_messages: text_file.write(message) text_file.truncate() text_file.close() def store_completed_the_message(self, message, file_path=None): """전송이 완료된 message를 또다른 txt에 적어놓는 함수 Notes: 전송된 message(str)를 받아서 complete txt에 적어놓는 함수라 따로 반환하지 않음. Args: message (str) file_path (str) Returns: - """ if file_path is None: file_path = COMPLETED_FILE_PATH text_file, now = self.file_handler.access_text_file(file_path) text_file.write(message) text_file.close()