예제 #1
0
def list_homework(course_id=None):
    error = None
    gc = Course.get_cours(course_id)
    if gc is None or current_user.id != gc.user_id:
        return redirect(url_for('cur_course', course_id=int(course_id)))
    get_all_homework = g.db.query(
        HomeWork.id,
        HomeWork.wait,
        HomeWork.lessons_id,
        HomeWork.courses_id,
        HomeWork.text,
        Lesson.name,
        Lesson.number,
        User.login,
    ).join(User, User.id == HomeWork.user_id).join(
        Lesson, Lesson.id == HomeWork.lessons_id).filter(
            and_(
                HomeWork.courses_id == gc.id,
                HomeWork.wait == 1,
            )).all()
    if request.method == 'POST':
        if request.form.get('accept'):
            accept = request.form.get('accept')
            change_homework = g.db.query(HomeWork).filter(
                HomeWork.id == int(accept)).first()
            change_homework.done = 1
            change_homework.wait = 0
            new_notice = Notice(
                notice_to_user=User.get_user(change_homework.user_id),
                text='Вы успено прошли урок %s курса %s' %
                (Lesson.get_lesson(change_homework.lessons_id).name,
                 Course.get_cours(change_homework.courses_id).name),
                read=False)
            g.db.add(new_notice)
        if request.form.get('digress'):
            digress = request.form.get('digress')
            change_homework = g.db.query(HomeWork).filter(
                HomeWork.id == int(digress)).first()
            change_homework.done = 0
            change_homework.wait = 0
            new_notice = Notice(
                notice_to_user=User.get_user(change_homework.user_id),
                text='Извините, но вы не прошли урок %s курса %s' %
                (Lesson.get_lesson(change_homework.lessons_id).name,
                 Course.get_cours(change_homework.courses_id).name),
                read=False)
            g.db.add(new_notice)
        g.db.commit()
        return redirect(url_for('list_homework', course_id=int(course_id)))
    return render_template('list_homework.html',
                           error=error,
                           get_all_homework=get_all_homework)
예제 #2
0
def add_blog(course_id=None):
    error = None
    subject = None
    text = None
    cur_course = Course.get_cours(course_id)
    if cur_course is None or cur_course.user_id != current_user.id or not current_user.admin:
        return redirect(404)
    if request.method == 'POST':
        subject = request.form.get('subject')
        text = request.form.get('text')
        if subject is None or subject == '':
            error = 'Не введена тема'
            return render_template('add_blog.html',
                                   error=error,
                                   subject=subject or '',
                                   text=text or '')
        if text is None or text == '':
            error = 'Не введено содержимое'
            return render_template('add_blog.html',
                                   error=error,
                                   subject=subject or '',
                                   text=text or '')
        new_blog = Blog(subject=subject,
                        text=text,
                        course_id_blog=cur_course,
                        user_id_blog=current_user)
        g.db.add(new_blog)
        g.db.commit()
        return redirect(url_for('blog', blog_id=new_blog.id))
    return render_template('add_blog.html',
                           error=error,
                           subject=subject or '',
                           text=text or '')
예제 #3
0
def cur_course(course_id=None):
    list_lesson = request.args.get('list')
    error = None
    c_course = Course.get_cours(course_id)
    if not c_course:
        return redirect(url_for('course'))
    all_blog = g.db.query(Blog).filter(
        and_(Blog.course_id == c_course.id, Blog.ban == 0)).all()
    all_lesson_cur_course = g.db.query(Lesson).filter(
        and_(Lesson.cours_id == c_course.id,
             Lesson.ban == 0)).order_by(asc(Lesson.number)).all()
    if list_lesson:
        new_list = list_lesson.split(',')
        for num in range(len(new_list)):
            gl = g.db.query(Lesson).filter(
                and_(Lesson.id == int(new_list[num]),
                     Lesson.cours_id == int(course_id))).first()
            gl.number = num + 1
            g.db.commit()
    return render_template('cur_course.html',
                           error=error,
                           c_course=c_course,
                           all_lesson_cur_course=all_lesson_cur_course,
                           check=check_sub_curs(c_course.id),
                           all_blog=all_blog)
