Beispiel #1
0
def check_import(request, template_name="oa/teacher_import.html"):
    schools = helpers.get_schools(request.user)
    
    roles_xls = request.FILES.get('teachers')
    error_list = []
    num = 0
    
    try:
        school_id = request.POST['school']
        school = get_object_or_404(School, pk=school_id)
    except:
        school = schools[0]
    
    if not roles_xls:
        messages.error(request, _("Files Missing"))
        return render(request, template_name, {'schools':schools,'school':school})
    try:
        wb = xlrd.open_workbook(file_contents=roles_xls.read())
        s = wb.sheet_by_index(0)
    except xlrd.biffh.XLRDError:
        messages.error(request, _("Unsupported format, or corrupt file"))
        return render(request, template_name, {'schools':schools,'school':school})
    
    try:
        trans_map = {
            "name": s.cell(0, 0).value,
            "mobile": s.cell(0, 1).value
        }
    except:
        trans_map = None
    xls_cache = []  
    for row in range(s.nrows)[1:]:
        num = num + 1
        
        try:
            mobile = mobile = str(int(s.cell(row, 1).value)).strip()
        except:
            mobile = ''
        try:
            name = s.cell(row, 0).value.strip()
        except Exception, e:
            print e
            messages.error(request, u"导入的 Excel 文件缺少需要的列, 或者该列数据为空.")
            return redirect('oa_teacher_batch_import')
          
        try:
            teacher = Teacher.objects.get(name=name, user__profile__mobile=mobile,school=school)
            if teacher and teacher.user.profile.mobile:
                error_list.append({'name':name,'mobile':mobile,'row':row,'msg':"姓名和手机已存在"})
            continue
        except:
            pass
        
        initial_data = {"name": name, "mobile": mobile}
        form = TeacherForm(initial_data)
        if not form.is_valid():
            error_list.append({'name':name,'mobile':mobile,'row':row,'msg':form.errors})
            continue
        print name,mobile
        xls_cache.append({'name':name,'mobile':mobile})
Beispiel #2
0
def create(request, template_name="manage/teacher_create.html"):
    if request.method == 'POST':
        form = TeacherForm(request.POST, request.FILES)
        if form.is_valid():
            #新建用户
            teacher = helpers.create_teacher(form, request)
            if teacher.id:
                messages.success(request, u"教师 %s 已成功创建" % teacher.name)
                return redirect("manage_teacher_view", teacher_id=teacher.id)
    else:
        form = TeacherForm()
    ctx = {'form': form}
    ctx.update(csrf(request))
    return render(request, template_name, ctx)
Beispiel #3
0
def update(request, teacher_id, template_name="manage/teacher_update.html"):
    """update a class"""
    teacher = get_object_or_404(Teacher, pk=teacher_id)
    if request.method == 'POST':
        form = TeacherForm(request.POST, request.FILES, instance=teacher)
        if form.is_valid():
            teacher = form.save()
            messages.success(request, u"教师 %s 已更新" % teacher.name)
            return redirect("manage_teacher_view", teacher_id=teacher.id)
    else:
        # 表单默认手机
        mobile = teacher.getMobile()
        form = TeacherForm(instance=teacher, initial={'mobile': mobile})

    ctx = {"form": form, "teacher": teacher}
    return render(request, template_name, ctx)