# 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(): # Получить все попытки # Пройтись по комментариям по порядку # Если в тексте преподавателя есть Отправлено на доработку! # Задача принята!
- одобрено 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 'Задача принята!
' in n.text.encode('utf8'): #print 'Нашел одобрение' _tmp.success = True _tmp.f_date = n.date _tmp.save() do = True elif 'Отправлено на доработку!
' 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()