Esempio n. 1
0
def upload_video():
    if request.method == "UPDATE":
        duration = request.values.get('duration')
        v_id = request.values.get('v_id')
        video = Video.query.get(v_id)
        if video:
            video.duration = duration
            db.session.add(video)
            db.session.commit()
            video.course.update_duration()
            for uv in video.u_videos:
                uv.update_duration()
            return jsonify({
                'resCode': 'ok',
                'msg': '时长更新完毕!'
            })
    file = request.files.get('file')
    c_id = request.values.get('c_id')
    course = Course.query.get_or_404(c_id)
    filename = file.filename
    title = filename.split('.')[0] if isinstance(filename, str) else 'None'
    video = Video(title=title)
    video.course = course
    db.session.add(video)
    db.session.commit()
    v_id = video.id
    base_path = 'app/static/videos/'
    base_name = 'course{}-{}'.format(c_id, v_id)
    _filename = '{}.{}'.format(base_name, filename.split('.')[1])
    path = '/static/videos/' + _filename
    try:
        file.save(base_path + _filename)
        video.video_src = path
        db.session.add(video)

        choices = course.choices.all()
        users = [choice.user for choice in choices]
        for user in users:
            uv = UserVideo.create(user, video)

    except Exception as e:
        print(e)
        db.session.delete(video)

    return jsonify({
        'id': v_id,
        'duration': video.duration or '-',
        'order': video.order,
        'resCode': 'ok',
        'msg': 'ok',
        'filename': video.get_filename()
    })