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.
 
 
 
 
 
 

87 lines
3.3 KiB

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_exist = Comment.objects.filter(
text=row['text'] or row['bb_text'],
user_key=get_user_model().objects.get(email=row['owner__email']).out_key,
date=row['date']
).exists()
if not comment_exist:
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.finish_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()