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 course_service.courses.models import Vertex from storage.models import Comment, File from access.models.other import PivotProgressVertex, Progress if __name__ == '__main__': csv.field_size_limit(500 * 1024 * 1024) 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': try: c = Comment.objects.create( id=row['id'], email=row['owner__email'], text=row['text'], key=''.join(random.choice(string.ascii_letters) for x in range(15)), ) except IntegrityError: c = Comment.objects.get(id=row['id']) for file_id in row['files'].split("[")[1].split("]")[0].split(", "): if file_id: c.files.add(File.objects.get(id=file_id)) c.date = row['date'] c.save() parent_id = int(row['parent_id']) if row['type'] == 'task': parent_id += 50 vertex = Vertex.objects.get(id=parent_id) vertex_key = vertex.token comment_key = c.key progress = Progress( route=vertex.topic.course.route.out_key, user=get_user_model().objects.get(email=row['student'])) pv, _is_create = PivotProgressVertex.objects.get_or_create( vertex=vertex_key, progress=progress, teacher=get_user_model().objects.get(email=row['teacher']), ) pv.status = 0 if row['status'] == 'Отклонено' else 2 if row['status'] == 'Отклонено' else 1 pv.save()