Beispiel #1
0
def _edit_courseware(courseware, request, classes):
    form = forms.CoursewareForm(request.POST, request.FILES)
    form.fields['file'].required = False
    #classes = db_util.get_teacher_classes(request.user, courseware.grade, courseware.course_id) 
    form.refresh_choices(classes)
    form.full_clean()
    if form.is_valid():
        f = form.cleaned_data['file']
        if f:
            path = util.handle_upload(f, util.upload_dir(str(request.user.id), str(courseware.course_id)))
            courseware.path = path
            courseware.state = common_def.COURSEWARE_STATE_WAITING
            courseware.modified_time = datetime.now()
            course_ware.delete_delivered(courseware)
        courseware.name = form.cleaned_data['title']
        courseware.book_provider_id = form.cleaned_data['provider']
        courseware.category_id = form.cleaned_data['category']
        courseware.share_level = form.cleaned_data['share']
        courseware.week = form.cleaned_data['week']
        courseware.description = form.cleaned_data['description']
        courseware.password = form.cleaned_data['password']
        courseware.classes = form.cleaned_data['classes']
        upload_img = form.cleaned_data['image']
        if upload_img:
            #image = courseware.image
            courseware.image = upload_img
            # if image:
            #     try:
            #         os.remove(image.path)
            #     except Exception, e:
            #         print >>sys.stderr, e
        courseware.save()
        log.log_change(request.user, courseware, u'修改课件')
    return form
Beispiel #2
0
def _add_courseware(request):
    course_id = request.POST['course_id']
    grade = int(request.POST['grade'])
    classes = db_util.get_teacher_classes(request.user, grade, course_id)
    if not classes:
        return _error_page(request, u'对不起,您无权管理该课程的课件')

    form = forms.CoursewareForm(request.POST, request.FILES)
    form.refresh_choices(classes) 
    if form.is_valid():
        path = util.handle_upload(
            form.cleaned_data['file'],
            util.upload_dir(str(request.user.id), course_id))
        courseware = course_ware.create_courseware(
            course_id, grade, request.user, path, form.cleaned_data)
        log.log_addition(request.user, courseware, u'上传课件')
        return HttpResponseRedirect('/coursewares/%d/%d/' % (int(course_id), grade))
    else:
        course_name = request.POST['course_name']
        ctx = RequestContext(request, {
            'courseware': _dummy_courseware(grade, course_id, course_name),
            'form': form,
            'newware': True,
            'upload_id': uuid.uuid1().get_hex(),
            })
        return render_to_response('courseware_detail.html', ctx)
Beispiel #3
0
def _add_courseware(request, token, uid, back_level):
    course_id = request.POST['course_id']
    grade = int(request.POST['grade'])
    classes = db_util.get_teacher_classes(request.user, grade, course_id)
    if not classes:
        return _error_page(request, u'对不起,您无权管理该课程的课件')

    form = forms.CoursewareForm(request.POST, request.FILES)
    form.refresh_choices(classes)
    if form.is_valid():
        path = util.handle_upload(
            form.cleaned_data['file'],
            util.upload_dir(str(request.user.id), course_id))
        courseware = course_ware.create_courseware(course_id, grade,
                                                   request.user, path,
                                                   form.cleaned_data)
        log.log_addition(request.user, courseware, u'上传课件')
        course_ware.convert_courseware(courseware, False,
                                       request.META['SERVER_PORT'])
        #log.log_change(request.user, courseware, u'格式转换')
        ctx = RequestContext(request, {
            'level': -back_level,
        })
        return render_to_response('history_goto.html', ctx)
    else:
        course_name = request.POST['course_name']
        ctx = RequestContext(
            request, {
                'courseware': _dummy_courseware(grade, course_id, course_name),
                'form': form,
                'newware': True,
                'back_level': back_level,
                'upload_id': uuid.uuid1().get_hex(),
            })
        return render_to_response('courseware_detail.html', ctx)
