summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--yaksh/models.py20
-rw-r--r--yaksh/test_models.py12
2 files changed, 22 insertions, 10 deletions
diff --git a/yaksh/models.py b/yaksh/models.py
index ad64f2a..565bb23 100644
--- a/yaksh/models.py
+++ b/yaksh/models.py
@@ -151,21 +151,21 @@ class Course(models.Model):
objects = CourseManager()
+ def _create_duplicate_instance(self, creator, course_name=None):
+ new_course = self
+ new_course.id = None
+ new_course.name = course_name if course_name else self.name
+ new_course.creator = creator
+ new_course.save()
+ return new_course
+
def create_duplicate_course(self, user):
quizzes = self.quiz_set.all()
prerequisite_map = []
duplicate_quiz_map = {}
- new_course = Course.objects.create(creator=user,
- name="Copy Of {0}".format(self.name),
- enrollment=self.enrollment,
- active=self.active,
- is_trial=self.is_trial,
- instructions=self.instructions,
- start_enroll_time=self.start_enroll_time,
- end_enroll_time=self.end_enroll_time
- )
- new_course.teachers.add(*self.teachers.all())
+ new_course_name = "Copy Of {0}".format(self.name)
+ new_course = self._create_duplicate_instance(user, new_course_name)
for q in quizzes:
new_quiz = q._create_duplicate_quiz(new_course)
diff --git a/yaksh/test_models.py b/yaksh/test_models.py
index 5a61c0f..c86d9a3 100644
--- a/yaksh/test_models.py
+++ b/yaksh/test_models.py
@@ -8,6 +8,7 @@ from django.utils import timezone
import pytz
from django.contrib.auth.models import Group
from django.core.files import File
+from django.forms.models import model_to_dict
import zipfile
import os
import shutil
@@ -961,6 +962,17 @@ class CourseTestCases(unittest.TestCase):
self.template_course.end_enroll_time
)
+ # check if attributes are same
+ cloned_course_dict = model_to_dict(cloned_course,
+ fields=[field.name for field in cloned_course._meta.fields \
+ if field.name != 'id']
+ )
+ template_course_dict = model_to_dict(self.template_course,
+ fields=[field.name for field in self.template_course._meta.fields \
+ if field.name != 'id']
+ )
+ self.assertEqual(cloned_course_dict, template_course_dict)
+
# get duplicate quiz associated with duplicate course
cloned_quiz = cloned_course.quiz_set.all()[0]