Example #1
0
def course_edit():
    if request.method == 'POST':
        course_id = request.form.get('course_id')
        if request.form.get('sub_id') == 'null':
            sub_id = None
        else:
            sub_id = int(request.form.get('sub_id'))

        c = course.query.filter(course.id == int(course_id)).first()
        c.title = request.form.get('course_title')
        c.item_image = request.form.get('pic')
        c.description = request.form.get('desc')
        c.status = 3 ###课程状态0: 未审核;1:已审核;2:审核中 3:已修改
        relation = category_to_course.query.filter(category_to_course.course_id==course_id).order_by(desc(category_to_course.id)).first()
        
        if not relation:
            relation = category_to_course(course_id,int(request.form.get('category_id')),sub_id)
            db_session.add(relation)
        else:
            relation.category_id_first = int(request.form.get('category_id'))
            relation.category_id_second = sub_id
        
        db_session.commit()
        return 'success'
    
    try:
        course_id = int(request.args.get('course_id'))
    except Exception,e:
        return 'fail'
Example #2
0
def audit_course():
    if request.method == 'POST':
        try:
            items = request.form.get('items').split(',')
        except Exception,e:
            logging.info(e)
            return 'fail'

        for cid in items:
            if not cid:
                continue
            current_course = course.query.filter(course.id == int(cid)).first()
            current_course.status = 1 #审核通过

            videos = video.query.filter(video.course_id == int(cid)).all()
            for v in videos:
                print v.status, type(v.status),v.id
                if int(v.status) == 5:
                    print 'delete %s' % v.id
                    db_session.delete(v)
                    continue
                v.status = 1 #审核通过,把视频状态都改一下

        db_session.commit()
        
        return 'success'
Example #3
0
def video_recodrd():
    """  请求链接需要提交的数据
        {
            courseid:xx,
            videoid:xx,
            current_time:xxxx
        }"""

    user = users.query.filter(users.email == session['email']).first()
    videoid = int(request.form.get('videoid'))

    if request.method == 'POST':
        try:
            courseid = int(request.form.get('courseid'))
            current_time = request.form.get('current_time')

            record = video_record.query.filter(
                video_record.user_id == user.id,
                video_record.video_id == videoid).first()
            if record:
                record.play_time = current_time
            else:
                record = video_record(users=user,
                                      course_id=courseid,
                                      video_id=videoid,
                                      play_time=current_time)
                db_session.add(record)

            db_session.commit()
            return 'success'
        except Exception, e:
            logging.error(e)
            return 'fail'
Example #4
0
def change_password():

    if request.method != 'POST':
        return render_template('usercontrol/change_password.html')

    email = escape(session['email'])

    origin = request.form.get('passwd0')

    passwd = request.form.get('passwd')
    passwd2 = request.form.get('passwd2')

    user = users.query.filter(users.email == email).first()

    if (hash_string(origin) != user.password):
        logging.info(hash_string(origin))
        logging.info(user.password)
        return render_template("usercontrol/change_password.html",
                               msg="输入的当前密码不正确!")

    if len(passwd) < 6 or len(passwd) > 24:
        return render_template('usercontrol/change_password.html',
                               q=email,
                               msg=u"密码长度必须在6至24位之间")

    if len(passwd) != len(passwd2):
        return render_template('usercontrol/change_password.html',
                               q=email,
                               msg=u"两次输入的密码不相同!")

    user.password = hash_string(passwd)
    db_session.commit()
    del session['username']
    del session['email']
    return redirect(url_for('usercontrol.signin', msg=u"修改密码成功,请登录"))
Example #5
0
def copy_course(cid, count):
    c = course.query.filter(course.status==1,course.id == cid).first()

    for i in xrange(2, count+2):
        copy_c = course(c.title, user_id=4, item_image=c.item_image)
        relation = category_to_course(course=copy_c,category_id_first=5)
        db_session.add(copy_c)
        db_session.add(relation)

    db_session.commit()
