Esempio n. 1
0
def task(task_id):
    user = current_user
    task = user.tasks.filter_by(task_id=task_id).first()
    task_finish = Task.query.filter_by(status=0, user_id=user.id).first()
    if not task_finish is None and task.id > task_finish.id:
        return redirect(url_for('task.task', task_id=task_finish.id))
    base_task = ManagerTask.get_task(task_id)
    name = base_task.name
    description = base_task.description
    instruction = base_task.instruction
    example = base_task.example
    quest = base_task.quest

    form, result = check_from(user)
    table_names = user.get_table_names()
    return render_template('task/task.html',
                           **result,
                           table_names=table_names,
                           name=name,
                           description=description,
                           instruction=instruction,
                           example=example,
                           quest=quest,
                           task=task,
                           form=form)
Esempio n. 2
0
def finish(task_id):
    user = current_user
    task = user.tasks.filter_by(task_id=task_id).first()
    if task.status == 1:
        score, errors = ManagerTask.check(task_id=task_id, user=user)
        task_name = ManagerTask.get_task(task_id=task_id).name
        task.status = 2
        task.score = score
        task.finish_time = datetime.utcnow()
        db.session.commit()
        return render_template('task/finish.html',
                               title=task_name,
                               procent=task.score,
                               errors=errors)
    else:
        return redirect(url_for('task.task', task_id=task_id))
Esempio n. 3
0
from app.no_web.base_task import ManagerTask, Table


def check(user):
    result_count = 100
    result = list()
    table = user.get_table('Животные')
    count = user.tables.count()
    if table is None:
        result.append('Таблица с именем Животные не найдена!')
        result_count -= 50
    if count != 1:
        result.append(
            f'Количество таблиц не соответствует заданию {count} != 1')
        result_count -= 50
    return result_count, result


task = ManagerTask.add(
    name="""Удаление таблицы""",
    description=
    """Удаление таблицы довольно важная возможность. Когда вы начнёте реогранизовывать вашу базу данных, некоторые таблицы понадобиться удалить из - за того, что данные которые они хранили, перестали быть нужны, или же будут хранится в другой таблице.""",
    instruction=
    """Для удаления таблицы, выберете нужную таблицу и используйте команду del_table()""",
    example="""del_table()""",
    quest="""Удалите ВСЕ таблицы, кроме таблицы с названием Животные.""",
    check_func=check)
Esempio n. 4
0
    result = list()
    table = user.get_table('Животные')
    if table is None:
        result.append('Таблица с именем Животные не найдена!')
        result_count -= 100
    else:
        names = list()
        for col in table.cols:
            names.append(col.name)
        if len(colomn_names) != len(names):
            result.append(
                f'Количество столбцов не соотвествует заданию. {len(colomn_names)} != {len(names)}'
            )
            result_count -= 40
        for name in colomn_names:
            if names.count(name) == 0:
                result.append(f'Отсутствует столбец {name}')
                result_count -= 60 / len(colomn_names)
    return result_count, result


task = ManagerTask.add(
    name="""Добавление столбцов""",
    description=
    """Обычно таблицы представлены в виде столбцов, и строк. Поэтому в этом задании показано, как создаются столбцы.""",
    instruction=
    """Для добавления столбца используйте команду add_colomn('Название столбца 1', 'Название столбца 2')""",
    example="""add_colomn('Название столбца 1', 'Название столбца 2')""",
    quest=
    f"""Добавьте в таблицу Животные, такие столбцы: {', '.join(colomn_names)}""",
    check_func=check)
Esempio n. 5
0
from app.no_web.base_task import ManagerTask, Table

def check(user):
    result_count = 100
    result = list()
    table = user.table()
    if table is None or table.name != 'Животные':
        result.append('Таблица с именем Животные не выбрана!')
        result_count -= 100
    return result_count, result

task = ManagerTask.add(
    name = """Выбор таблицы""",
    description = """Для того, чтобы получить возможность узнать чем заполнена ваша таблица, требуется выбрать её.""",
    instruction = """Для выбора таблицы используйте команду select_table('Название таблицы')""",
    example = """select_table('Тестовая таблица')""",
    quest = """Выберите таблицу с названием 'Животные' """,
    check_func = check
)
Esempio n. 6
0
from app.no_web.base_task import ManagerTask, Table


def check(user):
    result_count = 100
    result = list()
    table = user.get_table('Животные')
    if table is None:
        result.append('Таблица с именем Животные не найдена!')
        result_count -= 100
    else:
        if table.rows.count() != 6:
            result.append(
                f'Количество строк не соотвествует заданию. {table.rows.count()} != 6'
            )
            result_count -= 100
    return result_count, result


task = ManagerTask.add(
    name="""Удаление строк""",
    description="""В этом задании показано, как удаляются строки.""",
    instruction=
    """Для удаления строки используйте команду del_row(номер строки)""",
    example="""del_row(3)""",
    quest=f"""Оставьте в таблице Животные 6 строк.""",
    check_func=check)
