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.
 
 
 
 
 
 

60 lines
2.1 KiB

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:
if pivot['finish_date'] and not pivot['finish_date'] == 'None':
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')
pv.finish_date = datetime.strptime(pivot['finish_date'].split('.')[0], '%Y-%m-%d %H:%M:%S')
pv.status = ProgressLesson.STATUSES.done
pv.save()