summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--yaksh/models.py47
-rw-r--r--yaksh/templates/yaksh/index.html20
-rw-r--r--yaksh/templates/yaksh/module.html33
-rw-r--r--yaksh/templates/yaksh/quiz.html73
-rw-r--r--yaksh/templates/yaksh/unit.html22
-rw-r--r--yaksh/views.py1
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