예제 #4
0
def list_students_course(course_id=None):
    if Course.get_cours(
            course_id) is None or current_user.id != Course.get_cours(
                course_id).user_id:
        return redirect(url_for('course'))
    get_all_user_in_list = g.db.query(
        List.id,
        List.courses_id,
        List.ban,
        List.user_id,
        User.login,
        User.email,
    ).join(User, User.id == List.user_id).filter(
        and_(List.courses_id == Course.get_cours(course_id).id,
             List.ban == 0)).all()
    return render_template('list_students_course.html',
                           get_all_user_in_list=get_all_user_in_list,
                           get_course=Course.get_cours(course_id))
예제 #5
0
def list_students_lesson(course_id=None, lesson_number=None):
    course = Course.get_cours(course_id)
    if not current_user.admin and current_user.id != course.user_id:
        return redirect(url_for('cur_course', course_id=int(course_id)))
    get_all_user_in_list = g.db.query(
        List.id, List.courses_id, List.ban, List.user_id, User.login,
        User.email).join(User, User.id == List.user_id).filter(
            and_(List.courses_id == course.id,
                 List.lessons_number == int(lesson_number),
                 List.ban == 0)).all()
    get_lesson = g.db.query(Lesson).filter(
        and_(Lesson.cours_id == course.id,
             Lesson.number == int(lesson_number))).first()
    return render_template('list_student_lesson.html',
                           get_all_user_in_list=get_all_user_in_list,
                           get_course=course,
                           get_lesson=get_lesson)
예제 #6
0
def check_homework_done(course_id, lesson_number):
    if current_user.admin or Course.get_cours(
            course_id).user_id == current_user.id:
        return True
    else:
        check_lesson = g.db.query(Lesson).filter(
            and_(Lesson.cours_id == int(course_id),
                 Lesson.number == int(lesson_number) - 1,
                 Lesson.ban == 0)).first()
        if check_lesson is None:
            return True
        else:
            if check_homework_wait(check_lesson.id, course_id) is None:
                return False
            if check_homework_wait(check_lesson.id, course_id).done:
                return True
            else:
                return False
