This commit is contained in:
Dmitriy
2025-06-23 01:24:34 +03:00
commit 60b4e0e839
303 changed files with 35737 additions and 0 deletions

87
instructor/views.py Normal file
View File

@ -0,0 +1,87 @@
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})