Esempio n. 7
0
        result_count -= 100
    else:
        if table.rows.count() != 6:
            result.append(f'Количество строк не соотвествует заданию. {table.rows.count()} != 6')
            result_count -= 50
        types = list()
        for row in table.rows:
            for e in row.items:types.append(e.item_type)
        r1 = 0
        r2 = 0
        r3 = 0
        if types.count(0) != 0: r1 = types.count(0) / len(types) * 100
        if types.count(1) != 0: r2 = types.count(1) / len(types) * 100
        if types.count(2) != 0: r3 = types.count(2) / len(types) * 100
        max = 0
        if r1 != r2 and r2 != r3 and r1 != r3:
            result.append(f'Процент строк цифрового типа = {r1}')
            result.append(f'Процент строк дробного типа = {r2}')
            result.append(f'Процент строк строкового типа = {r3}')
            result_count -= 50
        
    return result_count, result

task = ManagerTask.add(
    name = """Изменение значения строк""",
    description = """В этом задании показано, как можно изменить значение у строки.""",
    instruction = """Для изменения строки используйте команду set_row(номер строки, номер столбца, новое значение)""",
    example = """set_row(1, 1, 'New value')""",
    quest = f"""Сделайте половину строк с одним типом, а вторую половину с другим типом.""",
    check_func = check
)
Esempio n. 8
0
                result.append(f'Название столбца не исправлено = {col}')
                result_count -= 10
        errors = 0
        for i2, row in enumerate(table.rows):
            for i, e in enumerate(row.items.all()):
                if e.item() == '':
                    result.append(f'#{i2}|{i} - пустая ячейка')
                    errors += 1
                elif (i == 0 or i == 2) and e.item_type != 2:
                    errors += 1
                    result.append(
                        f'#{i2}|{i} - не является строкой = {e.item()}')
                else:
                    if (i == 1 or i == 3) and e.item_type != 0:
                        errors += 1
                        result.append(
                            f'#{i2}|{i} - не является числом = {e.item()}')
        result_count -= errors
        result.append(f'Всего ошибок в строках = {errors}')
    return result_count, result


task = ManagerTask.add(
    name="""Итоговое задание по пройденным функциям""",
    description=
    """Данное задание проверяет освоение работы с функциями для работы с таблицами.""",
    instruction="""Для получения таблицы введите команду create_test()""",
    example="""create_test()""",
    quest=
    f"""В этом задании требуется привести таблицу 'Тестовая таблица для задания 10' в порядок. Добавьте ещё несколько строк. Количество строк в таблице должно быть = 13.""",
    check_func=check)
Esempio n. 9
0
            )
            result_count -= 40
        types = list()
        for row in table.rows:
            for e in row.items:
                types.append(e.item_type)
        r1 = 0
        r2 = 0
        r3 = 0
        if types.count(0) != 0: r1 = types.count(0) / len(types) * 100
        if types.count(1) != 0: r2 = types.count(1) / len(types) * 100
        if types.count(2) != 0: r3 = types.count(2) / len(types) * 100
        max = 0
        if r1 > max: max = r1
        if r2 > max: max = r2
        if r3 > max: max = r3
        if max != 100:
            result.append(f'Процент строк одинакового типа = {max}')
            result_count -= (60 - 60 * (max / 100))

    return result_count, result


task = ManagerTask.add(
    name="""Добавление строк""",
    description="""В этом задании показано, как создаются строки.""",
    instruction=
    """Для добавления строки используйте команду add_row('строка', цифра и т.д.)""",
    example="""add_row('Страус', '1000 кг', 5, 'Зоопарк')""",
    quest=f"""Добавьте в таблицу Животные, 10 строк одного типа.""",
    check_func=check)
Esempio n. 10
0
    table = user.get_table('Животные')
    if table is None:
        result.append('Таблица с именем Животные не найдена!')
        result_count -= 100
    else:
        names = list()
        for col in table.cols:
            names.append(col.name)
        if len(colomn_names) != len(names):
            result.append(
                f'Количество столбцов не соотвествует заданию. {len(colomn_names)} != {len(names)}'
            )
            result_count -= 50
        if names.count('Вес') == 0:
            result.append(f'Отсутствует столбец Вес')
            result_count -= 25
        if names.count('Размер') != 0:
            result.append(f'Столбец Размер не был изменён')
            result_count -= 25
    return result_count, result


task = ManagerTask.add(
    name="""Изменение столбцов""",
    description=
    """В данном задании вы научитесь изменять название, уже существующих, столбцов.""",
    instruction=
    """Для изменения названия используйте команду rename_colomn(номер столбца, 'Название колонки')""",
    example="""rename_colomn(2, 'Название колонки')""",
    quest="""Измените столбец Размер на Вес в таблице Животные.""",
    check_func=check)
Esempio n. 11
0
from app.no_web.base_task import ManagerTask, Table


def check(user):
    result_count = 100
    result = list()
    table = user.get_table('Животные')
    count = user.tables.count()
    if table is None:
        result.append('Таблица с именем Животные не найдена!')
        result_count -= 40
    if count < 3:
        result.append(
            f'Количество таблиц не соответствует заданию {count} < 3')
        result_count -= (3 - count) * 20
    return result_count, result


task = ManagerTask.add(
    name="""Создание таблицы""",
    description="""Таблица - это набор связанных данных.""",
    instruction=
    """Для создания таблицы используйте команду create_table('Название таблицы')""",
    example="""create_table('Тестовая таблица')""",
    quest=
    """Создайте таблицу с названием Животные. Создайте ещё, как минимум 2 таблицы с произвольным названием.""",
    check_func=check)