summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--yaksh/file_utils.py66
-rw-r--r--yaksh/models.py76
2 files changed, 69 insertions, 73 deletions
diff --git a/yaksh/file_utils.py b/yaksh/file_utils.py
index 1dc6006..7c31c70 100644
--- a/yaksh/file_utils.py
+++ b/yaksh/file_utils.py
@@ -3,7 +3,6 @@ import os
import zipfile
import tempfile
import csv
-from django.template import Context, Template
def copy_files(file_paths):
@@ -67,68 +66,3 @@ def is_csv(document):
except (csv.Error, UnicodeDecodeError):
return False, None
return True, dialect
-
-
-def write_static_files_to_zip(zipfile, course_name, current_dir, static_files):
- """ Write static files to zip
-
- Parameters
- ----------
-
- zipfile : Zipfile object
- zip file in which the static files need to be added
-
- course_name : str
- Create a folder with course name
-
- current_dir: str
- Path from which the static files will be taken
-
- static_files: dict
- Dictionary containing static folders as keys and static files as
- values
- """
- for folder in static_files.keys():
- folder_path = os.sep.join((current_dir, "static", "yaksh", folder))
- for file in static_files[folder]:
- file_path = os.sep.join((folder_path, file))
- with open(file_path, "rb") as f:
- zipfile.writestr(
- os.sep.join((course_name, "static", folder, file)),
- f.read()
- )
-
-
-def write_templates_to_zip(zipfile, template_path, data, filename, filepath):
- """ Write template files to zip
-
- Parameters
- ----------
-
- zipfile : Zipfile object
- zip file in which the template files need to be added
-
- template_path : str
- Path from which the template file will be loaded
-
- data: dict
- Dictionary containing context data required for template
-
- filename: str
- Filename with which the template file should be named
-
- filepath: str
- File path in zip where the template will be added
- """
- rendered_template = render_template(template_path, data)
- zipfile.writestr(os.sep.join((filepath, "{0}.html".format(filename))),
- str(rendered_template))
-
-
-def render_template(template_path, data):
- with open(template_path) as f:
- template_data = f.read()
- template = Template(template_data)
- context = Context(data)
- render = template.render(context)
- return render
diff --git a/yaksh/models.py b/yaksh/models.py
index 152289f..f8dac8b 100644
--- a/yaksh/models.py
+++ b/yaksh/models.py
@@ -28,10 +28,8 @@ import zipfile
import tempfile
from textwrap import dedent
from ast import literal_eval
-from .file_utils import (
- extract_files, delete_files, write_templates_to_zip,
- write_static_files_to_zip
-)
+from .file_utils import extract_files, delete_files
+from django.template import Context, Template
from yaksh.code_server import (
submit, get_result as get_result_from_code_server
)
@@ -153,6 +151,71 @@ def create_group(group_name, app_label):
return group
+def write_static_files_to_zip(zipfile, course_name, current_dir, static_files):
+ """ Write static files to zip
+
+ Parameters
+ ----------
+
+ zipfile : Zipfile object
+ zip file in which the static files need to be added
+
+ course_name : str
+ Create a folder with course name
+
+ current_dir: str
+ Path from which the static files will be taken
+
+ static_files: dict
+ Dictionary containing static folders as keys and static files as
+ values
+ """
+ for folder in static_files.keys():
+ folder_path = os.sep.join((current_dir, "static", "yaksh", folder))
+ for file in static_files[folder]:
+ file_path = os.sep.join((folder_path, file))
+ with open(file_path, "rb") as f:
+ zipfile.writestr(
+ os.sep.join((course_name, "static", folder, file)),
+ f.read()
+ )
+
+
+def write_templates_to_zip(zipfile, template_path, data, filename, filepath):
+ """ Write template files to zip
+
+ Parameters
+ ----------
+
+ zipfile : Zipfile object
+ zip file in which the template files need to be added
+
+ template_path : str
+ Path from which the template file will be loaded
+
+ data: dict
+ Dictionary containing context data required for template
+
+ filename: str
+ Filename with which the template file should be named
+
+ filepath: str
+ File path in zip where the template will be added
+ """
+ rendered_template = render_template(template_path, data)
+ zipfile.writestr(os.sep.join((filepath, "{0}.html".format(filename))),
+ str(rendered_template))
+
+
+def render_template(template_path, data):
+ with open(template_path) as f:
+ template_data = f.read()
+ template = Template(template_data)
+ context = Context(data)
+ render = template.render(context)
+ return render
+
+
###############################################################################
class CourseManager(models.Manager):
@@ -1490,8 +1553,8 @@ class QuestionPaper(models.Model):
testcases_ids = ",".join([str(tc.id) for tc in testcases]
)
if not TestCaseOrder.objects.filter(
- answer_paper=ans_paper, question=question
- ).exists():
+ answer_paper=ans_paper, question=question
+ ).exists():
TestCaseOrder.objects.create(
answer_paper=ans_paper, question=question,
order=testcases_ids)
@@ -2331,7 +2394,6 @@ class TestCaseOrder(models.Model):
# Order of the test case for a question.
order = models.TextField()
-
class Meta:
unique_together = ("answer_paper", "question", "order")