예제 #7
0
def add_lesson(course_id=None):
    error = None
    name = None
    homework = None
    questions_result = None
    persent_for_test = None
    homework_type = None
    content = None
    test_in_day = None
    gc = Course.get_cours(course_id)
    if gc is None or gc.user_id != current_user.id:
        return redirect(url_for('course'))
    if request.method == 'POST':
        name = request.form.get('name')
        content = request.form.get('content')
        homework_type = request.form.get('homework_type')
        if name == '' or name is None:
            error = 'Название не введено'
            return render_template('add_lesson.html',
                                   error=error,
                                   name=name or '',
                                   test_in_day=test_in_day or '',
                                   persent_for_test=persent_for_test or '',
                                   homework_type=homework_type or '',
                                   content=content or '')
        if 5 > len(name) > 100:
            error = 'Название урока должно быть от 5 до 100 символов'
            return render_template('add_lesson.html',
                                   error=error,
                                   name=name or '',
                                   test_in_day=test_in_day or '',
                                   persent_for_test=persent_for_test or '',
                                   homework_type=homework_type or '',
                                   content=content or '')
        if content == '' or content is None:
            error = 'Содержимое не введено'
            return render_template('add_lesson.html',
                                   error=error,
                                   name=name or '',
                                   test_in_day=test_in_day or '',
                                   persent_for_test=persent_for_test or '',
                                   homework_type=homework_type or '',
                                   content=content or '')
        if homework_type == 'homework':
            homework = request.form.get('homework')
            if homework == '' or homework is None:
                error = 'Домашнее задание не введено'
                return render_template('add_lesson.html',
                                       error=error,
                                       name=name or '',
                                       test_in_day=test_in_day or '',
                                       persent_for_test=persent_for_test or '',
                                       homework_type=homework_type or '',
                                       content=content or '')
        elif homework_type == 'test':
            test_in_day = request.form.get('test_in_day')
            persent_for_test = request.form.get('persent_for_test')
            questions_result = []
            quest = request.form.getlist("quest")
            for i in range(len(quest)):
                questions_result.append(
                    dict(quest=quest[i],
                         answers=request.form.getlist("answer_%s" % i),
                         right=request.form.get("right_%s" % i)))
            if quest == '' or quest is None:
                error = 'Тест не введён'
                return render_template('add_lesson.html',
                                       error=error,
                                       name=name or '',
                                       test_in_day=test_in_day or '',
                                       persent_for_test=persent_for_test or '',
                                       homework_type=homework_type or '',
                                       content=content or '')
            if re.search(r'[0-9]{1,3}$', test_in_day) is None:
                error = 'Кол-во попыток в день не введено'
                return render_template('add_lesson.html',
                                       error=error,
                                       name=name or '',
                                       test_in_day=test_in_day or '',
                                       persent_for_test=persent_for_test or '',
                                       homework_type=homework_type or '',
                                       content=content or '')
            if re.search(r'[0-9]{1,3}$', persent_for_test) is None:
                error = 'Процент для теста не введён или введён не верно'
                return render_template('add_lesson.html',
                                       error=error,
                                       name=name or '',
                                       test_in_day=test_in_day or '',
                                       persent_for_test=persent_for_test or '',
                                       homework_type=homework_type or '',
                                       content=content or '')
        elif homework_type == 'free':
            error = None
        else:
            error = 'Тип выбран не верно'
            return render_template('add_lesson.html',
                                   error=error,
                                   name=name or '',
                                   test_in_day=test_in_day or '',
                                   persent_for_test=persent_for_test or '',
                                   homework_type=homework_type or '',
                                   content=content or '')
        get_all_lesson_in_course = g.db.query(Lesson.number).filter(
            and_(Lesson.cours_id == int(course_id), Lesson.ban == 0)).all()
        if get_all_lesson_in_course == [] or get_all_lesson_in_course is None:
            next_num = 1
        else:
            next_num = max(get_all_lesson_in_course).number + 1
        new_lesson = Lesson(name=name,
                            number=next_num,
                            content=content,
                            homework_type=homework_type,
                            homework=homework,
                            test=questions_result,
                            persent_for_test=persent_for_test,
                            test_in_day=test_in_day,
                            lessons_course_id=gc)
        g.db.add(new_lesson)
        g.db.commit()
        return redirect(
            url_for('lesson',
                    course_id=int(course_id),
                    lesson_id=new_lesson.id))
    return render_template('add_lesson.html',
                           error=error,
                           name=name or '',
                           persent_for_test=persent_for_test or '',
                           homework_type=homework_type or '',
                           content=content or '')
