Esempio n. 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,
    )
Esempio n. 2
0
def app_logged_in(subj_name):
    if get_current_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)
    subject = Subject.find_one({"name": subj_name})
    tasks_list = []
    raw_tasks = TaskType.find({"subject": subject.id})
    for t in raw_tasks:
        tasks_list.append({
            "number": int(t.number),
            "compete_percentage": 0,
            "points": t.points,
            "status": get_status_on_task(t),
        })
    return render(
        "tasks.html",
        title="Задания",
        header_label="Все задания первой части",
        current_subj=subj_name,
        current_mode="tasks",
        subject_list=subject_list,
        tasks_list=tasks_list,
        task_list_length=len(tasks_list),
    )
Esempio n. 3
0
def admin_main():
    user = get_current_user()
    if user is None:
        return render("access-denied.html")
    if not user.is_admin:
        return render("access-denied.html")
    subjects = Subject.find({"hidden": False})
    texts_list = [{"id": "5e4066a91c9d440000785ec1", "low": "Нет текста"}]
    texts = Text.find()
    for text in texts:
        if str(text.id) == "5e4066a91c9d440000785ec1":
            continue
        low = text.body
        if len(low) > 30:
            low = low[:30]
        texts_list.append({"id": str(text.id), "low": low})
    if request.method == "GET":
        return render("add-task.html", subjects=subjects, texts_list=texts_list)
    subject = Subject.find_one({"label": request.form["subject"]})
    task_type = TaskType.find_one(
        {"number": request.form["task_type"], "subject": subject.id}
    )
    task_type.count_of_tasks += 1
    task_type.commit()
    description = request.form["description"]
    var1 = request.form["var1"]
    var2 = request.form["var2"]
    var3 = request.form["var3"]
    var4 = request.form["var4"]
    var5 = request.form["var5"]
    options = []
    if var1:
        options.append(var1)
    if var2:
        options.append(var2)
    if var3:
        options.append(var3)
    if var4:
        options.append(var4)
    if var5:
        options.append(var5)
    answers = request.form["answers"].replace(" ", "").split(",")
    explanation = request.form["explanation"]
    text = request.form["text"]
    task = Task(
        task_type=task_type,
        description=description,
        options=options,
        answers=answers,
        explanation=explanation,
        text=ObjectId(str(text)),
    )
    task.commit()
    return render("add-task.html", subjects=subjects, ok=True, texts_list=texts_list)
Esempio n. 4
0
def my_function(apps, schema_editor):
    data = []
    print(11111111111111111)
    with open('src/fakerdata/subject.json') as f:
        seats = json.load(f)
        print()
        for item in seats:
            print(item)
            seat = Subject(name=item['name'], code=item['code'])
            data.append(seat)
        Subject.objects.bulk_create(data)
Esempio n. 5
0
def get_percentage():
    user = get_current_user()
    if user is None:
        return "No user context"
    subj_name = request.form["subj_name"]
    number = request.form["number"]
    subject = Subject.find_one({"name": subj_name})
    tasktype = TaskType.find_one({
        "subject": subject.id,
        "number": str(number)
    })
    return str(count_percentage_on_task(tasktype))
Esempio n. 6
0
def task_theory(subj_name, task_id):
    user = get_current_user()
    if user is None:
        return redirect(url_for("index"))
    if subj_name != "russian":
        abort(404)
    subject_list = list(Subject.find({"hidden": False}))
    subject = Subject.find_one({"name": subj_name})
    task_type = TaskType.find_one({
        "subject": subject.id,
        "number": str(task_id)
    })
    return render(
        "task-theory.html",
        title="Задание",
        header_label="Теория по заданию",
        current_subj=subj_name,
        subject_list=subject_list,
        task_id=task_id,
        cods=list(task_type.cods),
        task_description=task_type.description,
    )
Esempio n. 7
0
def results(subj_name):
    if flask.request.method == "GET":
        abort(404)
    user = get_current_user()
    if user is None:
        return redirect(url_for("index"))
    tasks = []
    right = 0
    all = 0
    test_time = int(request.form["time_counter"])
    test_time = time.strftime("%H:%M:%S", time.gmtime(test_time))
    subject_list = list(Subject.find({"hidden": False}))
    first_points = 0
    for q in request.form:
        if q != "time_counter":
            number = q[4:]
            answer = request.form[q]
            all += 1
            task = Task.find_one({"id": ObjectId(session[q])})
            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({
                "user_answer": answer,
                "number": number,
                "description": eval('"' + task.description + '"'),
                "text": text,
                "options": task.options,
                "done": tl.done if tl else False,
                "answers": task.answers,
                "explanation": task.explanation,
            })
            if answer in task.answers:
                first_points += points[subj_name]["first"][int(number)]
                right += 1
    return render(
        "practice-results.html",
        title="Ответы на тест",
        header_label="Тест в формате ЕГЭ",
        current_subj=subj_name,
        current_mode="practice",
        subject_list=subject_list,
        tasks=tasks,
        right=right,
        all=all,
        time=test_time,
        first_points=first_points,
        second_points=points[subj_name]["second"][first_points],
    )
Esempio n. 8
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,
    )
