import csv import django import os import sys import json from datetime import datetime from django.db import IntegrityError sys.path.append("../") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") django.setup() from django.contrib.auth.models import Group from django.contrib.auth import get_user_model from progress.models import ProgressLesson, Progress from courses.models import Lesson, Course if __name__ == '__main__': Progress.objects.all().delete() ProgressLesson.objects.all().delete() with open('./access/progress.csv') as progress_csv: progress_reader = csv.DictReader(progress_csv) for row in progress_reader: course = Course.objects.get(slug=row['course']) try: teacher = get_user_model().objects.get(email=row['teacher']) user = get_user_model().objects.get(email=row['user']) except get_user_model().DoesNotExist: continue try: p = Progress.objects.create( course_token=course.token, user=user, teacher=teacher, ) except IntegrityError: continue g = Group.objects.get(name='students') g.user_set.add(user) pivots = json.loads(row['success']) for pivot in pivots: l = Lesson.objects.get(old_id=pivot['id']) pv = ProgressLesson.objects.create( progress=p, lesson_token=l.token, checker=get_user_model().objects.get(email=pivot['teacher']) if l.is_hm else p.user, ) pv.start_date = datetime.strptime(pivot['start_date'].split('.')[0], '%Y-%m-%d %H:%M:%S') if pivot['finish_date'] and not pivot['finish_date'] == 'None': pv.finish_date = datetime.strptime(pivot['finish_date'].split('.')[0], '%Y-%m-%d %H:%M:%S') pv.status = ProgressLesson.STATUSES.done pv.save()