def discipline_create(request): if request.method == 'POST': form = DisciplineForm(request.POST) if form.is_valid(): discipline = Discipline() discipline.name = form.cleaned_data['name'] discipline.code = form.cleaned_data['code'] discipline.start_date = form.cleaned_data['start_date'] discipline.finish_date = form.cleaned_data['finish_date'] discipline.teacher = Teacher.objects.get(pk=form.cleaned_data['teacher']) discipline.save() discipline.group.profiles.add(Teacher.objects.get(pk=form.cleaned_data['teacher']).profile) for selected_student in form.cleaned_data['students']: discipline.group.profiles.add(Profile.objects.get(pk=selected_student)) discipline.parent_group.profiles.add(Teacher.objects.get(pk=form.cleaned_data['teacher']).profile) for selected_student in form.cleaned_data['students']: for guardian in Profile.objects.get(pk=selected_student).student.guardians_children.all(): discipline.parent_group.profiles.add(guardian.profile) return HttpResponseRedirect(reverse("educational:discipline_detail", kwargs={'pk': discipline.pk})) else: form = DisciplineForm() return render(request, 'educational/teacher/discipline_create.html', {'form': form})
def discipline_update(request, pk): discipline = get_object_or_404(Discipline, pk=pk) old_students = [] for profile in discipline.group.profiles.all(): if profile.is_student(): old_students.append(profile) if request.method == 'POST': form = DisciplineForm(request.POST) if form.is_valid(): discipline.name = form.cleaned_data['name'] discipline.code = form.cleaned_data['code'] discipline.start_date = form.cleaned_data['start_date'] discipline.finish_date = form.cleaned_data['finish_date'] discipline.teacher = Teacher.objects.get(pk=form.cleaned_data['teacher']) discipline.save() for profile in discipline.group.profiles.all(): discipline.group.profiles.remove(profile) discipline.group.profiles.add(Teacher.objects.get(pk=form.cleaned_data['teacher']).profile) for selected_student in form.cleaned_data['students']: discipline.group.profiles.add(Profile.objects.get(pk=selected_student)) for profile in discipline.parent_group.profiles.all(): discipline.parent_group.profiles.remove(profile) discipline.parent_group.profiles.add(Teacher.objects.get(pk=form.cleaned_data['teacher']).profile) for selected_student in form.cleaned_data['students']: for guardian in Profile.objects.get(pk=selected_student).student.guardians_children.all(): discipline.parent_group.profiles.add(guardian.profile) for assignment in discipline.assignment_set.all(): for group in assignment.group.all(): for profile in group.profiles.all(): if profile.is_teacher: group.profiles.remove(profile) group.profiles.add(Teacher.objects.get(pk=form.cleaned_data['teacher']).profile) return HttpResponseRedirect(reverse("educational:discipline_detail", kwargs={'pk': pk})) else: form = DisciplineForm( initial={'name': discipline.name, 'code': discipline.code, 'start_date': discipline.start_date, 'finish_date': discipline.finish_date, 'teacher': discipline.teacher.pk, 'students': [s.pk for s in old_students]}) return render(request, 'educational/teacher/discipline_update.html', {'form': form})