def __init__(self, instance=None, *args, **kwargs): if instance is None: instance = Lesson.objects.get(pk=kwargs['initial']['lesson']) lesson = instance self.instance = instance lesson_assign_attendees.send(sender=self, lesson=lesson) initial = kwargs.get('initial', {}); kwargs['initial'] = initial if 'real_classroom' not in initial: initial['real_classroom'] = instance.real_classroom.pk if instance.realized else instance.classroom.pk if 'real_lector' not in initial: initial['real_lector'] = instance.real_lector.pk if instance.realized else instance.course.lector.pk if 'real_content' not in initial and instance.realized: initial['real_content'] = instance.real_content if 'real_start' not in initial: initial['real_start'] = instance.real_start if instance.realized else instance.start if 'real_end' not in initial: initial['real_end'] = instance.real_end if instance.realized else instance.end if 'lesson_attendees' not in initial: initial['lesson_attendees'] = [a.pk for a in instance.lessonattendee_set.all() if a.present] super(LessonRealizedForm1, self).__init__(*args, **kwargs) self.fields['lesson'].initial = lesson.pk classroom_buildings(self.fields['real_classroom']) self.fields['lesson_attendees'].queryset = lesson.lessonattendee_set.all()
def lesson_attendance(request, course_id, object_id): course = get_object_or_404(Course, pk=course_id) lesson = get_object_or_404(course.lesson_set, pk=object_id) lesson.fill_attendance() lesson_assign_attendees.send(sender=lesson_attendance, lesson=lesson) attendee_form_class = PreProcessForm(LessonAttendeeForm, lambda form:form.limit_to_course(course)) inlines = [{'model':LessonAttendee, 'form':attendee_form_class, 'extra':1}] return update_object(request, obj=lesson, form_class=LessonRealizedForm, template_name='courses/lesson_attendance.html', extra_context={'course':course}, inlines=inlines, post_save_redirect=lesson.get_attendance_url())