Миграции курсов

feature/fix_generate_pass
Andrey 8 years ago
parent dd6588769e
commit abf7720b93
  1. 9
      courses/models.py
  2. 2
      courses/serializers.py
  3. 13
      csv/load_courses.py
  4. 35
      csv/load_perm.py

@ -130,7 +130,6 @@ class Diploma(models.Model):
class VertexManager(models.Manager):
# Менеджер вершин графа.
@transaction_decorator
def create_with_dependencies(self, model, course, title, description, extra_data=None,
free=True, materials=None, parents=None, children=None):
@ -258,7 +257,7 @@ class CourseMap(models.Model):
def get_next(self, vertex_id) -> str:
res_list = self.map_to_list()
try:
return res_list[res_list.index(vertex_id)]
except ValueError:
raise ValueError("vertex_id " + str(vertex_id) + " not in list " + ",".join(res_list))
if not res_list[-1] == vertex_id:
return res_list[res_list.index(vertex_id)+1]
error = "vertex_id " + str(vertex_id) + " last object in list\n" + ",".join([str(v) for v in res_list])
raise ValueError(error)

@ -74,7 +74,7 @@ class CourseListSerializer(serializers.ModelSerializer):
@staticmethod
def get_direction(self):
return self.direction.title
return self.get_direction_display()
class CourseTreeSerializer(serializers.ModelSerializer):

@ -6,7 +6,7 @@ sys.path.append("../")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
django.setup()
from courses.models import Course, Vertex
from courses.models import Course, Vertex, CourseMap
from storage.models import Storage
if __name__ == '__main__':
@ -44,3 +44,14 @@ if __name__ == '__main__':
course = Course.objects.get(id=row.pop('course', None))
parents = [Vertex.objects.get(object_id=parent, content_type__model='topic')] if parent else []
Vertex.objects.create_with_dependencies(model=model, course=course, parents=parents, **row)
for course in Course.objects.all():
map_obj = []
for vertex in Vertex.objects.filter(course=course, content_type__model='topic'):
map_obj.append(vertex.id)
theme_map=[]
for small_vertex in vertex.children.all():
theme_map.append(small_vertex.id)
map_obj.append(theme_map)
CourseMap.objects.get_or_create(dependent_elements=map_obj, course=course)

@ -0,0 +1,35 @@
import os, sys, django, csv
sys.path.append("../")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
django.setup()
from django.contrib.auth import get_user_model
from access.models import Progress
from courses.models import Vertex
if __name__ == '__main__':
with open('./access/progress.csv') as progress_csv:
progress_reader = csv.DictReader(progress_csv)
for row in progress_reader:
vertex = None
if row['type'] == 'lesson':
vertex = Vertex.objects.get(content_type__model='tutorial', object_id=row['last_success_obj'])
elif row['type'] == 'homework':
vertex = Vertex.objects.get(content_type__model='task', object_id=row['last_success_obj'])
elif row['type'] == 'exam':
get_id = int(row['last_success_obj'])+10000
vertex = Vertex.objects.get(content_type__model='task', object_id=str(get_id))
if vertex:
try:
Progress.objects.get_or_create(
user=get_user_model().objects.get(id=row['user']),
course_id=row['course'],
active_obj=vertex.get_next()
)
except get_user_model().DoesNotExist:
print(row['user'])
Loading…
Cancel
Save