def start_signing_out(update, context): # set variables and context user = update.message.from_user dt = update.message.date.astimezone(pytz.timezone("Africa/Douala")) log_id, record, is_exist = get_log_id_and_record(update, context, "signing out") context_dict = {"log_id": log_id, "status": "SIGN_OUT"} set_context(update, context, context_dict) SIGN_OUT_GREETING = f"""Good evening, {user.first_name}.\nYou have signed out today with Log No.{log_id}""" dt = update.message.date.astimezone(pytz.timezone("Africa/Douala")) SIGN_TIME = f"""signing time: {dt.strftime("%m-%d *__%H:%M__*")}""" ASK_INFO = "Would you like to share your today's content of work?" CHECK_DM = """"Please check my DM(Direct Message) to you""" # set dictionary data rewrite_header_message = "You have already signed out as below. " rewrite_footer_message = ( "\nDo you want to delete it and sign out again? or SKIP it?") data_dict = { "new": { "group_message": f"{SIGN_OUT_GREETING}\n{CHECK_DM}\n{SIGN_TIME}", "private_message": f"{SIGN_OUT_GREETING}\n{ASK_INFO}\n{SIGN_TIME}", "keyboard": [[ "I worked at Office", "I would like to report because I worked at home", ]], "return": ANSWER_WORK_TYPE, }, "rewrite": { "group_message": make_text_from_logs( [ record, ], rewrite_header_message, ), "private_message": make_text_from_logs( (record, ), rewrite_header_message, rewrite_footer_message, ), "keyboard": [ ["Delete and Sign Out Again", "SKIP"], ], "return": None, }, } return send_initiating_message_by_branch(update, context, is_exist, data_dict)
def get_back_to_work(update, context): # set variables and context user = update.message.from_user dt = update.message.date.astimezone(pytz.timezone("Africa/Douala")) log_id, record, is_exist = get_log_id_and_record(update, context, "getting back") context_dict = {"log_id": log_id, "status": "GET_BACK"} set_context(update, context, context_dict) GET_BACK_GREETING = f"""Good afternoon, {user.first_name}.\n Welcome back. You have been logged with Log No.{log_id}""" dt = update.message.date.astimezone(pytz.timezone("Africa/Douala")) SIGN_TIME = f"""signing time: {dt.strftime("%m-%d *__%H:%M__*")}""" ASK_INFO = """Did you have lunch with KOICA collagues?""" CHECK_DM = """"Please check my DM(Direct Message) to you""" # set dictionary data rewrite_header_message = "You have already gotten back as below. " rewrite_footer_message = "\nDo you want to delete it and get back again? or SKIP it?" data_dict = { "new": { "group_message": f"{GET_BACK_GREETING}\n{CHECK_DM}\n{SIGN_TIME}", "private_message": f"{GET_BACK_GREETING}\n{ASK_INFO}\n{SIGN_TIME}", "keyboard": [ ["Without any member of KOICA", "With KOICA Colleagues"], ], "return": ANSWER_LUNCH_TYPE }, "rewrite": { "group_message": make_text_from_logs( [ record, ], rewrite_header_message, ), "private_message": make_text_from_logs( (record,), rewrite_header_message, rewrite_footer_message, ), "keyboard": [ ["Delete and Get Back to Work Again", "SKIP"], ], "return": None, }, } return send_initiating_message_by_branch(update, context, is_exist, data_dict)
def check_log(update, context): user = update.message.from_user member = Member.objects.get_or_none(id=user.id) logs = Log.objects.filter(member_fk=member).order_by("-created")[:5] header_message = "Here is your recent log info.\n" text_message = make_text_from_logs(logs, header_message) reply_markdown(update, context, text_message)
def start_signing_in(update, context): # set variables and context user = update.message.from_user dt = update.message.date.astimezone(pytz.timezone("Africa/Douala")) log_id, record, is_exist = get_log_id_and_record(update, context, "signing in") context_dict = {"log_id": log_id, "status": "SIGN_IN"} set_context(update, context, context_dict) # set dictionary data rewrite_header_message = "You have already signed in as below. " rewrite_footer_message = "\nDo you want to *_delete it_* and sign in again? or SKIP it?" data_dict = { "new": { "group_message": make_text_signing_in_greeting(log_id, user.first_name, dt), "private_message": make_text_signing_in_and_ask_info( log_id, user.first_name, dt ), "keyboard": [ ["Office", "Home"], ], "return": ANSWER_WORKPLACE, }, "rewrite": { "group_message": make_text_from_logs( [ record, ], rewrite_header_message, ), "private_message": make_text_from_logs( (record,), rewrite_header_message, rewrite_footer_message, ), "keyboard": [ ["Delete and Sign In Again", "SKIP"], ], "return": None, }, } return send_initiating_message_by_branch(update, context, is_exist, data_dict)
def ask_log_id_to_edit(update, context): """ """ user = update.message.from_user rows = get_logs_by_user_id(user.id, 3) text_message = "Which log do you want to edit?\nPlease send me the log number." if rows: text_message = make_text_from_logs(rows, text_message) context.user_data["status"] = "EDIT_LOG_ID" return {"message": text_message, "keyboard": [[]]}
def ask_confirmation_of_edit(update, context): log_id = update.message.text try: log = get_log_by_id(log_id) print(log) logs = (log, ) if not log: raise ValueError header_message = f"Do you really want to do edit log No.{log_id}?\n" text_message = make_text_from_logs(logs, header_message) chat_id = log.member_fk.id set_context(update, context, {"log_id": log_id, "chat_id": chat_id}) return {"message": text_message} except ValueError: text_message = "Log ID is not exist. Please text me the log ID" return {"message": text_message, "path": "redo", "keyboard": [[]]}
def ask_confirmation_of_removal(update, context): log_id = update.message.text try: int(log_id) context.user_data["remove_log_id"] = log_id row = get_log_by_id(log_id) if not row: raise ValueError rows = (row,) header_message = f"Do you really want to do remove log No.{log_id}?\n" text_message = make_text_from_logs(rows, header_message) return {"message": text_message} except ValueError: text_message = "Please. Send me numbers only." return {"message": text_message, "path": "redo"}
def ask_confirmation_of_removal(update, context): log_id = context.user_data.get("log_id") if log_id: conn = create_connection() row = select_record(conn, "logbook", LOG_COLUMN, {"id": log_id}) conn.close() header_message = f"Do you really want to do remove log No.{log_id}?\n" text_message = make_text_from_logs(row, header_message) keyboard = [["REMOVE GET BACK LOG", "NO"]] reply_markdown(update, context, text_message, keyboard) return ANSWER_LOG_DELETE else: text_message = "An Error has been made. Please try again." reply_markdown(update, context, text_message) return ConversationHandler.END
def check_log(update, context): user = update.message.from_user conn = create_connection() rows = select_record( conn, "logbook", LOG_COLUMN, {"chat_id": user.id}, "ORDER BY timestamp DESC LIMIT 6", ) rows = rows[-1::-1] conn.close() header_message = "Here is your recent log info.\n" text_message = make_text_from_logs(rows, header_message) reply_markdown(update, context, text_message)
def ask_confirmation_of_removal(update, context): log_id = update.message.text try: int(log_id) context.user_data["remove_log_id"] = log_id keyboard = [["YES", "NO"]] conn = create_connection() row = select_record(conn, "logbook", LOG_COLUMN, {"id": log_id}) conn.close() header_message = f"Do you really want to do remove log No.{log_id}?\n" text_message = make_text_from_logs(row, header_message) reply_markdown(update, context, text_message, keyboard) return HANDLE_LOG_DELETE except ValueError: text_message = "Please. Send me numbers only." reply_markdown(update, context, text_message) return HANDLE_DELETE_LOG_ID
def ask_confirmation_of_edit(update, context): log_id = update.message.text try: int(log_id) keyboard = [["YES", "NO"]] conn = create_connection() rows = select_record(conn, "logbook", LOG_COLUMN, {"id": log_id}) conn.close() header_message = f"Do you really want to do edit log No.{log_id}?\n" text_message = make_text_from_logs(rows, header_message) reply_markdown(update, context, text_message, keyboard) chat_id = rows[0][1] set_context(update, context, {"log_id": log_id, "chat_id": chat_id}) return ANSWER_CONFIRMATION except ValueError: text_message = "Please. Send me numbers only." reply_markdown(update, context, text_message) return ANSWER_LOG_ID
def ask_log_id_to_edit(update, context): """ """ user = update.message.from_user conn = create_connection() rows = select_record( conn, "logbook", LOG_COLUMN, {"chat_id": user.id}, "ORDER BY timestamp DESC LIMIT 3", ) rows = rows[-1::-1] conn.close() text_message = "Which log do you want to edit?\nPlease send me the log number." text_message = make_text_from_logs(rows, text_message) reply_markdown(update, context, text_message) context.user_data["status"] = "EDIT_LOG_ID" return ANSWER_LOG_ID