def update(request, teacher_id, template_name="oa/teacher_form.html"): """update a teacher""" schools = helpers.get_schools(request.user) teacher = get_object_or_404(Teacher, pk=teacher_id, school__in=schools) roles = Role.objects.all() role_pks = [r.id for r in teacher.user.roles.all()] user_role_pks = ','.join([str(r.pk) for r in teacher.user.roles.all()]) school = teacher.school try: postjob = teacher.postjob except: postjob = PostJob(teacher=teacher,school=school) postjob.save() if request.method == 'POST': password = teacher.user.password form1 = TeacherUserForm(request.POST,instance=teacher.user) form2 = UserProfileForm(request.POST, request.FILES,instance=teacher.user.get_profile()) form3 = PostJobForm(request.POST,instance=teacher.postjob) error_list = form1.errors.items() + form2.errors.items() + form3.errors.items() if request.is_ajax(): return helpers.ajax_validate_form_error_list(error_list) print form1.errors,'11111111' print form2.errors,'22222222' print form3.errors,'33333333' if form1.is_valid() and form2.is_valid() and form3.is_valid(): username = form1.clean_username() if username: teacher.user.username = username teacher.user.password = password teacher.user.save() profile = form2.save(commit=False) realname = request.POST['realname'] if realname: teacher.name = realname teacher.save() form3.save() role_pks = request.POST.getlist('role_list') role_list = [r for r in Role.objects.filter(pk__in=role_pks)] teacher.user.roles = role_list messages.success(request, u"教师 %s 已成功修改" % teacher.name) return redirect("oa_teacher_list") else: form1 = TeacherUserForm(instance=teacher.user) form2 = UserProfileForm(instance=teacher.user.get_profile()) form3 = PostJobForm(instance=teacher.postjob,user=request.user) ctx = {'form1': form1,'form2': form2,'form3': form3,'teacher':teacher,\ 'user_role_pks':user_role_pks,'roles':roles,'role_pks':role_pks} ctx.update(csrf(request)) return render(request, template_name, ctx)
def regist(request,template_name="oa/site/registration.html",domain="huaban"): ctx = {'channel':'site_regist'} site = get_site(request) if not site: return render(request, "404.html") school = site.school extra = int(request.GET.get("extra", 4)) if request.GET.get('newsn')=='1': csn=CaptchaStore.generate_key() cimageurl= captcha_image_url(csn) parent_domain = helpers.get_parent_domain(request) return HttpResponse(parent_domain + cimageurl) if request.method == 'POST': form1 = RegistrationForm(request.POST) extra = request.POST['form-TOTAL_FORMS'] formset = formset_factory(RegistGuardianForm,formset=RequiredFormSet,extra=extra) form2 = formset(request.POST) print form1.errors,'11111' print form2[0].errors,'222222222' print form2[0].is_valid(),'vvvvv' if request.is_ajax(): form2_error_list = [] for fo in form2: form2_error_list = form2_error_list + fo.errors.items() error_list = form1.errors.items() + form2_error_list return helpers.ajax_validate_form_error_list(error_list) if form1.is_valid() and form2[0].is_valid(): human = True reg = form1.save(commit=False) reg.school = school reg.status = 0 reg.save() for f in form2: print f.errors if f.is_valid(): guardian = f.save(commit=False) if guardian.relation and guardian.name and guardian.mobile and guardian.unit: guardian.regist = reg guardian.save() messages.success(request, u"报名表%s 保存成功" % reg.name) return redirect(request.get_full_path()) else: form1 = RegistrationForm() form2 = formset_factory(RegistGuardianForm,formset=RequiredFormSet,extra=extra) ctx = {'form1':form1,'form2':form2,'class':'startes','site':site} return render(request, template_name, ctx)
def create(request, template_name="oa/teacher_form.html"): roles = Role.objects.all() if request.method == 'POST': form1 = TeacherUserForm(request.POST) is_auto = request.POST.get('signup') is_valid = form1.is_valid() form1_error_list = form1.errors.items() if is_auto == "auto": form1_error_list = [] is_valid = True print is_valid,'v11111111111' form2 = UserProfileForm(request.POST, request.FILES) print form2.errors,'2222222' form3 = PostJobForm(request.POST,user=request.user) print form3.errors,'3333333' error_list = form1_error_list + form2.errors.items() + form3.errors.items() if request.is_ajax(): return helpers.ajax_validate_form_error_list(error_list) if is_valid and form2.is_valid() and form3.is_valid(): #新建用户 teacher = helpers.create_teacher(form1, request) print teacher,'vvvvvvvv' role_pks = request.POST.getlist('role_list') role_list = [r for r in Role.objects.filter(pk__in=role_pks)] if teacher.id: for role in role_list: teacher.user.roles.add(role) form2 = UserProfileForm(request.POST, request.FILES, instance=teacher.user.get_profile()) form2.save() form3 = PostJobForm(request.POST,user=request.user) postjob = form3.save(commit=False) postjob.teacher = teacher postjob.save() messages.success(request, u"教师 %s 已成功创建" % teacher.name) return redirect("oa_teacher_list") else: form1 = TeacherUserForm() form2 = UserProfileForm() form3 = PostJobForm(user=request.user) # form4 = TeachernameForm() ctx = {'form1': form1,'form2': form2,'form3': form3,'roles':roles} ctx.update(csrf(request)) return render(request, template_name, ctx)
def category(request, template_name="oa/document_category_form.html"): """公文类别设置""" school = get_schools(request.user)[0] extra = int(request.GET.get("extra", 0)) categorys = [] category_list = [] for p in DocumentCategory.objects.filter(school=school,parent_id=0): categorys.append(p) category_list.append({'name':p.name,'parent':None}) for s in DocumentCategory.objects.filter(school=school,parent=p): categorys.append(s) category_list.append({'name':s.name,'parent':s.parent}) if request.method == 'POST': extra = request.POST['form-TOTAL_FORMS'] formset = formset_factory(DocumentCategoryForm, extra=extra) form = formset(request.POST,initial=category_list) if request.is_ajax(): error_list = [] for fo in for4: error_list = error_list + fo.errors.items() return helpers.ajax_validate_form_error_list(error_list) if form.is_valid(): i = 0 for f in form: try: cat = categorys[i] cat.name = f['name'].value() cat.save() except: cat = f.save(commit=False) if not f['parent'].value(): cat.parent_id = 0 cat.school = school cat.save() i += 1 messages.success(request, u'操作成功') return redirect('oa_document_category') else: formset = formset_factory(DocumentCategoryForm,extra=extra) form = formset(initial=category_list) ctx = {'form':form,'extra':extra,'categorys':categorys} return render(request, template_name, ctx)
def create(request, template_name="oa/student_form.html"): """添加学籍""" extra = int(request.GET.get("extra", 1)) if request.method == 'POST': form1 = TeacherUserForm(request.POST) is_auto = request.POST.get('signup') is_valid = form1.is_valid() form1_error_list = form1.errors.items() if is_auto == "auto": form1_error_list = [] is_valid = True form2 = UserProfileForm(request.POST, request.FILES) form3 = OaStudentForm(request.POST,user=request.user) extra = request.POST['form-TOTAL_FORMS'] formset = formset_factory(GuardianForm, extra=extra) form4 = formset(request.POST) form5 = BirthControlForm(request.POST) print form2.errors,'22222222' print form3.errors,'3333333' print form4.errors,'444444444' print form5.errors,'55555555' form4_error_list = [] for fo in form4: form4_error_list = form4_error_list + fo.errors.items() error_list = form1_error_list + form2.errors.items() + form3.errors.items() + form4_error_list + form5.errors.items() if request.is_ajax(): return helpers.ajax_validate_form_error_list(error_list) if is_valid and form2.is_valid() and form3.is_valid() and form4.is_valid() and form5.is_valid(): student = helpers.create_student(form1, request) if student.id: form2 = UserProfileForm(request.POST, request.FILES, instance=student.user.get_profile()) form2.save() form3 = OaStudentForm(request.POST,instance=student,user=None) form3.save() for f in form4: guardian = f.save(commit=False) if guardian.name == "empty_name" and guardian.mobile == "13900000000" and guardian.address == "empty_address": pass else: if guardian.name: guardian.student = student guardian.save() birthcontrol = form5.save(commit=False) birthcontrol.student = student birthcontrol.save() profile = student.user.profile if not profile.mobile: try: mobile = Guardian.objects.filter(student=student)[0].mobile profile.mobile = mobile profile.save() except: pass messages.success(request, u"学生 %s 已成功创建" % student.name) return redirect("oa_student_list") else: form1 = TeacherUserForm() form2 = UserProfileForm() form3 = OaStudentForm(user=request.user) form4 = formset_factory(GuardianForm, extra=extra) form5 = BirthControlForm() ctx = {'form1': form1,'form2': form2,'form3': form3,'form4':form4,'form5':form5,'extra':extra} ctx.update(csrf(request)) return render(request, template_name, ctx)