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.
121 lines
4.5 KiB
121 lines
4.5 KiB
# coding=utf-8
|
|
import os
|
|
|
|
import django
|
|
import sys
|
|
|
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
|
|
django.setup()
|
|
from courses.models import CourseTheme, Course
|
|
from journals.models import HomeworkTry as HT, TeacherJ, CourseThemeJ, LessonJ, HomeworkJ, ExamJ
|
|
|
|
|
|
def split_ht():
|
|
# Разделить комментарии по попыткам
|
|
print '==== Разбиваю попытки'
|
|
big_length = HT.objects.all().count()
|
|
_now = 0
|
|
show_progress(big_length, _now)
|
|
for i in HT.objects.all():
|
|
# Получить все попытки
|
|
# Пройтись по комментариям по порядку
|
|
# Если в тексте преподавателя есть <span class="label label-danger">Отправлено на доработку!</span>
|
|
# <span class="label label-success">Задача принята! </span><br> - одобрено
|
|
do = True
|
|
for n in i.comments.all().order_by('id'):
|
|
if do:
|
|
_tmp = HT.objects.create(parent=i.parent, material=i.material, student=i.student, teacher=i.teacher,
|
|
date=i.date, f_date=i.f_date)
|
|
do = False
|
|
if '<span class="label label-success">Задача принята! </span><br>' in n.text.encode('utf8'):
|
|
#print 'Нашел одобрение'
|
|
_tmp.success = True
|
|
_tmp.f_date = n.date
|
|
_tmp.save()
|
|
do = True
|
|
elif '<span class="label label-danger">Отправлено на доработку!</span><br>' in n.text.encode('utf8'):
|
|
#print 'Нашел отказ'
|
|
_tmp.success = False
|
|
_tmp.f_date = n.date
|
|
_tmp.save()
|
|
do = True
|
|
#print 'Добавил комментарий в попытку {0}'.format(_tmp.id)
|
|
_tmp.comments.add(n)
|
|
i.delete()
|
|
_now += 1
|
|
show_progress(big_length, _now)
|
|
print ''
|
|
|
|
|
|
def CTJ_split():
|
|
print '==== Создаю журналы тем'
|
|
# TODO: Не нужно создавать тему там, где нет журналов?
|
|
# Присвоить журналы тем домашним работам/ урокам/ экзаменам
|
|
big_length = TeacherJ.objects.all().count()
|
|
_now = 0
|
|
show_progress(big_length, _now)
|
|
for journal in TeacherJ.objects.all():
|
|
for theme in CourseTheme.objects.filter(course=journal.course):
|
|
CTJ = CourseThemeJ.objects.create(parent=journal, material=theme, student=journal.student)
|
|
if CTJ.material.type == 'B':
|
|
for lesson in LessonJ.objects.filter(material__theme=theme, student=journal.student):
|
|
if lesson.parent != CTJ:
|
|
lesson.parent = CTJ
|
|
lesson.save()
|
|
for homework in HomeworkJ.objects.filter(material__theme=theme, student=journal.student):
|
|
if homework.parent != CTJ:
|
|
homework.parent = CTJ
|
|
homework.save()
|
|
|
|
elif CTJ.material.type == 'Ex':
|
|
try:
|
|
ex = ExamJ.objects.get(material__course=journal.course, student=journal.student)
|
|
except ExamJ.DoesNotExist:
|
|
pass
|
|
else:
|
|
ex.parent = CTJ
|
|
ex.save()
|
|
_now += 1
|
|
show_progress(big_length, _now, post=journal.id)
|
|
print ''
|
|
|
|
|
|
def empty_journals():
|
|
print '==== Создаю пустые журналы'
|
|
big_length = Course.objects.all().count()
|
|
_now = 0
|
|
show_progress(big_length, _now)
|
|
for course in Course.objects.all():
|
|
try:
|
|
TeacherJ.objects.create(course=course, student=None)
|
|
except:
|
|
continue
|
|
else:
|
|
_now += 1
|
|
show_progress(big_length, _now)
|
|
print ''
|
|
|
|
|
|
def show_progress(full, now, post=''):
|
|
# + Процесс отображения процентов выполнения
|
|
# Отображение процента выполнения
|
|
if full != 0:
|
|
progress = float(now / (full * 0.01))
|
|
else:
|
|
progress = '100'
|
|
sys.stdout.write(u'\rВыполнено: {0:6.4}% {1}'.format(progress, post))
|
|
sys.stdout.flush()
|
|
|
|
|
|
def rights():
|
|
os.system('chown www-data:www-data -R *')
|
|
|
|
|
|
def main():
|
|
rights()
|
|
#CTJ_split()
|
|
empty_journals()
|
|
#split_ht()
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
|