コード例 #1
0
def _add_questions(user_id: int, data: Dict) -> str:
    language_id = get_language_id(data['language'].upper(), 'code')
    values = generate_questions_values(user_id, language_id,
                                       int(data['test_type']),
                                       data['questions'])
    insert_questions(values)
    return 'Ваши вопросы были успешно добавлены!'
コード例 #2
0
def _update_questions(user_id: int, file: io.BytesIO) -> str:
    try:
        data = check_language_test(file, False)
    except Exception as e:
        return str(e)
    else:
        questions = get_all_questions(user_id)
        question_ids, missed_questions, upd_questions = [], [], []
        for question in data['questions']:
            _question = normalize_question(question['question'])
            if _question in questions:
                question_ids.append(questions[_question])
                upd_questions.append(question)
            else:
                missed_questions.append(_question)
        if question_ids:
            delete_questions(question_ids)
            language_id = get_language_id(data['language'].upper(), 'code')
            values = generate_questions_values(user_id, language_id,
                                               int(data['test_type']),
                                               upd_questions)
            insert_questions(values)
        if missed_questions:
            fmt_missed_questions = '\n'.join(
                f'{ind}. {val}'
                for ind, val in enumerate(missed_questions, start=1))
            return (f'Были обновлены не все вопросы из вашего списка.\n'
                    f'Список вопросов, которые не были ранее загружены:\n'
                    f'{fmt_missed_questions}')
        else:
            return 'Все вопросы были успешно обновлены!'
コード例 #3
0
def test_get_test_types():
    result = [
        'Тест по грамматике.',
        'Тест по существительным.',
    ]
    assert get_test_types('English') == result
    assert get_test_types(get_language_id('English')) == result
コード例 #4
0
def test_delete_questions(random_language_test):
    language_id = get_language_id(random_language_test['language'], 'code')
    values = generate_questions_values(1, language_id,
                                       random_language_test['language'],
                                       random_language_test['questions'])
    question = random_language_test['questions'][0]['question']
    insert_questions(values)
    all_questions = get_all_questions(1)
    delete_questions([
        all_questions[question],
    ])
    assert question not in get_all_questions(1)
コード例 #5
0
def _select_language(session: UserSession, message: Optional[str]) -> Answer:
    if message is None or not is_supported_language(message):
        current_languages = get_current_languages()
        keyboard = get_keyboard(current_languages, row_width=1)
        text = 'Выберите один из доступных языков.'
        if message is not None:
            text = f'Вы прислали неподдерживаемый язык.\n{text}'
        return Answer(text=text, keyboard=keyboard)
    else:
        session.language_id = get_language_id(message.strip())
        _ush.update_current_step(session)
        return _ush.handle_session(session)
コード例 #6
0
def test_delete_questions(language_test_file,
                          language_test_creator_session_handler,
                          language_test_creator_session):
    file, language_test = language_test_file
    language_id = get_language_id(language_test['language'], 'code')
    values = generate_questions_values(1, language_id,
                                       language_test['language'],
                                       language_test['questions'])
    insert_questions(values)
    question = language_test['questions'][0]['question']
    _session = _update_step(language_test_creator_session, 'delete_questions')
    _ = language_test_creator_session_handler.handle_session(
        _session, question)
    assert question not in get_all_questions(1)
コード例 #7
0
def test_get_language_id(language, key, result):
    assert get_language_id(language, key) == result