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.

114 lines
3.4 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"})