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.
63 lines
2.0 KiB
63 lines
2.0 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:
|
|
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()
|
|
|