Example #6
0
def signup():
    if 'username' in session:
        return redirect(url_for("index.index"))

    if request.method == 'POST':
        username = request.form.get('username')
        passwd = request.form.get('passwd')
        passwd2 = request.form.get('passwd2')
        auth_code = request.form.get('input_auth_code')

        current = users.query.filter_by(email=username).first()
        if current:
            return render_template('usercontrol/signup.html',
                                   msg="该邮箱已被注册,请重新输入!")

        if passwd != passwd2:
            return render_template('usercontrol/signup.html',
                                   msg="两次输入的密码不相同!")
        #创建一个用户数据类

        try:
            code = escape(session[username])
        except:
            code = None

        if auth_code != code:
            return render_template('usercontrol/signup.html', msg="验证码错误!")
        #默认昵称为邮箱名去掉@xxx.com
        default_name = username.split('@')[0]
        #默认头像图片
        default_pic = '/static/images/defaultpic.jpg'
        new = users(username,
                    hash_string(passwd),
                    name=default_name,
                    head_pic=default_pic)
        #提交到数据库
        db_session.add(new)
        db_session.commit()
        session['username'] = default_name
        session['email'] = username
        session['userid'] = new.id
        session['level'] = 9
        session['head_pic'] = default_pic
        logging.info(new.id)
        try:
            #删除写入session的注册验证码
            del session[username]
        except:
            pass
        return redirect(url_for("index.index"))

    return render_template('usercontrol/signup.html', msg='')
Example #7
0
def refuse_course():
    if request.method == 'POST':
        try:
            items = request.form.get('items').split(',')
        except Exception,e:
            logging.info(e)
            return 'fail'
        for cid in items:
            if not cid:
                continue
            current_course = course.query.filter(course.id == int(cid)).first()
            current_course.status = 4 #审核驳回
        db_session.commit()
        return 'success'
Example #8
0
def create_category():
    categorys = [u'文化艺术',
                 u'编程开发',
                 u'体育运动',
                 u'工业类',
                 u'语言学习',
                 u'通识教育',]

    for c in categorys:
        cate= category(c, 1)
        db_session.add(cate)


    db_session.commit()
Example #9
0
def del_lesson():
    if request.method != 'POST':
        return 'fail'

    cid = request.form.get('cid')
    items = request.form.get('items')
    for item in items.split(','):
        if not item:
            continue
        v =  video.query.filter(video.id == int(item)).first()
        v.status = 5

    c = course.query.filter(course.id == int(cid)).first()
    c.status = 3

    db_session.commit()
    return 'success'
Example #10
0
def delete_collect():
    email = session['email']
    user = users.query.filter(users.email == email).first()

    course_id = int(request.form.get('course_id'))

    confirm = collect.query.filter(collect.user_id == user.id,
                                   collect.course_id == course_id).first()
    if not confirm:
        return 'success'

    try:
        db_session.delete(confirm)
        db_session.commit()
        return 'success'
    except Exception, e:
        logging.error(e)
        return 'failed'
Example #11
0
def send_email():
    if request.method == 'GET':
        try:
            userid = request.args.get('userid')
        except:
            userid = session['userid']
        newEmail = request.args.get('newEmail')

        change = change_email.query.filter(
            change_email.users_id == int(userid),
            change_email.email == newEmail,
            change_email.is_available == "1").first()
        if not change:
            logging.error("could not find valid data in table")
            return 'fail'

        verification_code = get_random_texts(5)
        activate_string = encrypt_string(
            'email={}&userid={}&vc={}&changeid={}'.format(
                newEmail, userid, verification_code, change.id))
        logging.info(activate_string)

        change.verification_code = verification_code
        db_session.commit()

        activate_url = '{}activate?code={}'.format(request.url_root,
                                                   activate_string)
        logging.info(activate_url)

        confirm = getattr(g, 'mail_server', None)
        if not confirm:
            mail_server = sitemail()
            mail_server.mail_server()
            g.mail_server = mail_server
        #发送带激活链接的邮件到用户邮箱
        mail_to = newEmail
        title = '代号010教育网站邮箱更换激活链接'
        content = '请点击以下链接,激活新邮件:\r\n{}'.format(activate_url)
        try:
            status = g.mail_server.send(mail_to, title, content)
            return 'success'
        except Exception, e:
            logging.error(e)
            return ''
