Пример #1
0
def app_logged_in(subj_name):
    user = get_current_user()
    if user is None:
        return redirect(url_for("index"))
    subject_list = list(Subject.find({"hidden": False}))
    if subj_name not in [sub["name"] for sub in subject_list]:
        abort(404)
    exclude = request.args.get("exclude", "").split()
    subject = Subject.find_one({"name": subj_name})
    task_types = TaskType.find({"subject": subject.id})
    tasks = []
    for tt in task_types:
        if tt.number in exclude:
            continue
        rel_tasks = Task.find({"task_type": tt.id})
        task = choice(list(rel_tasks))
        session["task" + str(tt.number)] = str(task.id)
        text = None
        if task.text.pk is not None:
            text = task.text.fetch().body
        tasks.append({
            "number": tt.number,
            "description": eval('"' + task.description + '"'),
            "text": text,
            "options": task.options,
        })
    return render(
        "practice.html",
        title="Тест",
        header_label="Тест в формате ЕГЭ",
        current_subj=subj_name,
        current_mode="practice",
        subject_list=subject_list,
        tasks=tasks,
    )
Пример #2
0
def task_practice(subj_name, task_id):
    if get_current_user() is None:
        return redirect(url_for("index"))
    if subj_name != "russian":
        abort(404)
    user = get_current_user()
    subject = Subject.find_one({"name": subj_name})
    subject_list = list(Subject.find({"hidden": False}))
    task_type = TaskType.find_one({
        "subject": subject.id,
        "number": str(task_id)
    })
    tasks = []
    raw_tasks = Task.find({"task_type": task_type.id})
    for task in raw_tasks:
        tl = TaskLink.find_one({"task": task.id, "user": user.id})
        text = None
        if task.text.pk is not None:
            text = task.text.fetch().body
        tasks.append({
            "id": str(task.id),
            "number": task_type.number,
            "description": eval('"' + task.description + '"'),
            "text": str(text),
            "options": task.options,
            "done": tl.done if tl else False,
            "answers": task.answers,
            "explanation": task.explanation,
        })
    return render(
        "task-practice.html",
        title="Задания",
        header_label="Практика задания",
        current_subj=subj_name,
        subject_list=subject_list,
        tasks=tasks,
    )