Esempio n. 9
0
def app_logged_in(subj_name):
    if get_current_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)
    return render(
        "learn.html",
        title="Теория",
        header_label="Вся теория по кодификаторам",
        current_subj=subj_name,
        current_mode="learn",
        subject_list=subject_list,
        cod_amount=11,
        cods=subject["cods"],
    )
Esempio n. 10
0
def change_status():
    user = get_current_user()
    if user is None:
        return "No user context"
    subject_name = request.form["subject_name"]
    task_number = str(request.form["task_number"])
    new_status = int(request.form["new_status"])
    subject = Subject.find_one({"name": subject_name})
    tasktype = TaskType.find_one({
        "subject": subject.id,
        "number": task_number
    })
    tasktypelink = TaskTypeLink.find_one({
        "user": user.id,
        "task_type": tasktype.id
    })
    if not tasktypelink:
        tasktypelink = TaskTypeLink(user=user.id,
                                    task_type=tasktype.id,
                                    status=new_status)
    else:
        tasktypelink.status = new_status
    tasktypelink.commit()
    return "Query ok"
Esempio n. 11
0
def subj_main(subj_name):
    subject_list = list(Subject.find({"hidden": False}))
    if subj_name not in [sub["name"] for sub in subject_list]:
        abort(404)
    return redirect(url_for("tasks.app_logged_in", subj_name=subj_name))
Esempio n. 12
0
    def data_prepare(self):
        if not self.app.debug or self.app.config['ENV_NAME'] == 'prd':
            # only running in debug mode and not in prd environment
            return

        with session_scope(db) as session:
            pid = os.getpid()
            r = session.query(SysControl).filter(
                SysControl.current_pid == pid).one_or_none()
            if r:
                # one process only run once
                return

            c_ap = Curriculum(full_name='AP', updated_by=str(pid), state=98)
            session.add(c_ap)
            c_ib = Curriculum(full_name='IB', updated_by=str(pid), state=98)
            session.add(c_ib)
            session.flush()
            self.logger.debug(c_ap)
            self.logger.debug(c_ib)
            sc = SubjectCategory(subject_category='history',
                                 updated_by=str(pid),
                                 state=98)
            session.add(sc)
            session.flush()
            self.logger.debug(sc)
            s_ap_history = Subject(subject_name='AP_history_grade_9',
                                   curriculum_id=c_ap.id,
                                   state=98,
                                   subject_category_id=sc.id,
                                   updated_by=str(pid))
            session.add(s_ap_history)
            s_ib_history = Subject(subject_name='IB_history_grade_9',
                                   curriculum_id=c_ib.id,
                                   state=98,
                                   subject_category_id=sc.id,
                                   updated_by=str(pid))
            session.add(s_ib_history)
            session.flush()
            self.logger.debug(s_ap_history)
            self.logger.debug(s_ib_history)
            teacher_name = random_username()
            self.register(teacher_name, 'Teacher')
            t = session.query(Teacher).filter(
                Teacher.username == teacher_name).one_or_none()
            self.logger.debug(t)
            cs_ap_history = Course(course_name='T1_AP_history_grade_9',
                                   course_type=1,
                                   class_type=1,
                                   classes_number=80,
                                   state=98,
                                   price=900000,
                                   primary_teacher_id=t.id,
                                   subject_id=s_ap_history.id,
                                   updated_by=str(pid))
            session.add(cs_ap_history)
            cs_ib_history = Course(course_name='T1_IB_history_grade_9',
                                   course_type=2,
                                   class_type=1,
                                   classes_number=60,
                                   state=98,
                                   price=800000,
                                   primary_teacher_id=t.id,
                                   subject_id=s_ib_history.id,
                                   updated_by=str(pid))
            session.add(cs_ib_history)
            session.flush()
            self.logger.debug(cs_ap_history)
            self.logger.debug(cs_ib_history)
            cs_s_ap = CourseSchedule(start=datetime.now(),
                                     end=(datetime.now() + timedelta(days=90)),
                                     state=98,
                                     course_id=cs_ap_history.id,
                                     updated_by=str(pid))
            session.add(cs_s_ap)
            cs_s_ib = CourseSchedule(start=datetime.now(),
                                     end=(datetime.now() + timedelta(days=90)),
                                     state=98,
                                     course_id=cs_ib_history.id,
                                     updated_by=str(pid))
            session.add(cs_s_ib)
            session.flush()
            self.logger.debug(cs_s_ap)
            self.logger.debug(cs_s_ib)
            # add channel
            channel = Channel(channel_name=str(pid),
                              state=1,
                              updated_by=str(pid))
            session.add(channel)
            session.flush()
            # add order
            order = Order(updated_by=str(pid),
                          channel_id=channel.id,
                          student_id=self.test_student_id,
                          course_id=cs_ib_history.id,
                          order_type=1,
                          order_desc='',
                          state=1,
                          payment_state=1,
                          amount=1000000,
                          discount=10,
                          promotion='')
            session.add(order)
            session.flush()
            # finally add the control record of this pid
            sys_control = SysControl(current_pid=pid)
            session.add(sys_control)
            session.flush()
            self.logger.debug(sys_control)