Example #1
0
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})
Example #2
0
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})