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

# 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()