예제 #8
0
def edit_lesson(course_id=None, lesson_id=None):
    error = None
    gt = Course.get_cours(course_id)
    if gt is None:
        return redirect(url_for('course'))
    gl = Lesson.get_lesson(lesson_id)
    print(gl.homework_type)
    if gl is None:
        return redirect(url_for('cur_course', course_id=int(course_id)))
    if gt.user_id != current_user.id or not current_user.admin:
        return redirect(url_for('cur_course', course_id=int(course_id)))
    if request.method == 'POST':
        if request.form.get('del'):
            gl.ban = True
            g.db.commit()
            number = 1
            get_all_less = g.db.query(Lesson).filter(
                and_(Lesson.cours_id == gt.id, Lesson.ban == False)).all()
            for gal in get_all_less:
                get_all_less[gal].number = number
                number += 1
            g.db.commit()
            return redirect(url_for('cur_course', course_id=int(course_id)))
        name = request.form.get('name')
        edit_content = request.form.get('edit_content')
        # homework_type = request.form.get('homework_type')
        if name != gl.name and name != '' and name is not None:
            gl.name = name
        if edit_content != gl.content and edit_content != '' and edit_content is not None:
            gl.content = edit_content
        # if homework_type != gl.homework_type and homework_type != '' and homework_type is not None:
        #     gl.homework_type = homework_type
        # print(homework_type)
        if gl.homework_type == 'homework':
            edit_homework = request.form.get('edit_homework')
            if edit_homework != gl.homework and edit_homework != '' and edit_homework is not None:
                gl.homework = edit_homework
        if gl.homework_type == 'test':
            test_in_day = request.form.get('test_in_day')
            if re.search(r'[0-9]{1,3}$', test_in_day) is None:
                error = 'Пожалуйста введите попытки для теста'
                return render_template('edit_lesson.html',
                                       lesson=gl,
                                       name=gl.name or '',
                                       edit_content=gl.content or '',
                                       homework_type=gl.homework_type or '',
                                       edit_homework=gl.homework or '',
                                       error=error)
            persent_for_test = request.form.get('persent_for_test')
            if re.search(r'[0-9]{1,3}$', persent_for_test) is None:
                error = 'Пожалуйста введите процент прохождения теста'
                return render_template('edit_lesson.html',
                                       lesson=gl,
                                       name=gl.name or '',
                                       edit_content=gl.content or '',
                                       homework_type=gl.homework_type or '',
                                       edit_homework=gl.homework or '',
                                       error=error)
            questions_result = []
            quest = request.form.getlist("quest")
            for i in range(len(quest)):
                questions_result.append(
                    dict(quest=quest[i],
                         answers=request.form.getlist("answer_%s" % i),
                         right=request.form.get("right_%s" % i)))
            gl.test = questions_result
        g.db.commit()
    return render_template('edit_lesson.html',
                           lesson=gl,
                           name=gl.name or '',
                           edit_content=gl.content or '',
                           homework_type=gl.homework_type or '',
                           edit_homework=gl.homework or '',
                           error=error)
