You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
3.9 KiB

from django.shortcuts import reverse, redirect
from django.views.generic import CreateView, UpdateView
from user.forms import StuRegisterForm, TeaRegisterFrom, StuUpdateForm, TeaUpdateForm
from user.models import Student, Teacher
import random
#
class CreateStudentView(CreateView):
model = Student
form_class = StuRegisterForm
template_name = "user/register.html"
success_url = "login"
def form_valid(self, form):
grade = form.cleaned_data['grade']
student_set = Student.objects.filter(grade=grade).order_by("-number")
# 年级号是学生注册时自己选择的,子学号是注册时按照其年级内注册的先后顺序生成的
if student_set.count() > 0:
last_student = student_set[0]
new_number = str(int(last_student.number) + 1)
for i in range(6 - len(new_number)):
new_number = '0' + new_number
else:
new_number = '000001'
# 创建新的学生实例,但不保存
new_student = form.save(commit=False)
# 修改学生
new_student.number = new_number
# 保存新实例
new_student.save()
# 保存表单的多对多数据
form.save_m2m()
self.object = new_student
uid = grade + new_number
from_url = "register"
base_url = reverse(self.get_success_url(), kwargs={'kind': 'student'})
# 学生注册成功后,会返回到该重定向页面所指向的网页,
# 注册后的账号是后台生成的,注册者并不知道,所以重定向后需要将账号展示给注册者看
return redirect(base_url + '?uid=%s&from_url=%s' % (uid, from_url))
def get_context_data(self, **kwargs):
context = super(CreateStudentView, self).get_context_data(**kwargs)
context["kind"] = "student"
return context
class CreateTeacherView(CreateView):
model = Teacher
form_class = TeaRegisterFrom
template_name = "user/register.html"
success_url = "login"
def form_valid(self, form):
department_no = random.randint(0, 300)
department_no = '{:0>3}'.format(department_no)
teacher_set = Teacher.objects.filter(department_no=department_no).order_by("-number")
if teacher_set.count() > 0:
last_teacher = teacher_set[0]
new_number = str(int(last_teacher.number) + 1)
new_number = '{:0>7}'.format(new_number)
else:
new_number = '0000001'
new_teacher = form.save(commit=False)
new_teacher.department_no = department_no
new_teacher.number = new_number
new_teacher.save()
form.save_m2m()
self.object = new_teacher
uid = department_no + new_number
from_url = "register"
base_url = reverse(self.get_success_url(), kwargs={'kind': 'teacher'})
return redirect(base_url + '?uid=%s&from_url=%s' % (uid, from_url))
def get_context_data(self, **kwargs):
context = super(CreateTeacherView, self).get_context_data(**kwargs)
context["kind"] = "teacher"
return context
class UpdateStudentView(UpdateView):
model = Student
form_class = StuUpdateForm
template_name = "user/update.html"
def get_context_data(self, **kwargs):
context = super(UpdateStudentView, self).get_context_data(**kwargs)
context.update(kwargs)
context["kind"] = "student"
return context
def get_success_url(self):
return reverse("course", kwargs={"kind": "student"})
class UpdateTeacherView(UpdateView):
model = Teacher
form_class = TeaUpdateForm
template_name = "user/update.html"
def get_context_data(self, **kwargs):
context = super(UpdateTeacherView, self).get_context_data(**kwargs)
context.update(kwargs)
context["kind"] = "teacher"
return context
def get_success_url(self):
return reverse("course", kwargs={"kind": "teacher"})