You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
252 lines
9.4 KiB
252 lines
9.4 KiB
#! coding: utf-8
|
|
|
|
from django.contrib import admin
|
|
from django.db.models import Q
|
|
from django.http import HttpResponse
|
|
|
|
from access.models import User
|
|
from journals.models import TeacherJ, LessonJ, HomeworkJ, \
|
|
ExamJ, AchievementJ, HomeworkTry, \
|
|
ExamTry, CourseThemeJ, DiplomaJ, ReportDepth
|
|
from import_export.admin import ImportExportModelAdmin
|
|
|
|
|
|
def export_xls(modeladmin, request, queryset):
|
|
import xlwt
|
|
response = HttpResponse(content_type='application/ms-excel')
|
|
response['Content-Disposition'] = 'attachment; filename=report.xls'
|
|
wb = xlwt.Workbook(encoding='utf-8')
|
|
ws = wb.add_sheet("MyModel")
|
|
|
|
row_num = 0
|
|
|
|
columns = [
|
|
(u"ID Студента", 3000),
|
|
(u"ФИО", 6000),
|
|
(u"Email", 8000),
|
|
(u'Порядок темы урока', 1000),
|
|
(u'Тема урока', 16000),
|
|
(u'Порядок урока', 1000),
|
|
(u"Урок", 16000),
|
|
(u"ДЗ", 16000),
|
|
(u'Тема ДЗ', 16000),
|
|
(u'Порядок темы ДЗ', 1000),
|
|
(u"Преподаватель", 6000),
|
|
(u"Курс", 6000),
|
|
]
|
|
|
|
font_style = xlwt.XFStyle()
|
|
font_style.font.bold = True
|
|
|
|
for col_num in range(len(columns)):
|
|
ws.write(row_num, col_num, columns[col_num][0], font_style)
|
|
# set column width
|
|
ws.col(col_num).width = columns[col_num][1]
|
|
|
|
font_style = xlwt.XFStyle()
|
|
font_style.alignment.wrap = 1
|
|
|
|
for obj in queryset:
|
|
row_num += 1
|
|
row = [
|
|
obj.student.id if obj.student else '-',
|
|
obj.student.get_full_name() if obj.student else '-',
|
|
obj.student.email if obj.student else '-',
|
|
obj.lesson.theme.sort if obj.lesson else '-',
|
|
obj.lesson.theme.get_title() if obj.lesson else '-',
|
|
obj.lesson.sort if obj.lesson else '-',
|
|
obj.lesson.get_title() if obj.lesson else '-',
|
|
obj.homework.get_title() if obj.homework else '-',
|
|
obj.homework.theme.get_title() if obj.homework else '-',
|
|
obj.homework.theme.sort if obj.homework else '-',
|
|
obj.teacher.get_short_name() if obj.teacher else '-',
|
|
obj.course.get_title() if obj.course else '-',
|
|
]
|
|
for col_num in range(len(row)):
|
|
ws.write(row_num, col_num, row[col_num], font_style)
|
|
|
|
wb.save(response)
|
|
return response
|
|
|
|
|
|
export_xls.short_description = u"Export XLS"
|
|
|
|
|
|
def export_hw_journals(modeladmin, request, queryset):
|
|
import xlwt
|
|
response = HttpResponse(content_type='application/ms-excel')
|
|
response['Content-Disposition'] = 'attachment; filename=report.xls'
|
|
wb = xlwt.Workbook(encoding='utf-8')
|
|
ws = wb.add_sheet("MyModel")
|
|
|
|
row_num = 0
|
|
|
|
columns = [
|
|
(u"ID Студента", 3000),
|
|
(u"ФИО", 6000),
|
|
(u"Email", 8000),
|
|
(u'Порядок темы', 1000),
|
|
(u'Тема', 16000),
|
|
(u'Преподаватель', 1000)
|
|
]
|
|
|
|
font_style = xlwt.XFStyle()
|
|
font_style.font.bold = True
|
|
|
|
for col_num in range(len(columns)):
|
|
ws.write(row_num, col_num, columns[col_num][0], font_style)
|
|
# set column width
|
|
ws.col(col_num).width = columns[col_num][1]
|
|
|
|
font_style = xlwt.XFStyle()
|
|
font_style.alignment.wrap = 1
|
|
|
|
for obj in queryset:
|
|
row_num += 1
|
|
row = [
|
|
obj.student.id if obj.student else '-',
|
|
obj.student.get_full_name() if obj.student else '-',
|
|
obj.student.email if obj.student else '-',
|
|
obj.material.theme.sort if obj.material else '-',
|
|
obj.material.theme.get_title() if obj.material else '-',
|
|
obj.teacher.get_full_name() if obj.teacher else '-'
|
|
]
|
|
for col_num in range(len(row)):
|
|
ws.write(row_num, col_num, row[col_num], font_style)
|
|
|
|
wb.save(response)
|
|
return response
|
|
|
|
|
|
export_xls.short_description = u"Отчет по сдаче"
|
|
|
|
|
|
class TeacherJAdmin(admin.ModelAdmin):
|
|
list_display = ('get_student_name', 'get_student_email', 'lesson', 'homework', 'teacher', 'course', 'start_date', 'progress', )
|
|
search_fields = ['current_token', 'student__email', 'student__id']
|
|
list_filter = ['course', 'status']
|
|
filter_horizontal = ('waiting', )
|
|
actions = [export_xls]
|
|
|
|
def get_student_email(self, instance):
|
|
return instance.student.email if instance.student else ''
|
|
|
|
def get_student_name(self, instance):
|
|
return instance.student.get_full_name() if instance.student else ''
|
|
|
|
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
|
|
if db_field.name == "teacher":
|
|
kwargs["queryset"] = User.objects.filter(in_role='T')
|
|
return super(TeacherJAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
|
|
|
|
admin.site.register(TeacherJ, TeacherJAdmin)
|
|
|
|
|
|
class LessonJAdmin(admin.ModelAdmin):
|
|
list_display = ('student', 'material', 'parent', 'success', 'date', 'f_date',)
|
|
list_filter = ['success', 'material__course', 'date', 'f_date']
|
|
raw_id_fields = ['parent', 'student']
|
|
search_fields = ['student__id', 'student__email']
|
|
|
|
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
|
|
if db_field.name == "teacher":
|
|
kwargs["queryset"] = User.objects.filter(in_role='T')
|
|
return super(LessonJAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
|
|
|
|
admin.site.register(LessonJ, LessonJAdmin)
|
|
|
|
|
|
class HomeworkJAdmin(admin.ModelAdmin):
|
|
list_display = ('student', 'parent', 'get_courese_title', 'success', 'date', 'f_date', 'teacher', 'get_url', )
|
|
raw_id_fields = ['student', 'parent']
|
|
list_filter = ['material__course', 'success', 'date', 'f_date']
|
|
search_fields = ['student__email', 'student__id']
|
|
actions = [export_hw_journals]
|
|
|
|
def get_courese_title(self, instance):
|
|
return instance.material.course.get_title()
|
|
|
|
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
|
|
if db_field.name == "teacher":
|
|
kwargs["queryset"] = User.objects.filter(in_role='T')
|
|
return super(HomeworkJAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
|
|
|
|
admin.site.register(HomeworkJ, HomeworkJAdmin)
|
|
|
|
|
|
class ExamJAdmin(admin.ModelAdmin):
|
|
list_display = ('student', 'date', 'f_date', 'success', 'teacher', 'get_url', )
|
|
list_filter = ['material__course', 'success', 'date', 'f_date']
|
|
search_fields = ['student__email']
|
|
|
|
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
|
|
if db_field.name == "teacher":
|
|
kwargs["queryset"] = User.objects.filter(in_role__in=['T'])
|
|
return super(ExamJAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
|
|
|
|
admin.site.register(ExamJ, ExamJAdmin)
|
|
|
|
|
|
class HomeworkTryAdmin(admin.ModelAdmin):
|
|
list_display = ('student', 'get_status_flag', 'material', 'date', 'f_date', 'success', 'expired', 'teacher', 'parent', 'get_url',)
|
|
search_fields = ['student__email', 'parent__id', 'student__id']
|
|
list_filter = ('material__course', 'expired', 'date', 'f_date', )
|
|
raw_id_fields = ['student', 'parent']
|
|
filter_horizontal = ['comments']
|
|
|
|
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
|
|
if db_field.name == "teacher":
|
|
kwargs["queryset"] = User.objects.filter(in_role__in=['T'])
|
|
return super(HomeworkTryAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
|
|
|
|
def get_status_flag(self, instance):
|
|
return instance.get_status()['title']
|
|
|
|
admin.site.register(HomeworkTry, HomeworkTryAdmin)
|
|
|
|
|
|
class ExamTryAdmin(admin.ModelAdmin):
|
|
list_display = ('parent', 'get_status_flag', 'student', 'date', 'f_date', 'success', 'expired', 'teacher')
|
|
search_fields = ['student__email', 'parent__id', 'student__id']
|
|
list_filter = ('material__course', 'expired', 'date', 'f_date')
|
|
raw_id_fields = ['student', 'parent']
|
|
|
|
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
|
|
if db_field.name == "teacher":
|
|
kwargs["queryset"] = User.objects.filter(in_role__in=['T'])
|
|
return super(ExamTryAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
|
|
|
|
def get_status_flag(self, instance):
|
|
return instance.get_status()['title']
|
|
|
|
admin.site.register(ExamTry, ExamTryAdmin)
|
|
|
|
|
|
class CourseThemeJAdmin(admin.ModelAdmin):
|
|
list_display = ('id', 'material', 'parent', 'student', 'date', 'f_date', )
|
|
search_fields = ['student__email', 'student__id', 'material__title', 'material__id']
|
|
list_filter = ['material__course', 'success', 'date', 'f_date']
|
|
|
|
admin.site.register(CourseThemeJ, CourseThemeJAdmin)
|
|
|
|
|
|
class AchievementJAdmin(admin.ModelAdmin):
|
|
list_display = ('title', 'student', 'achievement', 'date', 'got',)
|
|
|
|
admin.site.register(AchievementJ, AchievementJAdmin)
|
|
|
|
|
|
class DiplomaJAdmin(admin.ModelAdmin):
|
|
list_display = ('parent', 'material', 'student', 'date', 'key', 'out_image', 'in_image', 'gen')
|
|
search_fields = ('key', 'student__email', 'student__fname', 'student__name', 'student__oname')
|
|
list_filter = ['material']
|
|
|
|
|
|
admin.site.register(DiplomaJ, DiplomaJAdmin)
|
|
|
|
|
|
class ReportDepthAdmin(admin.ModelAdmin):
|
|
list_display = ('token', 'student', 'teacher', 'course', 's_date', 'f_date', 'flag')
|
|
|
|
|
|
admin.site.register(ReportDepth, ReportDepthAdmin)
|
|
|