예제 #9
0
def lesson(course_id=None, lesson_id=None):
    homework = ''
    error = None
    gc = Course.get_cours(course_id)
    if gc is None:
        return redirect(url_for('course'))
    gl = Lesson.get_lesson(lesson_id)
    if gl is None or not check_sub_curs(
            int(course_id)) or not check_homework_done(int(course_id),
                                                       int(gl.number)):
        return redirect(url_for('cur_course', course_id=course_id))
    check_test = g.db.query(TestInDay).filter(
        and_(TestInDay.user_id == current_user.id,
             TestInDay.lesson_id == gl.id, TestInDay.ban == 0)).first()
    if request.method == 'POST':
        change_list = g.db.query(List).filter(
            and_(List.user_id == current_user.id,
                 List.courses_id == gc.id)).first()
        if gl.homework_type == 'homework':
            homework = request.form.get('homework')
            if homework == '' or homework is None:
                error = 'Вы не ввели домашнее задание'
                return render_template('lesson.html',
                                       lesson=gl,
                                       course=gc,
                                       homework=homework,
                                       error=error,
                                       chcl=check_homework_wait(
                                           lesson_id, course_id))
            else:
                change_list.lessons_number = gl.number + 1
                new_homework = HomeWork(homework_num=gl,
                                        course_user=gc,
                                        wait=True,
                                        text=homework,
                                        done=False,
                                        user_homework=current_user)
                new_notice = Notice(
                    notice_to_user=User.get_user(gc.user_id),
                    text='Пришла домашня работа на проверку от %s' %
                    current_user.login,
                    hypertext='http://%s/list_homework/%s' %
                    (school.config['HOST_AND_PORT'], gc.id),
                    read=False)
                g.db.add(new_homework, new_notice)
                g.db.commit()
                return redirect(url_for('cur_course',
                                        course_id=int(course_id)))
        if gl.homework_type == 'free':
            change_list.lessons_number = gl.number + 1
            new_homework = HomeWork(homework_num=gl,
                                    course_user=gc,
                                    wait=False,
                                    done=True,
                                    user_homework=current_user)
            g.db.add(new_homework)
            g.db.commit()
            return redirect(url_for('cur_course', course_id=int(course_id)))
        if gl.homework_type == 'test':
            if check_test is not None:
                if check_test.data[0] < datetime.datetime.now(
                ) < check_test.data[1]:
                    if check_test.count == gl.test_in_day:
                        error = "У вас закончились попытки, приходите завтра"
                        return render_template('lesson.html',
                                               lesson=gl,
                                               course=gc,
                                               error=error,
                                               chcl=check_homework_wait(
                                                   lesson_id, course_id))
                if check_test.data[1] < datetime.datetime.now():
                    check_test.ban = True
                    g.db.commit()
                    check_test = None
            change_list.lessons_number = gl.number + 1
            right_answer_user = 0
            for number in range(len(gl.test)):
                if int(request.form.get('right_%s' % number)) == int(
                        gl.test[number]['right']):
                    right_answer_user += 1
            persent_right_answer_user = (right_answer_user /
                                         len(gl.test)) * 100
            if gl.persent_for_test <= persent_right_answer_user:
                if check_test is not None:
                    check_test.ban = True
                new_homework = HomeWork(homework_num=gl,
                                        course_user=gc,
                                        wait=False,
                                        done=True,
                                        user_homework=current_user)
                g.db.add(new_homework)
                g.db.commit()
                return redirect(url_for('cur_course',
                                        course_id=int(course_id)))
            else:
                if check_test is None:
                    new_testinday = TestInDay(user_test_in_day=current_user,
                                              test_lesson=gl,
                                              count=1,
                                              data=[
                                                  datetime.datetime.now(),
                                                  datetime.datetime.now() +
                                                  datetime.timedelta(days=1)
                                              ])
                    g.db.add(new_testinday)
                    g.db.commit()
                    error = "Вы не прошли тест. Попробуйте пройти тест ещё раз. " \
                            "Осталось попыток(в день): %s" % (gl.test_in_day - 1)
                    return render_template('lesson.html',
                                           course=gc,
                                           lesson=gl,
                                           error=error,
                                           chcl=check_homework_wait(
                                               lesson_id, course_id))
                else:
                    check_test.count = check_test.count + 1
                    g.db.commit()
                    error = "Вы не прошли тест. Попробуйте пройти тест ещё раз. " \
                            "Осталось попыток(в день): %s" % (gl.test_in_day - check_test.count)
                    return render_template('lesson.html',
                                           course=gc,
                                           lesson=gl,
                                           error=error,
                                           chcl=check_homework_wait(
                                               lesson_id, course_id))
    return render_template('lesson.html',
                           course=gc,
                           lesson=gl,
                           homework=homework,
                           error=error,
                           chcl=check_homework_wait(lesson_id, course_id))
