Beispiel #1
0
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
Beispiel #2
0
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)
Beispiel #3
0
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
Beispiel #4
0
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)
Beispiel #5
0
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
Beispiel #6
0
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))
Beispiel #7
0
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