зависимости

feature/fix_generate_pass
Andrey 8 years ago
parent d3bf1db1a2
commit 057dc2b1aa
  1. 25
      access/migrations/0004_auto_20180112_1123.py
  2. 7
      access/models/other.py
  3. 22540
      csv/access/progress.csv
  4. 123
      csv/load_courses.py
  5. 43
      csv/load_perm.py

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2018-01-12 11:23
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('access', '0003_remove_progresslesson_comment'),
]
operations = [
migrations.AlterField(
model_name='progress',
name='course_token',
field=models.UUIDField(editable=False, verbose_name='Токен курса'),
),
migrations.AlterField(
model_name='progresslesson',
name='lesson_token',
field=models.UUIDField(editable=False, verbose_name='Токен урока'),
),
]

@ -53,7 +53,7 @@ class Progress(models.Model):
teacher = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name="Преподователь по умолчанию", teacher = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name="Преподователь по умолчанию",
related_name='teacher_progress') related_name='teacher_progress')
user = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name='Студент') user = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name='Студент')
course_token = models.UUIDField(verbose_name="Токен курса", unique=True, editable=False) course_token = models.UUIDField(verbose_name="Токен курса", editable=False)
def __str__(self): def __str__(self):
return '%s' % (self.user.email,) return '%s' % (self.user.email,)
@ -66,10 +66,13 @@ class Progress(models.Model):
class ProgressLesson(models.Model): class ProgressLesson(models.Model):
progress = models.ForeignKey(to=Progress) progress = models.ForeignKey(to=Progress)
lesson_token = models.UUIDField(verbose_name="Токен урока", unique=True, editable=False) lesson_token = models.UUIDField(verbose_name="Токен урока", editable=False)
teacher = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name="Преподователь",) teacher = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name="Преподователь",)
date = models.DateTimeField(verbose_name='Дата зачтения задания', blank=True, null=True) date = models.DateTimeField(verbose_name='Дата зачтения задания', blank=True, null=True)
def __str__(self):
return self.lesson_token
class Meta: class Meta:
verbose_name = 'Прохождение уроков' verbose_name = 'Прохождение уроков'
verbose_name_plural = 'Прохождение урока' verbose_name_plural = 'Прохождение урока'

File diff suppressed because one or more lines are too long

@ -14,91 +14,76 @@ from courses.models import Course, Lesson, Topic, Demand, LessonDemand
from storage.models import File from storage.models import File
if __name__ == '__main__': if __name__ == '__main__':
Course.objects.all().delete() Topic.objects.all().delete()
with open('./course/course.csv') as user_csv: # with open('./course/course.csv') as user_csv:
user_reader = csv.DictReader(user_csv) # user_reader = csv.DictReader(user_csv)
for row in user_reader: # for row in user_reader:
row = dict(row) # row = dict(row)
teachers = row.pop('teachers', None).split("[")[1].split("]")[0].split(", ") # teachers = row.pop('teachers', None).split("[")[1].split("]")[0].split(", ")
course, _is_create = Course.objects.get_or_create(**row) # course, _is_create = Course.objects.get_or_create(**row)
#
# try:
# for teacher in teachers:
# teacher = teacher.replace("\'", "")
# if teacher:
# teacher = get_user_model().objects.get(email=teacher).out_key
# InApiTeacher.add_teacher(course.slug, teacher)
#
# except get_user_model().DoesNotExist:
# print('Плохо')
try: with open('./course/old_new_id.csv', 'w') as write_id_csv:
for teacher in teachers: writer = csv.writer(write_id_csv)
teacher = teacher.replace("\'", "") writer.writerow(['old_id', 'new_id'])
if teacher: with open('./course/vertex.csv') as vertex_csv:
teacher = get_user_model().objects.get(email=teacher).out_key t_sort = 0
InApiTeacher.add_teacher(course.slug, teacher) l_sort = 0
vertex_reader = csv.DictReader(vertex_csv)
except get_user_model().DoesNotExist: for row in vertex_reader:
print('Плохо') row = dict(row)
model_type = row.pop('type', None)
with open('./course/vertex.csv') as vertex_csv: description = row.pop('description', None)
t_sort = 0 title = row.pop('title', None)
l_sort = 0 pk = row.pop('id', None)
vertex_reader = csv.DictReader(vertex_csv)
for row in vertex_reader:
row = dict(row)
model_type = row.pop('type', None)
description = row.pop('description', None)
title = row.pop('title', None)
pk = row.pop('id', None)
try:
m = row.pop('materials', None)
materials = [] materials = []
if m: try:
materials = [File.objects.get(id=i).key for i in m.split("[")[1].split("]")[0].split(", ")] m = row.pop('materials', None)
except ValueError: if m:
pass materials = [File.objects.get(id=i).key for i in m.split("[")[1].split("]")[0].split(", ")]
except ValueError:
if model_type == 'topic': pass
t_sort += 1
course = Course.objects.get(slug=row.pop('course', None))
Topic.objects.create(
id=pk,
icon=row.pop('icon', None),
course=course,
description=description,
title=title,
sort=t_sort,
)
try: if model_type == 'topic':
topic_id = row.pop('topic', None) t_sort += 1
if model_type == 'tutorial': course = Course.objects.get(slug=row.pop('course', None))
l_sort += 1 Topic.objects.create(
topic = Topic.objects.get(id=topic_id) id=pk,
small_vertex = Lesson.objects.create( icon=row.pop('icon', None),
video=row.pop('video', None), course=course,
material_tokens=materials,
topic=topic,
free=row['free'],
description=description, description=description,
title=title, title=title,
sort=l_sort, sort=t_sort,
)
LessonDemand.objects.create(
lesson=small_vertex,
demand=Demand.objects.get(name="Стандартные требования"),
) )
if model_type == 'task': else:
topic_id = row.pop('topic', None)
l_sort += 1 l_sort += 1
topic = Topic.objects.get(id=topic_id) topic = Topic.objects.get(id=topic_id)
small_vertex = Lesson.objects.create( small_vertex = Lesson.objects.create(
video=row.pop('video', None),
material_tokens=materials, material_tokens=materials,
topic=topic, topic=topic,
free=row['free'],
description=description, description=description,
title=title, title=title,
sort=l_sort, sort=l_sort,
) )
LessonDemand.objects.create( writer.writerow([pk, small_vertex.token])
lesson=small_vertex,
demand=Demand.objects.get(name="Стандартные требования"),
)
except Topic.DoesNotExist: if model_type == 'task':
pass LessonDemand.objects.create(
lesson=small_vertex,
demand=Demand.objects.get(name="Стандартные требования"),
)