예제 #10
0
def add_course():
    error = None
    name = ''
    text = ''
    price = ''
    if not check_rights('add_course'):
        return redirect(url_for('subscript'))
    else:
        all_ways = g.db.query(Direction).all()
        if request.method == 'POST':
            name = request.form.get('name')
            text = request.form.get('text')
            direction_name = request.form.get('direction_name')
            price = request.form.get('price')
            infinity = request.form.get('infinity')
            if 5 > len(name) > 100:
                error = 'Название курса не должно быть меньше 5 и более 100 символов'
                return render_template('add_course.html',
                                       error=error,
                                       name=name,
                                       text=text,
                                       price=price,
                                       all_ways=all_ways)
            if text == '' or text is None:
                error = 'Описание курса не введено'
                return render_template('add_course.html',
                                       error=error,
                                       name=name,
                                       text=text,
                                       price=price,
                                       all_ways=all_ways)
            if direction_name == '' or direction_name is None:
                error = 'Напаравление не выбранно'
                return render_template('add_course.html',
                                       error=error,
                                       name=name,
                                       text=text,
                                       price=price,
                                       all_ways=all_ways)
            if re.search(r'^[0-9]{1,10}$', price) is None:
                error = 'Цена была введена не коректно'
                return render_template('add_course.html',
                                       error=error,
                                       name=name,
                                       text=text,
                                       price=price,
                                       all_ways=all_ways)
            if infinity == '1':
                infinity = True
            else:
                infinity = False
            new_course = Course(name=name,
                                text=text,
                                direction_name=direction_name,
                                price=int(price),
                                infinity=infinity,
                                user_id_course=current_user)
            g.db.add(new_course)
            g.db.commit()
            dic_key = copy.copy(current_user.sub_course) or {}
            dic_key[new_course.id] = [
                datetime.datetime.now(),
                (datetime.datetime.now() + datetime.timedelta(days=999999))
            ]
            current_user.sub_course = dic_key
            set_f = copy.copy(current_user.follow)
            set_f.append(int(new_course.id))
            current_user.follow = set_f
            g.db.commit()
            return redirect(url_for('cur_course', course_id=new_course.id))
    return render_template('add_course.html',
                           error=error,
                           name=name,
                           text=text,
                           price=price,
                           all_ways=all_ways)
