|
|
|
@ -33,7 +33,7 @@ COURSE_DIRECTION = ( |
|
|
|
|
|
|
|
|
|
|
|
class CourseManager(models.Manager): |
|
|
|
class CourseManager(models.Manager): |
|
|
|
@transaction_decorator |
|
|
|
@transaction_decorator |
|
|
|
def update_or_create_course(self, image=None, big_image=None, id=0, |
|
|
|
def update_or_create_course(self, image=None, big_image=None, id=0, route=None, |
|
|
|
big_mobile_image=None, mentors=None, slug=None, |
|
|
|
big_mobile_image=None, mentors=None, slug=None, |
|
|
|
teachers=None, level=None, direction=None, **kwargs): |
|
|
|
teachers=None, level=None, direction=None, **kwargs): |
|
|
|
|
|
|
|
|
|
|
|
@ -54,6 +54,9 @@ class CourseManager(models.Manager): |
|
|
|
if direction: |
|
|
|
if direction: |
|
|
|
kwargs['direction'] = get_real_name(COURSE_DIRECTION, direction) |
|
|
|
kwargs['direction'] = get_real_name(COURSE_DIRECTION, direction) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if route: |
|
|
|
|
|
|
|
kwargs['route'] = CourseRoute.objects.get(id=route) |
|
|
|
|
|
|
|
|
|
|
|
try: |
|
|
|
try: |
|
|
|
course = self.get(id=id) |
|
|
|
course = self.get(id=id) |
|
|
|
for i in kwargs: |
|
|
|
for i in kwargs: |
|
|
|
@ -62,6 +65,7 @@ class CourseManager(models.Manager): |
|
|
|
course.save() |
|
|
|
course.save() |
|
|
|
except ObjectDoesNotExist: |
|
|
|
except ObjectDoesNotExist: |
|
|
|
kwargs['slug'] = slug |
|
|
|
kwargs['slug'] = slug |
|
|
|
|
|
|
|
kwargs['route'] = CourseRoute.objects.create(name="Основной шаблон") |
|
|
|
course = self.create(**kwargs) |
|
|
|
course = self.create(**kwargs) |
|
|
|
CourseMap.objects.create(course=course) |
|
|
|
CourseMap.objects.create(course=course) |
|
|
|
|
|
|
|
|
|
|
|
@ -214,21 +218,8 @@ class Vertex(models.Model): |
|
|
|
def __str__(self): |
|
|
|
def __str__(self): |
|
|
|
return self.title + ': ' + str(self.content_type.model) |
|
|
|
return self.title + ': ' + str(self.content_type.model) |
|
|
|
|
|
|
|
|
|
|
|
def get_next(self, vertex_model_list=None): |
|
|
|
def get_next(self, route): |
|
|
|
if vertex_model_list is None: |
|
|
|
return route.get_first().get_next(self) |
|
|
|
vertex_model_list = ['topic', 'tutorial', 'task'] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
for i in vertex_model_list: |
|
|
|
|
|
|
|
if i not in ['topic', 'tutorial', 'task']: |
|
|
|
|
|
|
|
raise ValueError('undefined model: ' + i) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vertex_id = CourseMap.objects.get(course=self.course).get_next(self.id) |
|
|
|
|
|
|
|
vertex = Vertex.objects.get(id=int(vertex_id), ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if vertex.content_type.model in vertex_model_list: |
|
|
|
|
|
|
|
return vertex |
|
|
|
|
|
|
|
return vertex.get_next(vertex_model_list) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_previous(self, vertex_model_list=None): |
|
|
|
def get_previous(self, vertex_model_list=None): |
|
|
|
if vertex_model_list is None: |
|
|
|
if vertex_model_list is None: |
|
|
|
|