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

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
})