import csv import random import string import django import os import sys from django.contrib.auth import get_user_model from django.db import IntegrityError sys.path.append("../") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") django.setup() from storage.models import Comment, File from courses.models import Lesson from progress.models import ProgressLesson, Progress if __name__ == '__main__': csv.field_size_limit(500 * 1024 * 1024) Comment.objects.all().delete() ProgressLesson.objects.all().update(comment_tokens=[]) with open('./management/comment.csv') as comment_csv: comment_reader = csv.DictReader(comment_csv) for row in comment_reader: if row['type'] == 'task' or row['type'] == 'exam': l = Lesson.objects.get(old_id=row['parent_id']) try: p = ProgressLesson.objects.get( lesson_token=l.token, progress__user__email=row['student'], ) except ProgressLesson.DoesNotExist: try: pr = Progress.objects.create( course_token=l.topic.course.token, user=get_user_model().objects.get(email=row['student']), teacher=get_user_model().objects.get(email=row['teacher']), ) except IntegrityError: pr = Progress.objects.get( course_token=l.topic.course.token, user=get_user_model().objects.get(email=row['student']), ) p = ProgressLesson.objects.create( lesson_token=l.token, checker=get_user_model().objects.get(email=row['teacher']), progress=pr, ) files = [File.objects.get(id=file) for file in row['files'].split("[")[1].split("]")[0].split(',') if not file == ''] comment = Comment.objects.create( text=row['text'] or row['bb_text'], user_key=get_user_model().objects.get(email=row['owner__email']).out_key, ) if row['status'] == 'Одобренно': p.status = ProgressLesson.STATUSES.done p.date = row['date'] elif row['status'] == 'Отклонено': p.status = ProgressLesson.STATUSES.fail p.comment_tokens.append(comment.token) p.save() [comment.files.add(file) for file in files] comment.date = row['date'] comment.save() for i in ProgressLesson.objects.filter(comment_tokens__isnull=False): if len(i.comment_tokens) % 2 == 1: i.status = ProgressLesson.STATUSES.wait i.save()