init
This commit is contained in:
87
instructor/views.py
Normal file
87
instructor/views.py
Normal 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})
|
Reference in New Issue
Block a user