From 00f01038b2a4653d87ca2529009fa873f6a4a26d Mon Sep 17 00:00:00 2001 From: maheshgudi Date: Wed, 11 Jul 2018 18:48:31 +0530 Subject: Support for multiple yaml files --- yaksh/models.py | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'yaksh/models.py') diff --git a/yaksh/models.py b/yaksh/models.py index 5d17dba..3e4644b 100644 --- a/yaksh/models.py +++ b/yaksh/models.py @@ -13,6 +13,8 @@ from django.contrib.contenttypes.models import ContentType from taggit.managers import TaggableManager from django.utils import timezone from django.core.files import File +import glob + try: from StringIO import StringIO as string_io except ImportError: @@ -1020,7 +1022,7 @@ class Question(models.Model): tags = question.pop('tags') if 'tags' in question else None test_cases = question.pop('testcase') que, result = Question.objects.get_or_create(**question) - if file_names: + if file_names and file_path: que._add_files_to_db(file_names, file_path) if tags: que.tags.add(*tags) @@ -1089,13 +1091,15 @@ class Question(models.Model): files = FileUpload.objects.filter(question=self) files_list = [] for f in files: - zip_file.write(f.file.path, (os.path.basename(f.file.path))) + zip_file.write(f.file.path, os.path.join("additional_files", + os.path.basename(f.file.path)) + ) files_list.append(((os.path.basename(f.file.path)), f.extract)) return files_list def _add_files_to_db(self, file_names, path): for file_name, extract in file_names: - q_file = os.path.join(path, file_name) + q_file = glob.glob(os.path.join(path, "**", file_name))[0] if os.path.exists(q_file): que_file = open(q_file, 'rb') # Converting to Python file object with @@ -1130,16 +1134,16 @@ class Question(models.Model): shutil.rmtree(tmp_file_path) def read_yaml(self, file_path, user, files=None): - yaml_file = os.path.join(file_path, "questions_dump.yaml") - msg = "" - if os.path.exists(yaml_file): - with open(yaml_file, 'r') as q_file: - questions_list = q_file.read() - msg = self.load_questions(questions_list, user, - file_path, files - ) - else: - msg = "Please upload zip file with questions_dump.yaml in it." + msg = "Failed to upload Questions" + for ext in ["yaml", "yml"]: + for yaml_file in glob.glob( + os.path.join(file_path, "*.{0}".format(ext))): + if os.path.exists(yaml_file): + with open(yaml_file, 'r') as q_file: + questions_list = q_file.read() + msg = self.load_questions(questions_list, user, + file_path, files + ) if files: delete_files(files, file_path) -- cgit From 7311255743aabd59bf0244257cf6377cae05d23e Mon Sep 17 00:00:00 2001 From: maheshgudi Date: Thu, 12 Jul 2018 13:09:35 +0530 Subject: Make pep9 changes for question-yaml features --- yaksh/models.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'yaksh/models.py') diff --git a/yaksh/models.py b/yaksh/models.py index 3e4644b..ddd7e01 100644 --- a/yaksh/models.py +++ b/yaksh/models.py @@ -1092,7 +1092,10 @@ class Question(models.Model): files_list = [] for f in files: zip_file.write(f.file.path, os.path.join("additional_files", - os.path.basename(f.file.path)) + os.path.basename( + f.file.path + ) + ) ) files_list.append(((os.path.basename(f.file.path)), f.extract)) return files_list @@ -1136,8 +1139,9 @@ class Question(models.Model): def read_yaml(self, file_path, user, files=None): msg = "Failed to upload Questions" for ext in ["yaml", "yml"]: - for yaml_file in glob.glob( - os.path.join(file_path, "*.{0}".format(ext))): + for yaml_file in glob.glob(os.path.join(file_path, + "*.{0}".format(ext) + )): if os.path.exists(yaml_file): with open(yaml_file, 'r') as q_file: questions_list = q_file.read() -- cgit