예제 #11
0
def buy_course(id_course=None):
    error = None
    month = None
    cur_buy_course = Course.get_cours(id_course)
    if cur_buy_course is None:
        return redirect(url_for('course'))
    else:
        if request.method == 'POST':
            # prime peremen's
            check_user_sub_course = current_user.sub_course.get(
                cur_buy_course.id)
            setting = g.db.query(Setting).filter(Setting.id == 1).first()
            set_f = copy.copy(current_user.follow)
            # admin = g.db.query(User).filter(User.id == 1).first()
            # admin_course = g.db.query(User).filter(and_(User.id == cur_buy_course.user_id, User.ban == 0)).first()
            if cur_buy_course.infinity:
                if current_user.user_balance() < cur_buy_course.price:
                    error = 'У вас не достаточно средств'
                    return render_template('buy_course.html',
                                           error=error,
                                           cur_buy_course=cur_buy_course,
                                           month=month or '')
                if check_user_sub_course is None:
                    dic_key = copy.copy(current_user.sub_course) or {}
                    dic_key[cur_buy_course.id] = [
                        datetime.datetime.now(),
                        (datetime.datetime.now() +
                         datetime.timedelta(days=999999))
                    ]
                    current_user.sub_course = dic_key
                    new_trans = Transaction(
                        transect_user_id=current_user,
                        text='Приобретена пожизненая подписка %s' %
                        cur_buy_course.name,
                        price=-cur_buy_course.price)
                    new_user_to_list = List(user_to_list=current_user,
                                            lessons_number=1,
                                            user_to_course_list=cur_buy_course)
                    new_trans_admin = Transaction(
                        transect_user_id=User.get_user(1),
                        text='Коммисия с приобритения курса %s' %
                        cur_buy_course.name,
                        price=cur_buy_course.price *
                        (setting.commission / 100))
                    new_trans_direc = Transaction(
                        transect_user_id=User.get_user(cur_buy_course.user_id),
                        text='%s купил курс %s на всегда' %
                        (current_user.login, cur_buy_course.name),
                        price=cur_buy_course.price -
                        (cur_buy_course.price * (setting.commission / 100)))
                    if set_f.count(int(cur_buy_course.id)) == 0:
                        set_f.append(int(cur_buy_course.id))
                        current_user.follow = set_f
                    g.db.add(new_trans, new_user_to_list)
                    g.db.add(new_trans_admin, new_trans_direc)
                    g.db.commit()
                    return redirect(
                        url_for('cur_course', course_id=cur_buy_course.id))
                else:
                    error = 'У вас уже куплен этот пожизненый курс'
                    return render_template('buy_course.html',
                                           error=error,
                                           cur_buy_course=cur_buy_course,
                                           month=month or '')
            else:
                month = request.form.get('month')
                if re.search(r'^[0-9]{1,3}$', month) is None:
                    error = 'Количество месяцев введено не верно'
                    return render_template('buy_course.html',
                                           error=error,
                                           cur_buy_course=cur_buy_course,
                                           month=month or '')
                day = int(month) * 30.5
                price_mount = cur_buy_course.price * int(month)
                if current_user.user_balance() < price_mount:
                    error = 'У вас не достаточно средств'
                    return render_template('buy_course.html',
                                           error=error,
                                           cur_buy_course=cur_buy_course,
                                           month=month or '')
                if check_user_sub_course is None:
                    dic_key = copy.copy(current_user.sub_course)
                    dic_key[cur_buy_course.id] = [
                        datetime.datetime.now(),
                        (datetime.datetime.now() +
                         datetime.timedelta(days=day))
                    ]
                    current_user.sub_course = dic_key
                    new_trans = Transaction(
                        transect_user_id=current_user,
                        text='Приобрёл подписка %s на %s месяц' %
                        (cur_buy_course.name, month),
                        price=-price_mount)
                    new_user_to_list = List(user_to_list=current_user,
                                            lessons_number=1,
                                            user_to_course_list=cur_buy_course)
                    new_trans_director = Transaction(
                        transect_user_id=User.get_user(cur_buy_course.user_id),
                        text='%s приобрёл подписку на курс %s на %s' %
                        (current_user.login, cur_buy_course.name, month),
                        price=price_mount - (price_mount *
                                             (setting.commission / 100)))
                    new_trans_admin = Transaction(
                        transect_user_id=User.get_user(1),
                        text='Процент от курса %s ' % cur_buy_course.name,
                        price=price_mount * (setting.commission / 100))
                    if set_f.count(int(cur_buy_course.id)) == 0:
                        set_f.append(int(cur_buy_course.id))
                        current_user.follow = set_f
                    g.db.add(new_trans, new_trans_director)
                    g.db.add(new_trans_admin, new_user_to_list)
                    g.db.commit()
                    return redirect(
                        url_for('cur_course', course_id=cur_buy_course.id))
                else:
                    dic_key = copy.copy(current_user.sub_course) or {}
                    dic_key.update([
                        cur_buy_course.id,
                        [
                            datetime.datetime.now(),
                            (check_user_sub_course[1] +
                             datetime.timedelta(days=day))
                        ]
                    ])
                    current_user.sub_course = dic_key
                    new_trans = Transaction(
                        transect_user_id=current_user,
                        text='Продлил подписка %s на %s месяц' %
                        (cur_buy_course.name, month),
                        price=-price_mount)
                    new_trans_director = Transaction(
                        transect_user_id=User.get_user(cur_buy_course.user_id),
                        text='%s продлил подписку на курс %s на %s' %
                        (current_user.login, cur_buy_course.name, month),
                        price=price_mount - (price_mount *
                                             (setting.commission / 100)))
                    new_trans_admin = Transaction(
                        transect_user_id=User.get_user(1),
                        text='Процент от курса %s' % cur_buy_course.name,
                        price=price_mount * (setting.commission / 100))
                    g.db.add(new_trans, new_trans_director)
                    g.db.add(new_trans_admin)
                    g.db.commit()
                    return redirect(
                        url_for('cur_course', course_id=cur_buy_course.id))
    return render_template('buy_course.html',
                           error=error,
                           cur_buy_course=cur_buy_course,
                           month=month or '')