Beispiel #4
0
def courseware_add(request, token, uid, grade, course_id):
    course = models.Course.objects.get(pk=course_id)
    grade = int(grade)
    back_level = 1
    if 'add' in request.POST:
        back_level = int(request.POST['back_level']) + 1
        return _add_courseware(request, token, uid, back_level)
    classes = db_util.get_teacher_classes(request.user, grade, course_id)
    if not classes:
        return _error_page(request, u'对不起,您无权管理 %s 课程的课件' % course.course_name)
    courseware = _dummy_courseware(grade, course_id, course.course_name)
    form = forms.CoursewareForm(initial={
        'classes': [c[0] for c in classes],
        'share': common_def.SHARE_LEVEL_SCHOOL
    })
    form.refresh_choices(classes)
    next_url = request.META.get('HTTP_REFERER', 'no referer')
    print >> sys.stderr, "courseware_add next: ", next_url
    ctx = RequestContext(
        request, {
            'token': token,
            'uid': uid,
            'courseware': courseware,
            'form': form,
            'newware': True,
            'back_level': back_level,
            'upload_id': uuid.uuid1().get_hex(),
        })
    return render_to_response('courseware_detail.html', ctx)
Beispiel #5
0
def courseware_detail(request, courseware_id):
    try:
        if request.method == 'GET' and courseware_id == '0':
            grade = int(request.GET['grade'])
            course_id = request.GET['course_id']
            classes = db_util.get_teacher_classes(request.user, grade, course_id)
            course_name = request.GET['course_name']
            if not classes:
                return _error_page(request, u'对不起,您无权管理 %s 课程的课件' % course_name)
            courseware = _dummy_courseware(grade, course_id, course_name)
            form = forms.CoursewareForm(initial={'classes': [c[0] for c in classes], 'share': common_def.SHARE_LEVEL_SCHOOL})
            form.refresh_choices(classes)   
            newware = True
        elif request.POST.has_key('add'):
            return _add_courseware(request)
        else:
            courseware = models.Courseware.objects.select_related('book_provider', 'category', 'course').get(id=courseware_id)
            newware = False
            classes = db_util.get_teacher_classes(request.user, courseware.grade, courseware.course_id)
            if not classes:
                return _error_page(request, u'对不起,您无权管理 %s 课程的课件' % courseware.course_name)
            if request.POST.has_key('edit'):
                form = _edit_courseware(courseware, request, classes)
            elif request.POST.has_key('delete'):
                log.log_deletion(request.user, courseware, u'删除课件')
                course_ware.delete_courseware(courseware)
                return HttpResponseRedirect('/coursewares/%d/%d/' % (courseware.course_id, courseware.grade))
            else:
                data = {
                    'title': courseware.name,
                    #'grade': courseware.grade,
                    'provider': courseware.book_provider_id,
                    'category': courseware.category_id,
                    'description': courseware.description,
                    'share': courseware.share_level,
                    'week': courseware.week,
                    'classes': db_util.get_courseware_classes(courseware),
                }
                form = forms.CoursewareForm(data, {'file': os.path.basename(courseware.path),})
                form.refresh_choices(classes)
            form.files['file'] = os.path.basename(courseware.path)
            if hasattr(courseware.image, 'path'):
                form.files['image'] = os.path.basename(courseware.image.path)
    except palmtao.LicenseException, e:
        return e.response
Beispiel #6
0
def courseware_edit(request, token, uid, courseware_id):
    back_level = 1
    try:
        courseware = models.Courseware.objects.select_related(
            'book_provider', 'category', 'course').get(id=courseware_id)
        classes = db_util.get_teacher_classes(request.user, courseware.grade,
                                              courseware.course_id)
        if not classes:
            return _error_page(request,
                               u'对不起,您无权管理 %s 课程的课件' % courseware.course_name)
        if 'edit' in request.POST:
            back_level = int(request.POST['back_level']) + 1
            form = _edit_courseware(courseware, request, classes, back_level)
            if form.is_valid():
                ctx = RequestContext(request, {
                    'level': -back_level,
                })
                return render_to_response('history_goto.html', ctx)
        else:
            data = {
                'title': courseware.name,
                #'grade': courseware.grade,
                'provider': courseware.book_provider_id,
                'category': courseware.category_id,
                'description': courseware.description,
                'share': courseware.share_level,
                'week': courseware.week,
                'classes': db_util.get_courseware_classes(courseware),
            }
            form = forms.CoursewareForm(
                data, {'file': os.path.basename(courseware.path)})
            form.refresh_choices(classes)
        form.files['file'] = os.path.basename(courseware.path)
        if hasattr(courseware.image, 'path'):
            form.files['image'] = os.path.basename(courseware.image.path)
    except palmtao.LicenseException, e:
        return e.response