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'
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'
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'
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"修改密码成功,请登录"))
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()
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='')
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'
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()
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'
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'
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 ''
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 ''
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)
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()
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)
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 ''
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"修改密码成功,请登录"))
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'邮箱已激活!')
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)
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: