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.
 
 
 
 
 
 

69 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 access.models.other import Progress, ProgressLesson
from courses.models import Lesson, Course
def find_id(old_id):
with open('./course/old_new_id.csv') as id_csv:
id_reader = csv.DictReader(id_csv)
r = [a['new_id'] for a in id_reader if int(a['old_id']) == old_id][0]
return r
if __name__ == '__main__':
Progress.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:
try:
pv = ProgressLesson.objects.create(
progress=p,
lesson_token=find_id(pivot['id']),
teacher=get_user_model().objects.get(email=pivot['teacher']),
)
if pivot['date'] and not pivot['date'] == 'None':
pv.date = datetime.strptime(pivot['date'].split('.')[0], '%Y-%m-%d %H:%M:%S')
pv.status = 2
pv.save()
except Lesson.DoesNotExist:
pass