@ -6,6 +6,8 @@ import json
from datetime import datetime from datetime import datetime
from django.db import IntegrityError
sys.path.append("../") sys.path.append("../")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
django.setup() django.setup()
@ -15,43 +17,45 @@ from django.contrib.auth import get_user_model
from access.models.other import Progress, ProgressLesson from access.models.other import Progress, ProgressLesson
from courses.models import Lesson, Course 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__': if __name__ == '__main__':
Progress.objects.all().delete() Progress.objects.all().delete()
with open('./access/progress.csv') as progress_csv: with open('./access/progress.csv') as progress_csv:
progress_reader = csv.DictReader(progress_csv) progress_reader = csv.DictReader(progress_csv)
for row in progress_reader: for row in progress_reader:
course = Course.objects.get(id=row['course']) course = Course.objects.get(slug=row['course'])
route = course.route.out_key
api = OutApiRoute
list_vertex = OutApiRoute.get_route_matrix(route)[0]
try: try:
user = get_user_model().objects.get(id=row['user']) teacher = get_user_model().objects.get(email=row['teacher'])
user = get_user_model().objects.get(email=row['user'])
except get_user_model().DoesNotExist: except get_user_model().DoesNotExist:
print(row['user'])
continue continue
try: try:
p = Progress.objects.get(
course=course.slug,
user=user,
teacher=get_user_model().objects.get(id=row['teacher']),
)
except Progress.DoesNotExist:
p = Progress.objects.create( p = Progress.objects.create(
course=course.slug, course_token=course.token,
user=user, user=user,
teacher=get_user_model().objects.get(id=row['teacher']), teacher=teacher,
) )
except IntegrityError:
continue
g = Group.objects.get(name='students')
g.user_set.add(user)
pivots = json.loads(row['success']) pivots = json.loads(row['success'])
for pivot in pivots: for pivot in pivots:
try: try:
pv = ProgressLesson.objects.create( pv = ProgressLesson.objects.create(
progress=p, progress=p,
vertex=Lesson.objects.get(id=pivot['id']).token, lesson_token=find_id(pivot['id']),
teacher=get_user_model().objects.get(id=pivot['teacher']), teacher=get_user_model().objects.get(email=pivot['teacher']),
status='wait',
) )
if pivot['date'] and not pivot['date'] == 'None': if pivot['date'] and not pivot['date'] == 'None':
@ -62,5 +66,4 @@ if __name__ == '__main__':
except Lesson.DoesNotExist: except Lesson.DoesNotExist:
pass pass
g = Group.objects.get(name='students')
g.user_set.add(user)

Loading…
Cancel
Save