93 lines
3.5 KiB
Python
93 lines
3.5 KiB
Python
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 Student, StudentProgress
|
|
from schedule.models import Lesson, LessonEnrollment
|
|
from .forms import StudentProfileForm
|
|
|
|
@login_required
|
|
def student_dashboard(request):
|
|
student = get_object_or_404(Student, profile__user=request.user)
|
|
enrollments = LessonEnrollment.objects.filter(student=student).select_related('lesson')
|
|
return render(request, 'student/dashboard.html', {
|
|
'student': student,
|
|
'enrollments': enrollments
|
|
})
|
|
|
|
@login_required
|
|
def student_schedule(request):
|
|
student = get_object_or_404(Student, profile__user=request.user)
|
|
enrollments = LessonEnrollment.objects.filter(student=student).select_related('lesson')
|
|
return render(request, 'student/schedule.html', {
|
|
'student': student,
|
|
'enrollments': enrollments
|
|
})
|
|
|
|
@login_required
|
|
def student_progress(request):
|
|
student = get_object_or_404(Student, profile__user=request.user)
|
|
progress = StudentProgress.objects.get_or_create(student=student)[0]
|
|
return render(request, 'student/progress.html', {
|
|
'student': student,
|
|
'progress': progress
|
|
})
|
|
|
|
@login_required
|
|
def student_profile(request):
|
|
student = get_object_or_404(Student, profile__user=request.user)
|
|
return render(request, 'student/profile.html', {'student': student})
|
|
|
|
@login_required
|
|
def edit_student_profile(request):
|
|
student = get_object_or_404(Student, profile__user=request.user)
|
|
if request.method == 'POST':
|
|
form = StudentProfileForm(request.POST, request.FILES, instance=student)
|
|
if form.is_valid():
|
|
form.save()
|
|
messages.success(request, 'Профиль успешно обновлен!')
|
|
return redirect('student_profile')
|
|
else:
|
|
form = StudentProfileForm(instance=student)
|
|
return render(request, 'student/edit_profile.html', {'form': form})
|
|
|
|
@login_required
|
|
def lesson_list(request):
|
|
student = get_object_or_404(Student, profile__user=request.user)
|
|
enrollments = LessonEnrollment.objects.filter(student=student).select_related('lesson')
|
|
return render(request, 'student/lesson_list.html', {
|
|
'student': student,
|
|
'enrollments': enrollments
|
|
})
|
|
|
|
@login_required
|
|
def lesson_detail(request, pk):
|
|
student = get_object_or_404(Student, profile__user=request.user)
|
|
lesson = get_object_or_404(Lesson, pk=pk)
|
|
enrollment = get_object_or_404(LessonEnrollment, student=student, lesson=lesson)
|
|
return render(request, 'student/lesson_detail.html', {
|
|
'student': student,
|
|
'lesson': lesson,
|
|
'enrollment': enrollment
|
|
})
|
|
|
|
def student_list(request):
|
|
students = Student.objects.all().order_by('user__last_name', 'user__first_name')
|
|
return render(request, 'student/student_list.html', {'students': students})
|
|
|
|
@login_required
|
|
def student_detail(request, pk):
|
|
student = get_object_or_404(Student, pk=pk)
|
|
enrolled_lessons = Lesson.objects.filter(enrolled_students=student)
|
|
return render(request, 'student/student_detail.html', {
|
|
'student': student,
|
|
'enrolled_lessons': enrolled_lessons
|
|
})
|
|
|
|
@login_required
|
|
def student_schedule(request, pk):
|
|
student = get_object_or_404(Student, pk=pk)
|
|
enrolled_lessons = Lesson.objects.filter(enrolled_students=student).order_by('date', 'start_time')
|
|
return render(request, 'student/student_schedule.html', {
|
|
'student': student,
|
|
'enrolled_lessons': enrolled_lessons
|
|
}) |