def grades(bot, update, user_data): user = update.message.from_user course = update.message.text if course == MOVE_BACK: popup_choosing_keyboard(update, get_choosing_keyboard()) return CHOOSING logger.info("%s selected grade %s", user.first_name, course) course_id = [ item["actualCourseID"] for item in user_data["grades"] if (item["courseName"] + " " + item["actualCourseFullNumber"] ).replace(" ", "") == course.replace(" ", "") ][0] final_grade = [ item["finalGradeName"] for item in user_data["grades"] if (item["courseName"] + " " + item["actualCourseFullNumber"] ).replace(" ", "") == course.replace(" ", "") ][0] grade_parts = get_grade( log_to_mazak(user_data["username"], user_data["password"]), course_id) grade_message = MazakFiles.grade_to_string(grade_parts) grade_message.append("ציון סופי : {}".format(final_grade)) for part in grade_message[:-1]: update.message.reply_text(part) update.message.reply_text(grade_message[-1], reply_markup=ReplyKeyboardMarkup( get_grades_keyboard(user_data), one_time_keyboard=True)) return GRADES
def choosing(bot, update, user_data): user = update.message.from_user option = update.message.text logger.info("%s choosed %s", user.first_name, option) if option == CHOOSING_OPTIONS[AVGS]: avgs(bot, update, user_data) return CHOOSING elif option == CHOOSING_OPTIONS[GRADES]: user_data["grades"] = get_grades( log_to_mazak(user_data["username"], user_data["password"]))[::-1] reply_keyboard = get_grades_keyboard(user_data) update.message.reply_text("אנא בחר\י קורס", reply_markup=ReplyKeyboardMarkup( reply_keyboard, one_time_keyboard=True)) return GRADES elif option == CHOOSING_OPTIONS[EXAM_CERTIFICATE]: send_confirms_files(bot, update, user_data) elif option == CHOOSING_OPTIONS[NOTEBOOKS]: user_data["notebooks"] = get_available_notebooks( log_to_mazak(user_data["username"], user_data["password"]))[::-1] reply_keyboard = get_notebooks_keyboard(user_data) update.message.reply_text("אנא בחר\י מחברת", reply_markup=ReplyKeyboardMarkup( reply_keyboard, one_time_keyboard=True)) return NOTEBOOKS elif option == CHOOSING_OPTIONS[GRADES_SHEET]: user_data["dept"] = get_departments( log_to_mazak(user_data["username"], user_data["password"])) if len(user_data["dept"]) > 1: reply_keyboard = [[d["name"]] for d in user_data["dept"]] update.message.reply_text("אנא בחר\י מחלקה", reply_markup=ReplyKeyboardMarkup( reply_keyboard, one_time_keyboard=True)) return GRADES_SHEET_CHOOSE_DEP else: user_data["dept_code"] = user_data["dept"][0]["id"] reply_keyboard = [["עברית", "אנגלית"]] update.message.reply_text("אנא בחר\י שפה", reply_markup=ReplyKeyboardMarkup( reply_keyboard, one_time_keyboard=True, resize_keyboard=True)) return GRADES_SHEET else: cancel(bot, update, user_data)
def avgs(bot, update, user_data): reslt = avereges_to_string( get_avereges(log_to_mazak(user_data["username"], user_data["password"]))) for item in reslt: update.message.reply_text(item) popup_choosing_keyboard(update, get_choosing_keyboard()) return CHOOSING
def download_grades_sheet(update, user_data, filename, lang): notebook_file = io.BytesIO( get_grade_sheet( log_to_mazak(user_data["username"], user_data["password"]), user_data["dept_code"], lang)) update.message.reply_document(notebook_file, filename=filename, timeout=9999999, one_time_keyboard=True)
def password(bot, update, user_data): user = update.message.from_user user_data["password"] = update.message.text logger.info("%s entered password", user.first_name) try: log_to_mazak(user_data["username"], user_data["password"]) except Exception as e: if type(e) == LoginErrorExcpetion: update.message.reply_text( "שם המשתמש או הסיסמא אינם נכונים אנא נסה שוב") update.message.reply_text("אנא הכנס\י שם משתמש של המזק") return USERNAME else: update.message.reply_text(str(e)) return ConversationHandler.END popup_choosing_keyboard(update, get_choosing_keyboard()) return CHOOSING
def download_notebook(update, user_data, filename, notebook): notebook_file = io.BytesIO( get_notebook( log_to_mazak(user_data["username"], user_data["password"]), notebook["id"])) notebook_file.seek(0) update.message.reply_document(notebook_file, filename=filename, timeout=999999, reply_markup=ReplyKeyboardMarkup( get_notebooks_keyboard(user_data), one_time_keyboard=True))
def send_confirms_files(bot, update, user_data): bot.send_chat_action(chat_id=update.effective_message.chat_id, action=ChatAction.UPLOAD_DOCUMENT, timeout=60) try: reslt = get_test_confirmations( log_to_mazak(user_data["username"], user_data["password"])) except Exception as e: if type(e) is BlockedStudent: update.message.reply_text("המשתמש חסום, אי אפשר להוריד אישור נבחן") popup_choosing_keyboard(update, get_choosing_keyboard()) return CHOOSING for file in reslt: update.message.reply_document(io.BytesIO(file[0]), filename=file[1]) popup_choosing_keyboard(update, get_choosing_keyboard()) return CHOOSING