Example #12
0
def update_info():
    logging.info(request.form)
    current = users.query.filter(users.id == session["userid"]).first()
    try:
        for key, value in request.form.items():
            #设置current对象的属性值
            if key == 'head_pic':
                #把图片的地址换成相对路径
                root_url = re.match('http(s|)://[^/]*', value).group()
                value = value.replace(root_url, '')
            setattr(current, key, value)
        db_session.commit()
        session['username'] = request.form.get('name')
        session['head_pic'] = current.head_pic
        logging.info('head_pic:', current.head_pic)
        return 'success'
    except Exception, e:
        logging.error(e)
        return ''
Example #13
0
def addComment():
    if request.method == 'POST':
        courseid = request.form.get('courseid')
        videoid = request.form.get('videoid')
        comment_text = request.form.get('comment')

        user = users.query.filter(users.email == session['email']).first()

        #创建一个评论实例
        com = comment(comment=comment_text,
                      video_id=videoid,
                      course_id=courseid,
                      users=user)
        com.str_create_date = com.create_date.strftime('%Y-%m-%d %H:%M:%S')
        #添加数据到orm中间层
        db_session.add(com)
        #提交数据
        db_session.commit()

    return render_template('videoplayer/comment.html', comment=com, user=user)
Example #14
0
def create_course():
    video_path = r'D:\web\5\*.mp4'
    course_name = u'Java入门教学'
    url_path = 'http://video.linyuling.com/5/'

    vs = glob.glob(video_path)

    c = course(course_name,user_id=1)
    db_session.add(c)
    for i, v in enumerate(vs):
        clip = VideoFileClip(v)
        du = int(clip.duration)
        print du
        path = url_path + v.split('\\')[-1]

        current_video = video(course_name + str(i), path, order=i+1,duration=du,course=c)
        
        db_session.add(current_video)

    db_session.commit()
Example #15
0
def addNote():
    if request.method == 'POST':
        courseid = request.form.get('courseid')
        videoid = request.form.get('videoid')
        note_text = request.form.get('note')

        user = users.query.filter(users.email == session['email']).first()

        current_note = note(note_text,
                            users=user,
                            course_id=courseid,
                            video_id=videoid)
        current_note.str_create_date = current_note.create_date.strftime(
            '%Y-%m-%d %H:%M:%S')
        db_session.add(current_note)
        db_session.commit()

    return render_template('videoplayer/note.html',
                           user=user,
                           note=current_note)
Example #16
0
def store_email():
    if request.method == 'GET':
        try:
            userid = request.args.get('userid')
        except:
            userid = session['userid']
        newEmail = request.args.get('newEmail')

        old_emails = change_email.query.filter(
            change_email.users_id == int(userid)).all()
        if old_emails:
            for email in old_emails:
                email.is_available = '0'

        change = change_email(email=newEmail, users_id=int(userid))
        db_session.add(change)
        try:
            db_session.commit()
            return 'success'
        except Exception, e:
            logging.error(e)
            return ''
Example #17
0
def find_reset():

    email = session['find_confirm']

    passwd = request.form.get('passwd')
    passwd2 = request.form.get('passwd2')

    if len(passwd) < 6 or len(passwd) > 24:
        return render_template('usercontrol/set_password.html',
                               q=email,
                               msg=u"密码长度必须在6至24位之间")

    if len(passwd) != len(passwd2):
        return render_template('usercontrol/set_password.html',
                               q=email,
                               msg=u"两次输入的密码不相同!")

    user = users.query.filter(users.email == email).first()
    user.password = hash_string(passwd)
    db_session.commit()
    del session['find_confirm']
    return redirect(url_for('usercontrol.signin', msg=u"修改密码成功,请登录"))
Example #18
0
def activate():
    string = request.args.get('code')
    params = decrypt_string(string.encode('utf-8'))

    d = to_dict(params)
    logging.info(d)

    user = users.query.filter_by(id=int(d['userid'])).first()
    change = change_email.query.filter_by(id=int(d['changeid'])).first()
    if change.is_activated == '1':
        return render_template('usercontrol/notice.html', msg=u'邮箱已激活!')

    try:
        if escape(session['email']) == user.email:
            session['email'] = d['email']
    except:
        pass
    #修改用户主表的登录邮箱账号
    user.email = d['email']
    #邮箱激活后,把change_email表的数据处理下
    change.is_available = '0'  #废弃这条数据
    change.is_activated = '1'  #表示这个邮箱已经激活了
    db_session.commit()
    return render_template('usercontrol/notice.html', msg=u'邮箱已激活!')
