diff --git a/courses/models.py b/courses/models.py index 05dc6a3..9745faa 100755 --- a/courses/models.py +++ b/courses/models.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) diff --git a/courses/serializers.py b/courses/serializers.py index e76c8e9..e64aa79 100644 --- a/courses/serializers.py +++ b/courses/serializers.py @@ -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): diff --git a/csv/load_courses.py b/csv/load_courses.py index 76a492a..c85e103 100644 --- a/csv/load_courses.py +++ b/csv/load_courses.py @@ -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) diff --git a/csv/load_perm.py b/csv/load_perm.py new file mode 100644 index 0000000..ee180e6 --- /dev/null +++ b/csv/load_perm.py @@ -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']) \ No newline at end of file