diff options
-rw-r--r-- | yaksh/models.py | 47 | ||||
-rw-r--r-- | yaksh/templates/yaksh/index.html | 20 | ||||
-rw-r--r-- | yaksh/templates/yaksh/module.html | 33 | ||||
-rw-r--r-- | yaksh/templates/yaksh/quiz.html | 73 | ||||
-rw-r--r-- | yaksh/templates/yaksh/unit.html | 22 | ||||
-rw-r--r-- | yaksh/views.py | 1 |
6 files changed, 165 insertions, 31 deletions
diff --git a/yaksh/models.py b/yaksh/models.py index d0161c1..24cb996 100644 --- a/yaksh/models.py +++ b/yaksh/models.py @@ -298,7 +298,7 @@ class Lesson(models.Model): if os.path.exists(file_path): os.remove(file_path) - def _add_lesson_to_zip(self, module, course, zip_file, path): + def _add_lesson_to_zip(self, next_unit, module, course, zip_file, path): lesson_name = self.name.replace(" ", "_") course_name = course.name.replace(" ", "_") module_name = module.name.replace(" ", "_") @@ -319,7 +319,8 @@ class Lesson(models.Model): path, "templates", "yaksh", "unit.html" )) lesson_data = {"course": course, "module": module, - "lesson": self, "lesson_files": lesson_files} + "lesson": self, "next_unit": next_unit, + "lesson_files": lesson_files} write_templates_to_zip(zip_file, unit_file_path, lesson_data, lesson_name, sub_folder_name) @@ -567,6 +568,31 @@ class Quiz(models.Model): return '%s: on %s for %d minutes' % (desc, self.start_date_time, self.duration) + def _add_quiz_to_zip(self, next_unit, module, course, zip_file, path): + quiz_name = self.description.replace(" ", "_") + course_name = course.name.replace(" ", "_") + module_name = module.name.replace(" ", "_") + sub_folder_name = os.sep.join(( + course_name, module_name, quiz_name + )) + # lesson_files = self.get_files() + # if self.video_file: + # video_file = os.sep.join((sub_folder_name, os.path.basename( + # self.video_file.name))) + # zip_file.writestr(video_file, self.video_file.read()) + # for lesson_file in lesson_files: + # if os.path.exists(lesson_file.file.path): + # filename = os.sep.join((sub_folder_name, os.path.basename( + # lesson_file.file.name))) + # zip_file.writestr(filename, lesson_file.file.read()) + unit_file_path = os.sep.join(( + path, "templates", "yaksh", "quiz.html" + )) + quiz_data = {"course": course, "module": module, + "quiz": self, "next_unit": next_unit} + + write_templates_to_zip(zip_file, unit_file_path, quiz_data, + quiz_name, sub_folder_name) ########################################################################## class LearningUnit(models.Model): @@ -577,6 +603,9 @@ class LearningUnit(models.Model): quiz = models.ForeignKey(Quiz, null=True, blank=True) check_prerequisite = models.BooleanField(default=True) + def get_lesson_or_quiz(self): + return self.lesson if self.lesson else self.quiz + def toggle_check_prerequisite(self): if self.check_prerequisite: self.check_prerequisite = False @@ -774,12 +803,19 @@ class LearningModule(models.Model): course_name = course.name.replace(" ", "_") folder_name = os.sep.join((course_name, module_name)) lessons = self.get_lesson_units() - for lesson in lessons: - lesson._add_lesson_to_zip(self, course, zip_file, path) + + units = self.get_learning_units() + for idx, unit in enumerate(units): + next_unit = units[(idx + 1) % len(units)] + if unit.type == 'lesson': + unit.lesson._add_lesson_to_zip(next_unit, self, course, zip_file, path) + else: + unit.quiz._add_quiz_to_zip(next_unit, self, course, zip_file, path) + module_file_path = os.sep.join(( path, "templates", "yaksh", "module.html" )) - module_data = {"course": course, "module": self, "lessons": lessons} + module_data = {"course": course, "module": self, "units": units} write_templates_to_zip(zip_file, module_file_path, module_data, module_name, folder_name) @@ -1042,6 +1078,7 @@ class Course(models.Model): def create_zip(self, path, static_files): zip_file_name = string_io() with zipfile.ZipFile(zip_file_name, "a") as zip_file: + # print("HELLOOOOOOO - - - -- - - -- ") course_name = self.name.replace(" ", "_") modules = self.get_learning_modules() file_path = os.sep.join((path, "templates", "yaksh", "index.html")) diff --git a/yaksh/templates/yaksh/index.html b/yaksh/templates/yaksh/index.html index c89405d..9bd28d5 100644 --- a/yaksh/templates/yaksh/index.html +++ b/yaksh/templates/yaksh/index.html @@ -1,12 +1,15 @@ {% load custom_filters %} <html> -<link rel="stylesheet" href="static/css/bootstrap.css"> -<link rel="stylesheet" href="static/css/bootstrap.min.css"> -<link rel="stylesheet" href="static/css/offline.css"> -<script src="static/js/jquery-3.3.1.min.js"></script> -<script src="static/js/bootstrap.min.js"></script> -{% block pagetitle %} {{course.name}} {% endblock %} -<nav class="navbar navbar-inverse navbar-fixed-top"> +<head> + <link rel="stylesheet" href="static/css/bootstrap.css"> + <link rel="stylesheet" href="static/css/bootstrap.min.css"> + <link rel="stylesheet" href="static/css/offline.css"> + <title> + {% block pagetitle %} {{course.name}} {% endblock %} + </title> +</head> +<body> +<nav class="navbar bg-dark navbar-dark"> <div class="container-fluid"> <div class="navbar-header"> <a class="navbar-brand" href="#"> @@ -56,4 +59,7 @@ <p align="center">Developed by FOSSEE group, IIT Bombay</p> </div> </footer> +</body> +<script src="static/js/jquery-3.3.1.min.js"></script> +<script src="static/js/bootstrap.min.js"></script> </html>
\ No newline at end of file diff --git a/yaksh/templates/yaksh/module.html b/yaksh/templates/yaksh/module.html index 6109403..b062159 100644 --- a/yaksh/templates/yaksh/module.html +++ b/yaksh/templates/yaksh/module.html @@ -1,13 +1,14 @@ {% load custom_filters %} <html> -<link rel="stylesheet" href="../static/css/bootstrap.css"> -<link rel="stylesheet" href="../static/css/bootstrap.min.css"> -<link rel="stylesheet" href="../static/css/offline.css"> -<script src="../static/js/jquery-3.3.1.min.js"></script> -<script src="../static/js/bootstrap.min.js"></script> -<script src="https://vjs.zencdn.net/6.9.0/video.js"></script> -{% block pagetitle %} {{module.name}} {% endblock %} -<nav class="navbar navbar-inverse navbar-fixed-top"> +<head> + <link rel="stylesheet" href="../static/css/bootstrap.min.css"> + <link rel="stylesheet" href="../static/css/offline.css"> + <title> + {% block pagetitle %} {{module.name}} {% endblock %} + </title> +</head> +<body> + <nav class="navbar bg-dark navbar-dark"> <div class="container-fluid"> <div class="navbar-header"> <a class="navbar-brand" href="#"> @@ -34,10 +35,16 @@ <h4><strong>Lessons (Click on lesson name to open lesson) </strong></h4> <ul class="list-group"> - {% for lesson in lessons %} - <a href="{{lesson.name|replace_spaces}}/{{lesson.name|replace_spaces}}.html" target="_blank" class="list-group-item"> - {{lesson.name}} + {% for unit in units %} + {% if unit.type == 'lesson' %} + <a href="{{unit.lesson.name|replace_spaces}}/{{unit.lesson.name|replace_spaces}}.html" target="_blank" class="list-group-item"> + {{unit.lesson.name}} + </a> + {% else %} + <a href="{{unit.quiz.description|replace_spaces}}/{{unit.quiz.description|replace_spaces}}.html" target="_blank" class="list-group-item"> + {{unit.quiz.description}} </a> + {% endif %} {% endfor %} </ul> </td> @@ -53,4 +60,8 @@ <p align="center">Developed by FOSSEE group, IIT Bombay</p> </div> </footer> +</body> +<script src="../static/js/jquery-3.3.1.min.js"></script> +<script src="../static/js/bootstrap.min.js"></script> +<script src="https://vjs.zencdn.net/6.9.0/video.js"></script> </html>
\ No newline at end of file diff --git a/yaksh/templates/yaksh/quiz.html b/yaksh/templates/yaksh/quiz.html new file mode 100644 index 0000000..fd52e7d --- /dev/null +++ b/yaksh/templates/yaksh/quiz.html @@ -0,0 +1,73 @@ +{% load custom_filters %} +<html> +<head> + <link rel="stylesheet" href="../../static/css/bootstrap.min.css"> + <link rel="stylesheet" href="../../static/css/offline.css"> + <link rel="stylesheet" href="../../static/css/video-js.css"> + <title> + {% block pagetitle %} {{course.name}} {% endblock %} + </title> +</head> +<body> +<nav class="navbar bg-dark navbar-dark"> + <div class="container-fluid"> + <div class="navbar-header"> + <a class="navbar-brand" href="#"> + <img src="../../static/images/yaksh_banner.png" alt="YAKSH"> + </img> + </a> + </div> + </div> +</nav> +<div class="container" style="margin-top:50px"> + <center> + <h1> + {% block subtitle %} + {{course.name}} + {% endblock %} + </h1> + <hr> + </center> + {% block content %} + <center><h2>{{module.name}}</h2></center> + <hr> + <div id="status"></div> + <hr> + <h3>{{unit.description}}</h3> + <a href="http://127.0.0.1:8000/exam/start/{{quiz.questionpaper_set.get.id}}/{{module.id}}/{{course.id}}" target="_blank">{{quiz.description}}</a> + <br> + + {% if unit.type == 'lesson' %} + <a href="{{unit.lesson.name|replace_spaces}}/{{unit.lesson.name|replace_spaces}}.html" target="_blank" class="list-group-item"> + {{unit.lesson.name}} + </a> + {% else %} + <a href="{{unit.quiz.description|replace_spaces}}/{{unit.quiz.description|replace_spaces}}.html" target="_blank" class="list-group-item"> + {{unit.quiz.description}} + </a> + {% endif %} + + {% endblock %} +</div> +<footer class="footer" id="footer_div"> + <div class="container"> + <p align="center">Developed by FOSSEE group, IIT Bombay</p> + </div> +</footer> +</body> +<script src="../../static/js/jquery-3.3.1.min.js"></script> +<script src="../../static/js/bootstrap.min.js"></script> +<script src="../../static/js/video.js"></script> + +<script type="text/javascript"> +$(document).ready(function(){ + var online = navigator.onLine; + if(online){ + var status = document.getElementById("status").innerHTML = "<span class='badge badge-success'>User is online</span>"; + + }else{ + document.getElementById("status").innerHTML = "<span class='badge badge-danger'>User is offline</span>"; + } +}); +</script> +</html>
\ No newline at end of file diff --git a/yaksh/templates/yaksh/unit.html b/yaksh/templates/yaksh/unit.html index 5bf11f1..c5bb1e5 100644 --- a/yaksh/templates/yaksh/unit.html +++ b/yaksh/templates/yaksh/unit.html @@ -1,13 +1,15 @@ {% load custom_filters %} <html> -<link rel="stylesheet" href="../../static/css/bootstrap.css"> -<link rel="stylesheet" href="../../static/css/bootstrap.min.css"> -<link rel="stylesheet" href="../../static/css/offline.css"> -<link rel="stylesheet" href="../../static/css/video-js.css"> -<script src="../../static/js/jquery-3.3.1.min.js"></script> -<script src="../../static/js/bootstrap.min.js"></script> -<script src="../../static/js/video.js"></script> -<nav class="navbar navbar-inverse navbar-fixed-top"> +<head> + <link rel="stylesheet" href="../../static/css/bootstrap.min.css"> + <link rel="stylesheet" href="../../static/css/offline.css"> + <link rel="stylesheet" href="../../static/css/video-js.css"> + <title> + {% block pagetitle %} {{module.name}} {% endblock %} + </title> +</head> +<body> +<nav class="navbar bg-dark navbar-dark"> <div class="container-fluid"> <div class="navbar-header"> <a class="navbar-brand" href="#"> @@ -69,4 +71,8 @@ <p align="center">Developed by FOSSEE group, IIT Bombay</p> </div> </footer> +</body> +<script src="../../static/js/jquery-3.3.1.min.js"></script> +<script src="../../static/js/bootstrap.min.js"></script> +<script src="../../static/js/video.js"></script> </html>
\ No newline at end of file diff --git a/yaksh/views.py b/yaksh/views.py index f1ab13b..0b70361 100644 --- a/yaksh/views.py +++ b/yaksh/views.py @@ -2953,3 +2953,4 @@ def download_course(request, course_id): ) response.write(zip_file.read()) return response + # return HttpResponse("Success")
\ No newline at end of file |