Files
Flagman/instructor/views.py
Dmitriy 60b4e0e839 init
2025-06-23 01:24:34 +03:00

87 lines
3.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.decorators import login_required
from django.contrib import messages
from .models import Instructor, InstructorSchedule
from schedule.models import Lesson, LessonEnrollment
from .forms import InstructorScheduleForm, InstructorProfileForm, InstructorForm
from student.models import Student
@login_required
def instructor_dashboard(request):
instructor = get_object_or_404(Instructor, profile__user=request.user)
lessons = Lesson.objects.filter(instructor=instructor).order_by('start_time')
return render(request, 'instructor/dashboard.html', {
'instructor': instructor,
'lessons': lessons
})
@login_required
def instructor_schedule(request, pk):
instructor = get_object_or_404(Instructor, pk=pk)
lessons = instructor.lessons.all().order_by('date', 'start_time')
return render(request, 'instructor/instructor_schedule.html', {'instructor': instructor, 'lessons': lessons})
@login_required
def edit_schedule(request):
instructor = get_object_or_404(Instructor, profile__user=request.user)
if request.method == 'POST':
form = InstructorScheduleForm(request.POST)
if form.is_valid():
schedule = form.save(commit=False)
schedule.instructor = instructor
schedule.save()
messages.success(request, 'Расписание успешно обновлено!')
return redirect('instructor_schedule')
else:
form = InstructorScheduleForm()
return render(request, 'instructor/edit_schedule.html', {'form': form})
@login_required
def student_list(request):
instructor = get_object_or_404(Instructor, profile__user=request.user)
enrollments = LessonEnrollment.objects.filter(lesson__instructor=instructor).select_related('student')
students = {enrollment.student for enrollment in enrollments}
return render(request, 'instructor/student_list.html', {
'instructor': instructor,
'students': students
})
@login_required
def student_detail(request, pk):
instructor = get_object_or_404(Instructor, profile__user=request.user)
student = get_object_or_404(Student, pk=pk)
enrollments = LessonEnrollment.objects.filter(
lesson__instructor=instructor,
student=student
).select_related('lesson')
return render(request, 'instructor/student_detail.html', {
'instructor': instructor,
'student': student,
'enrollments': enrollments
})
@login_required
def instructor_profile(request):
if not hasattr(request.user, 'instructor'):
messages.error(request, 'У вас нет прав для просмотра профиля инструктора.')
return redirect('home')
if request.method == 'POST':
form = InstructorForm(request.POST, instance=request.user.instructor)
if form.is_valid():
form.save()
messages.success(request, 'Профиль успешно обновлен.')
return redirect('instructor:profile')
else:
form = InstructorForm(instance=request.user.instructor)
return render(request, 'instructor/instructor_profile.html', {'form': form})
def instructor_list(request):
instructors = Instructor.objects.all()
return render(request, 'instructor/instructor_list.html', {'instructors': instructors})
@login_required
def instructor_detail(request, pk):
instructor = get_object_or_404(Instructor, pk=pk)
return render(request, 'instructor/instructor_detail.html', {'instructor': instructor})