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

78 lines
2.6 KiB
Python

from django.shortcuts import render
from django.contrib.auth.decorators import login_required, user_passes_test
from .models import CourseAnalytics, InstructorAnalytics, StudentAnalytics
from schedule.models import Course, Lesson, LessonEnrollment
from instructor.models import Instructor
from student.models import Student
import json
from django.http import HttpResponse
def is_admin(user):
return user.profile.user_type == 'admin'
@login_required
@user_passes_test(is_admin)
def analytics_dashboard(request):
course_analytics = CourseAnalytics.objects.all()
instructor_analytics = InstructorAnalytics.objects.all()
student_analytics = StudentAnalytics.objects.all()
return render(request, 'analytics/dashboard.html', {
'course_analytics': course_analytics,
'instructor_analytics': instructor_analytics,
'student_analytics': student_analytics
})
@login_required
@user_passes_test(is_admin)
def course_analytics(request):
courses = Course.objects.all()
analytics = CourseAnalytics.objects.filter(course__in=courses)
return render(request, 'analytics/course_analytics.html', {
'courses': courses,
'analytics': analytics
})
@login_required
@user_passes_test(is_admin)
def instructor_analytics(request):
instructors = Instructor.objects.all()
analytics = InstructorAnalytics.objects.filter(instructor__in=instructors)
return render(request, 'analytics/instructor_analytics.html', {
'instructors': instructors,
'analytics': analytics
})
@login_required
@user_passes_test(is_admin)
def student_analytics(request):
students = Student.objects.all()
analytics = StudentAnalytics.objects.filter(student__in=students)
return render(request, 'analytics/student_analytics.html', {
'students': students,
'analytics': analytics
})
@login_required
@user_passes_test(is_admin)
def generate_reports(request):
# Здесь будет логика генерации отчетов
return render(request, 'analytics/reports.html')
@login_required
@user_passes_test(is_admin)
def export_data(request):
data = {
'courses': list(Course.objects.values()),
'instructors': list(Instructor.objects.values()),
'students': list(Student.objects.values()),
'lessons': list(Lesson.objects.values()),
'enrollments': list(LessonEnrollment.objects.values())
}
response = HttpResponse(
json.dumps(data, ensure_ascii=False),
content_type='application/json'
)
response['Content-Disposition'] = 'attachment; filename="analytics_data.json"'
return response