Example #19
0
def get_course(courseid):
    user = users.query.filter(users.email == session['email']).first()

    #每次进入课程详情页的时候,写下用户观看课程的记录
    course_record = user_to_course.query.filter(
        user_to_course.course_id == courseid,
        user_to_course.user_id == user.id).first()
    if not course_record:
        add_record = user_to_course(user.id, courseid)
        db_session.add(add_record)
        logging.info('add record: %s ', add_record)

    #当前登录用户对这个课程的评分
    current_user_rate = course_rate.query.filter(
        course_rate.user_id == user.id,
        course_rate.course_id == courseid).first()

    #当前课程信息
    current_course = course.query.filter(course.id == int(courseid)).first()
    #课程所有视频信息
    lessons = video.query.filter(video.course_id == int(courseid)).order_by(
        asc(video.order)).all()

    learners = db_session.query(func.count(user_to_course.id)).filter(
        user_to_course.course_id == courseid).first()
    rate_count = db_session.query(func.count(course_rate.id),func.sum(course_rate.score))\
    .filter(course_rate.course_id == courseid).first()
    logging.info('rate people: %s, rates: %s, learners: %s', rate_count[0],
                 rate_count[1], learners[0])

    if learners:
        current_course.view = learners[0]
    if rate_count[0] > 0:
        current_course.score_count = rate_count[0]
    if rate_count[1]:
        current_course.score = float(rate_count[1]) / float(rate_count[0])

    for v in lessons:
        v.format_duration = '%02d:%02d' % (int(
            v.duration / 60), int(v.duration % 60))
        current_record = video_record.query.filter(
            video_record.user_id == user.id,
            video_record.video_id == v.id).first()
        if current_record and current_record.is_finished == '1':
            v.progress = u'{:>6}'.format('已完成')
        elif current_record and current_record.is_finished == '0':
            v.progress = '{:>6}%'.format(
                round(current_record.play_time / float(v.duration) * 100, 2))
        else:
            v.progress = u'{:>6}'.format(' 未开始')

    rates = course_rate.query.filter(course_rate.course_id == courseid)\
    .order_by(desc(course_rate.create_date)).slice(0, 5).all()

    for i in rates:
        i.str_create_date = i.create_date.strftime('%Y-%m-%d %H:%M:%S')
    db_session.commit()

    is_collect = collect.query.filter(collect.user_id == user.id,
                                      collect.course_id == courseid).first()
    return render_template('videoplayer/course.html',
                           course=current_course,
                           lessons=lessons,
                           rates=rates,
                           current_user_rate=current_user_rate,
                           is_collect=is_collect)
Example #20
0
        return 'fail'

    if sub_id == 'null':
        sub_id = None
    else:
        sub_id = int(sub_id)
    #confirm2 = course_temp.query.filter(course_temp.title == course_title).first()
    confirm = course.query.filter(course.status==1,course.title == course_title).first()
    if confirm:
        return u'此课程名字已存在,请重新输入!'

    new_course = course(title=course_title, item_image=pic, description = desc, user_id = user.id)
    nc_relation = category_to_course(course=new_course,category_id_first=category_id,category_id_second=sub_id)
    db_session.add(new_course)
    db_session.add(nc_relation)
    db_session.commit()

    return 'success'

@page.route('/course/manage/<int:courseid>')
@self_required #需要验证是否为当前用户
def video_manage(courseid):
    session['ccid'] = courseid
    user = users.query.filter(users.email == session['email']).first()
    lessons = video.query.filter(video.course_id == int(courseid)).all()
    for l in lessons:
        l.str_create_date = l.create_date.strftime('%Y-%m-%d %H:%M:%S')
    c_course = course.query.filter(course.id == courseid).first()

    index = category_to_course.query.filter(category_to_course.course_id == courseid).order_by(desc(category_to_course.id)).first()
    if not index: