summaryrefslogtreecommitdiff
path: root/yaksh/templates
diff options
context:
space:
mode:
authorPalaparthy Adityachandra2020-05-18 16:28:00 +0530
committerGitHub2020-05-18 16:28:00 +0530
commit50fec4b15da116fe8af05aa4583d56af27955679 (patch)
treefe431506e3a89d854f8d0b24e811ca6d6129206a /yaksh/templates
parent2db15ac584ae991cd052fa0eed68194594f91775 (diff)
parentf7825eade425cb51ba053763db9d9fd051b0f4ce (diff)
downloadonline_test-50fec4b15da116fe8af05aa4583d56af27955679.tar.gz
online_test-50fec4b15da116fe8af05aa4583d56af27955679.tar.bz2
online_test-50fec4b15da116fe8af05aa4583d56af27955679.zip
Merge pull request #692 from adityacp/merge_monitor_regrade
Merge monitor regrade
Diffstat (limited to 'yaksh/templates')
-rw-r--r--yaksh/templates/manage.html30
-rw-r--r--yaksh/templates/yaksh/grade_user.html109
-rw-r--r--yaksh/templates/yaksh/monitor.html366
-rw-r--r--yaksh/templates/yaksh/regrade.html175
-rw-r--r--yaksh/templates/yaksh/user_data.html5
-rw-r--r--yaksh/templates/yaksh/view_notifications.html62
6 files changed, 347 insertions, 400 deletions
diff --git a/yaksh/templates/manage.html b/yaksh/templates/manage.html
index 8e74494..6047fc5 100644
--- a/yaksh/templates/manage.html
+++ b/yaksh/templates/manage.html
@@ -12,13 +12,33 @@
<div class="collapse navbar-collapse" id="navbarColor01">
<ul class="navbar-nav mr-auto">
- <li class="nav-item"><a class="nav-link" href="{% url 'yaksh:show_questions' %}">Questions</a></li>
- <li class="nav-item"><a class="nav-link" href="{% url 'yaksh:courses' %}">Courses</a></li>
- <li class="nav-item"><a class="nav-link" href="{% url 'yaksh:monitor' %}">Monitor</a></li>
- <li class="nav-item"><a class="nav-link" href="{% url 'yaksh:grade_user' %}">Grade User</a></li>
- <li class="nav-item"><a class="nav-link" href="{% url 'yaksh:grader' %}"> Regrade </a></li>
+ <li class="nav-item">
+ <a class="nav-link" href="{% url 'yaksh:show_questions' %}">
+ Questions
+ </a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link" href="{% url 'yaksh:courses' %}">
+ Courses
+ </a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link" href="{% url 'yaksh:grade_user' %}">
+ Quizzes
+ </a>
+ </li>
</ul>
<ul class="navbar-nav ml-auto">
+ <li class="nav-item">
+ <a class="nav-link" href="{% url 'yaksh:view_notifications' %}">
+ <i class="fa fa-bell" style="size: 18px"></i>&nbsp;Notifications
+ {% if request.custom_notifications > 0 %}
+ <span class="badge badge-success badge-pill">
+ {{request.custom_notifications}}
+ </span>
+ {% endif %}
+ </a>
+ </li>
<li class="nav-item dropdown my-lg-0" style="font-size: 1.2rem">
<a class="dropdown-toggle nav-link" id="user_dropdown" data-toggle="dropdown" href="#">{{user.get_full_name|title}}
</a>
diff --git a/yaksh/templates/yaksh/grade_user.html b/yaksh/templates/yaksh/grade_user.html
index f4c7d67..a9ab53e 100644
--- a/yaksh/templates/yaksh/grade_user.html
+++ b/yaksh/templates/yaksh/grade_user.html
@@ -2,9 +2,9 @@
{% load custom_filters %}
{% load static %}
-{% block title %} Grade User {% endblock %}
+{% block title %} Grader {% endblock %}
-{% block pagetitle %} Grade User {% endblock pagetitle %}
+{% block pagetitle %} Grader {% endblock pagetitle %}
{% block script %}
<script type="text/javascript" src="{% static 'yaksh/js/jquery.tablesorter.min.js' %}">
@@ -51,7 +51,7 @@ function searchNames() {
</h5>
</div>
<div class="col-md">
- <a class="card-link btn btn-info" data-toggle="collapse" href="#collapse{{course.id}}">
+ <a class="card-link btn btn-outline-success" data-toggle="collapse" href="#collapse{{course.id}}">
Details
<i class="fa fa-toggle-down" id="toggle_course_{{course.id}}"></i>
</a>
@@ -70,7 +70,12 @@ function searchNames() {
{{quiz.description}}
</div>
<div class="col-md-2">
- <a href="{% url 'yaksh:grade_user' quiz.id course.id%}" class="btn btn-primary">
+ <a href="{% url 'yaksh:monitor' quiz.id course.id%}" class="btn btn-primary">
+ Monitor
+ </a>
+ </div>
+ <div class="col-md-2">
+ <a href="{% url 'yaksh:grade_user' quiz.id course.id%}" class="btn btn-info">
Grade
</a>
</div>
@@ -135,6 +140,46 @@ function searchNames() {
</a>
<br><br>
{% endif %}
+ {% if status == 'grade' and users %}
+ <div id="accordian-questions" class="card">
+ <div class="card-header">
+ <a class="card-link" data-toggle="collapse" href="#questions">
+ Regrade papers by questions&nbsp;<i class="fa fa-angle-down"></i>
+ </a>
+ </div>
+ <div id="questions" class="collapse hide" data-parent="#accordion-questions">
+ {% with quiz.questionpaper_set.get as qp %}
+ <div class="card-body">
+ <table class="table table-responsive-sm">
+ <thead>
+ <tr>
+ <th>Questions</th>
+ <th>Type</th>
+ <th>Marks</th>
+ <th>Regrade</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for question in qp.get_question_bank %}
+ <tr>
+ <td>{{ question.summary }}</td>
+ <td>{{ question.get_type_display }}</td>
+ <td>{{ question.points }}</td>
+ <td>
+ <a href="{% url 'yaksh:regrade_by_quiz' course_id quiz.questionpaper_set.get.id question.id %}" class="btn btn-outline-success">
+ <i class="fa fa-repeat"></i>&nbsp;Regrade
+ </a>
+ </td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+ </div>
+ {% endwith %}
+ </div>
+ </div>
+ <br>
+ {% endif %}
{% if messages %}
{% for message in messages %}
@@ -251,7 +296,16 @@ function searchNames() {
{% if paper.answers.count %}
<div class="card">
<div class="card-header">
- Submission Details
+ <div class="row">
+ <div class="col-md-6">
+ Submission Details
+ </div>
+ <div class="col-md-4">
+ <a href="{% url 'yaksh:regrade_by_user' course_id quiz.questionpaper_set.get.id paper.id %}" class="btn btn-outline-success">
+ <i class="fa fa-repeat"></i>&nbsp;Regrade Whole Paper
+ </a>
+ </div>
+ </div>
</div>
<div class="card-body">
<table class="tablesorter table table-striped table-bordered table-responsive-sm" id='marks_table'>
@@ -260,6 +314,7 @@ function searchNames() {
<th>Questions</th>
<th>Type</th>
<th>Marks Obtained</th>
+ <th>Regrade by question</th>
</tr>
</thead>
<tbody>
@@ -273,6 +328,11 @@ function searchNames() {
</td>
<td>{{ question.type }}</td>
<td>{{ answer.answer.marks }}</td>
+ <td>
+ <a href="{% url 'yaksh:regrade_by_question' course_id quiz.questionpaper_set.get.id paper.id question.id %}" class="btn btn-outline-success">
+ <i class="fa fa-repeat"></i>&nbsp;Regrade
+ </a>
+ </td>
</tr>
{% endwith %}
{% endfor %}
@@ -287,7 +347,8 @@ function searchNames() {
<div class="card-header text-white bg-info">
<strong>
Details: {{forloop.counter}}. {{ question.summary }}
- <span class="marks pull-right"> Mark(s): {{ question.points }} </span>
+ <span class="marks pull-right"> Mark(s): {{ question.points }}
+ </span>
</strong>
</div>
<div class="card-body">
@@ -533,4 +594,40 @@ function searchNames() {
</div>
</div>
</div>
+{% if details %}
+ <div class="modal">
+ <div class="modal-dialog" role="document">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h5 class="modal-title">Regrade</h5>
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+ <span aria-hidden="true">&times;</span>
+ </button>
+ </div>
+ <div class="modal-body">
+ <table class="table table-responsive-sm">
+ <tbody>
+ {% for detail in details %}
+ {% if detail.0 %}
+ <tr class="table-success">
+ <td> Graded Successfully </td>
+ {% else%}
+ <tr class="table-danger">
+ <td> Did not Grade </td>
+ {% endif %}
+ <td> {{ detail.1|linebreaks }} </td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">
+ Close
+ </button>
+ </div>
+ </div>
+ </div>
+ </div>
+{% endif %}
{% endblock%}
diff --git a/yaksh/templates/yaksh/monitor.html b/yaksh/templates/yaksh/monitor.html
index cf6888c..ef7b033 100644
--- a/yaksh/templates/yaksh/monitor.html
+++ b/yaksh/templates/yaksh/monitor.html
@@ -12,228 +12,176 @@
</script>
<script type="text/javascript">
$(document).ready(function()
- {
- $("#result-table").tablesorter({sortList: [[5,1]]});
- var papers_length = "{{papers|length}}";
- for (var i=0; i < papers_length; i++){
- var time_left = $("#time_left"+[i]);
+ {
+ $("#result-table").tablesorter({});
+ var papers_length = "{{papers|length}}";
+ for (var i=0; i < papers_length; i++){
+ var paper_status = $("#status"+[i]);
+ var hh, mm, ss;
+ var time_left = $("#time_left"+[i]);
+ if (paper_status.text() == "completed"){
+ hh = "-";
+ mm = "-";
+ ss = "-";
+ }
+ else{
var time = time_left.text();
- var hh = Math.floor(time / 3600);
- var mm = Math.floor((time - (hh * 3600)) / 60);
- var ss = time - (hh * 3600) - (mm * 60);
- time_left.text(hh + ":" + mm + ":" + ss)
- }
-});
+ hh = Math.floor(time / 3600);
+ mm = Math.floor((time - (hh * 3600)) / 60);
+ ss = time - (hh * 3600) - (mm * 60);
+ }
+ time_left.text(hh + ":" + mm + ":" + ss);
+ }
+ });
</script>
{% endif %}
{% endblock %}
{% block content %}
<div class="container">
- {# ############################################################### #}
- {# This is rendered when we are just viewing exam/monitor #}
- {% if objects %}
- {% include "yaksh/paginator.html" %}
- <div id="accordion">
- {% for course in objects %}
- <div class="card">
- <div class="card-header">
- <div class="row">
- <div class="col-md-9">
- <h5 data-toggle="tooltip" title="{{course.name}}">
- {{ course.name }}
- </h5>
- </div>
- <div class="col-md">
- <a class="card-link btn btn-info" data-toggle="collapse" href="#collapse{{course.id}}">
- Details
- <i class="fa fa-toggle-down" id="toggle_course_{{course.id}}"></i>
- </a>
- </div>
- </div>
- </div>
- <div id="collapse{{course.id}}" class="collapse hide" data-parent="#accordion">
- <div class="card-body">
- {% with course.get_quizzes as quizzes %}
- {% if quizzes %}
- <ul class="list-group">
- {% for quiz in quizzes %}
- <li class="list-group-item">
- <div class="row">
- <div class="col-md-8">
- {{quiz.description}}
- </div>
- <div class="col-md-2">
- <a href="{% url 'yaksh:monitor' quiz.id course.id%}" class="btn btn-primary">
- Monitor
- </a>
- </div>
- </div>
- </li>
- {% endfor %}
- </ul>
- {% else %}
- <center>
- <p class="badge badge-danger badge-pill">
- No Quizzes
- </p>
- </center>
- {% endif %}
- {% endwith %}
- </div>
- </div>
- </div>
- <br>
- {% endfor %}
- </div>
- {% include "yaksh/paginator.html" %}
-
- {% elif msg == 'Monitor' and not objects %}
- <br>
- <div class="alert alert-info">
- <center><h3>No courses to monitor</h3></center>
- </div>
- {% endif %}
- {# ############################################################### #}
- {# This is rendered when we are just viewing exam/monitor/quiz_num #}
- {% if msg != "Monitor" %}
- {% if quiz %}
- {% if papers %}
- <div class="card">
- <div class="table-responsive">
- <table id="course-detail" class="table">
- <tr>
- <td><b>Course Name:&nbsp</b></td>
- <td>{{course.name}}</td>
- </tr>
- <tr>
- <td><b>Quiz Name:&nbsp</b></td>
- <td>{{quiz.description}}</td>
- </tr>
- <tr>
- <td><b>Number of papers: &nbsp</b></td>
- <td>{{papers|length}}</td>
- </tr>
- <tr>
- <td><b>Papers Completed: &nbsp</b></td>
- <td>
- {% completed papers as completed_papers %}
- <b>{{completed_papers}}</b>
- </td>
- </tr>
- <tr>
- <td><b>Papers in progress: &nbsp</b></td>
- <td>
- {% inprogress papers as inprogress_papers %}
- <b>{{ inprogress_papers }}</b>
- </td>
- </tr>
- </table>
- </div>
+ {% if quiz %}
+ {% if papers %}
+ <div class="card">
+ <div class="table-responsive">
+ <table id="course-detail" class="table">
+ <tr>
+ <td><b>Course Name:&nbsp</b></td>
+ <td>{{course.name}}</td>
+ </tr>
+ <tr>
+ <td><b>Quiz Name:&nbsp</b></td>
+ <td>{{quiz.description}}</td>
+ </tr>
+ <tr>
+ <td><b>Number of papers: &nbsp</b></td>
+ <td>{{papers|length}}</td>
+ </tr>
+ <tr>
+ <td><b>Papers Completed: &nbsp</b></td>
+ <td>
+ {% completed papers as completed_papers %}
+ <b>{{completed_papers}}</b>
+ </td>
+ </tr>
+ <tr>
+ <td><b>Papers in progress: &nbsp</b></td>
+ <td>
+ {% inprogress papers as inprogress_papers %}
+ <b>{{ inprogress_papers }}</b>
+ </td>
+ </tr>
+ </table>
</div>
- <br>
- <div class="row">
- <div class="col-md-4">
- <a href="{% url 'yaksh:show_statistics' papers.0.question_paper.id course.id %}" class="btn btn-primary">
- <i class="fa fa-line-chart"></i>&nbsp;Question Statistics
- </a>
- </div>
- <div class="col-md-4">
- <button type="button" class="btn btn-info" data-toggle="modal" data-target="#csvModal">
- <i class="fa fa-download"></i>&nbsp;Download CSV
- </button>
- </div>
+ </div>
+ <br>
+ <div class="row">
+ <div class="col-md-4">
+ <a href="{% url 'yaksh:show_statistics' papers.0.question_paper.id course.id %}" class="btn btn-primary">
+ <i class="fa fa-line-chart"></i>&nbsp;Question Statistics
+ </a>
+ </div>
+ <div class="col-md-4">
+ <button type="button" class="btn btn-info" data-toggle="modal" data-target="#csvModal">
+ <i class="fa fa-download"></i>&nbsp;Download CSV
+ </button>
+ </div>
+ <div class="col-md-4">
+ <div class="badge badge-info">
+ Auto-Refreshes every 30 seconds
</div>
- <br>
- <table id="result-table" class="tablesorter table table-striped table-responsive-sm">
- <thead>
- <tr>
- <th> Name&nbsp;<i class="fa fa-sort"></i> </th>
- <th> Username&nbsp;<i class="fa fa-sort"></i> </th>
- <th> Roll No&nbsp;<i class="fa fa-sort"></i> </th>
- <th> Institute&nbsp;<i class="fa fa-sort"></i> </th>
- <th> Marks&nbsp;<i class="fa fa-sort"></i> </th>
- <th> Attempts&nbsp;<i class="fa fa-sort"></i> </th>
- <th> Time&nbsp;<i class="fa fa-sort"></i> </th>
- <th> Status&nbsp;<i class="fa fa-sort"></i> </th>
- </tr>
- </thead>
- <tbody>
- {% for paper in latest_attempts %}
- <tr>
- <td> <a href="{% url 'yaksh:user_data' paper.user.id paper.question_paper.id course.id %}">
- {{ paper.user.get_full_name.title }}</a> </td>
- <td> {{ paper.user.username }} </td>
- <td> {{ paper.user.profile.roll_number }} </td>
- <td> {{ paper.user.profile.institute }} </td>
- <td> {{ paper.marks_obtained }} </td>
- <td> {{ paper.answers.count }} </td>
- <td id="time_left{{forloop.counter0}}"> {{ paper.time_left }} </td>
- <td>{{ paper.status }}</td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- <!-- CSV Modal -->
- <div class="modal fade" id="csvModal" role="dialog">
- <div class="modal-dialog">
+ </div>
+ </div>
+ <br>
+ <table id="result-table" class="tablesorter table table-striped table-responsive-sm">
+ <thead>
+ <tr>
+ <th> Sr No. </th>
+ <th> Name&nbsp;<i class="fa fa-sort"></i> </th>
+ <th> Username&nbsp;<i class="fa fa-sort"></i> </th>
+ <th> Roll No&nbsp;<i class="fa fa-sort"></i> </th>
+ <th> Institute&nbsp;<i class="fa fa-sort"></i> </th>
+ <th> Marks&nbsp;<i class="fa fa-sort"></i> </th>
+ <th> Attempts&nbsp;<i class="fa fa-sort"></i> </th>
+ <th> Time&nbsp;<i class="fa fa-sort"></i> </th>
+ <th> Status&nbsp;<i class="fa fa-sort"></i> </th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for paper in latest_attempts %}
+ <tr>
+ <td>{{forloop.counter}}</td>
+ <td> <a href="{% url 'yaksh:user_data' paper.user.id paper.question_paper.id course.id %}">
+ {{ paper.user.get_full_name.title }}</a> </td>
+ <td> {{ paper.user.username }} </td>
+ <td> {{ paper.user.profile.roll_number }} </td>
+ <td> {{ paper.user.profile.institute }} </td>
+ <td> {{ paper.marks_obtained }} </td>
+ <td> {{ paper.answers.count }} </td>
+ <td id="time_left{{forloop.counter0}}"> {{ paper.time_left }} </td>
+ <td id="status{{forloop.counter0}}">{{ paper.status }}</td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+ <!-- CSV Modal -->
+ <div class="modal fade" id="csvModal" role="dialog">
+ <div class="modal-dialog">
- <!-- Modal content-->
- <div class="modal-content">
- <div class="modal-header">
- <h3 class="modal-title">Download CSV for {{quiz.description}} </h3>
- <button type="button" class="close" data-dismiss="modal">
- <i class="fa fa-close"></i>
- </button>
+ <!-- Modal content-->
+ <div class="modal-content">
+ <div class="modal-header">
+ <h3 class="modal-title">Download CSV for {{quiz.description}} </h3>
+ <button type="button" class="close" data-dismiss="modal">
+ <i class="fa fa-close"></i>
+ </button>
+ </div>
+ <form action="{% url 'yaksh:download_quiz_csv' course.id quiz.id %}" method="post">
+ {% csrf_token %}
+ <div class="modal-body">
+ <b>Uncheck unwanted columns</b>
+ <br>
+ {% for field in csv_fields %}
+ <div class="form-check form-check-inline">
+ <label class="form-check-label">
+ <input class="form-check-input" name="csv_fields" type="checkbox" value="{{ field }}" checked> {{ field }}
+ </label>
</div>
- <form action="{% url 'yaksh:download_quiz_csv' course.id quiz.id %}" method="post">
- {% csrf_token %}
- <div class="modal-body">
- <b>Uncheck unwanted columns</b>
- <br>
- {% for field in csv_fields %}
- <div class="form-check form-check-inline">
- <label class="form-check-label">
- <input class="form-check-input" name="csv_fields" type="checkbox" value="{{ field }}" checked> {{ field }}
- </label>
- </div>
- <br>
+ <br>
+ {% endfor %}
+ <b>Select Attempt Number: Default latest attempt</b>
+ <select class="form-control" name = "attempt_number">
+ {%for attempt_number in attempt_numbers %}
+ {% if forloop.last %}
+ <option value="{{ attempt_number }}" selected>{{ attempt_number }} (Latest)</option>
+ {% else %}
+ <option value = "{{ attempt_number }}"> {{ attempt_number }}</option>
+ {% endif %}
{% endfor %}
- <b>Select Attempt Number: Default latest attempt</b>
- <select class="form-control" name = "attempt_number">
- {%for attempt_number in attempt_numbers %}
- {% if forloop.last %}
- <option value="{{ attempt_number }}" selected>{{ attempt_number }} (Latest)</option>
- {% else %}
- <option value = "{{ attempt_number }}"> {{ attempt_number }}</option>
- {% endif %}
- {% endfor %}
- </select>
- </div>
- <div class="modal-footer">
- <button type="submit" class="btn btn-success">
- <span class="fa fa-save"></span>&nbsp;Download
- </button>
- <button type="button" class="btn btn-secondary" data-dismiss="modal">
- Close
- </button>
- </div>
- </form>
- </div>
- </div>
+ </select>
+ </div>
+ <div class="modal-footer">
+ <button type="submit" class="btn btn-success">
+ <span class="fa fa-save"></span>&nbsp;Download
+ </button>
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">
+ Close
+ </button>
+ </div>
+ </form>
</div>
- {% else %}
- <div class="col-md-12">
- <div class="alert alert-warning">
- <center>
- <h4>No Users Found for {{ quiz.description }}</h4>
- </center>
- </div>
</div>
- {% endif %} {# if papers #}
- {% else %}
- <h4>No Quiz Found</h4>
- {% endif %}
- {% endif %}
+ </div>
+ {% else %}
+ <div class="col-md-12">
+ <div class="alert alert-warning">
+ <center>
+ <h4>No Users Found for {{ quiz.description }}</h4>
+ </center>
+ </div>
+ </div>
+ {% endif %} {# if papers #}
+ {% else %}
+ <h4>No Quiz Found</h4>
+ {% endif %}
</div>
{% endblock %}
diff --git a/yaksh/templates/yaksh/regrade.html b/yaksh/templates/yaksh/regrade.html
deleted file mode 100644
index c70e470..0000000
--- a/yaksh/templates/yaksh/regrade.html
+++ /dev/null
@@ -1,175 +0,0 @@
-{% extends "manage.html" %}
-
-{% block pagetitle %} Grader {% endblock pagetitle %}
-
-{% block content %}
-<div class="yakshwell container">
-<div class="row">
- <div class="col-md-3 yakshlabel collapse" id="sidebar">
- <div class="nav nav-pills flex-column" role="tablist" aria-orientation="vertical">
- <a href="#intro" data-toggle="pill" class="nav-link active" role="tab" aria-controls="intro" aria-selected="true" id="introtab"> Intro </a>
- <a href="#questions" data-toggle="pill" class="nav-link" role="tab" aria-controls="questions" aria-selected="false" id="questionstab"> Question-wise regrade </a>
- <a href="#quizzes" data-toggle="pill" class="nav-link" role="tab" aria-controls="quizzes" aria-selected="false" id="quizzestab"> Quiz-wise regrade </a>
- <a href="#users" data-toggle="pill" class="nav-link" role="tab" aria-controls="users" aria-selected="false" id="userstab"> User-wise regrade </a>
- </div>
- </div><!--end of siddebar-->
- <a href="#sidebar" data-toggle="collapse" id="sidebaricon"><i class="fa fa-navicon fa-lg"></i></a>
- <main class="tab-content col" id="sidebarbody">
-
-
- <div id="intro" class="tab-pane fade show active" role="tabpanel" aria-labelledby="introtab">
- <h3 class="yakshred"> Regrade </h3>
- <dl>
- <dt class="yakshgreen"> Question wise regrade </dt>
- <dd> You can regrade a question for all answerpapers for a given quiz. </dd>
- <dt class="yakshgreen"> Quiz wise regrade <dt>
- <dd> You can regrade an answerpaper for a quiz or a question for the same. </dd>
- <dt class="yakshgreen"> User wise regrade </dt>
- <dd> You can regrade an answerpaper for an user or a question for the same. </dd>
- </dl>
- </div>
- <div id="questions" class="tab-pane fade" role="tabpanel" aria-labelledby="questionstab">
- <div class="card">
- {% for course in courses %}
-
- <div class="card-body">
- <h4><span class="">
- <a href="#questions_quizzes{{ course.id }}" data-toggle="collapse" class="btn btn-outline-success">Course: {{ course }}</a>
- </span></h4>
- <div id="questions_quizzes{{ course.id }}" class="collapse card">
- <div class="card-body">
- {% for quiz in course.get_quizzes %}
- <p><a href="#questions_questions{{ course.id }}{{ quiz.id }}" data-toggle="collapse" class="btn btn-outline-info">Quiz: {{ quiz }}</a></p>
- <div id="questions_questions{{ course.id }}{{ quiz.id }}" class="collapse card">
- {% with questionpaper=quiz.questionpaper_set.get %}
- <p class="text-center yakshred h5 bg-light"> Questions: </p>
- <ol class="list-group yakshwell">
- {% for question in questionpaper.fixed_questions.all %}
- <li class="list-group-item">{{ question.summary }}
- <a href="{{ URL_ROOT }}/exam/manage/regrade/questionpaper/{{ course.id }}/{{ question.id }}/{{ questionpaper.id }}/"
- class="btn btn-success pull-right"><span class="fa fa-repeat"></span> Regrade </a>
- </li>
- {% endfor %}
- {% for random_set in questionpaper.random_questions.all %}
- {% for question in random_set.questions.all %}
- <li class="list-group-item"> {{ question.summary }}
- <a href="{{ URL_ROOT }}/exam/manage/regrade/questionpaper/{{ course.id}}/{{ question.id }}/{{ questionpaper.id }}/"
- class="btn btn-success pull-right"><span class="fa fa-repeat"></span> Regrade </a>
- </li>
- {% endfor %}
- {% endfor %}
- </ol>
- {% endwith %}<br /><br />
- </div>
- {% endfor %}
- </div>
- </div>
- </div>
-
- {% endfor %}
- </div><!--card-->
- </div>
-
- <div id="quizzes" class="tab-pane fade" role="tabpanel" aria-labelledby="quizzestab">
- <div class="card">
- {% for course in courses %}
-
- <div class="card-body">
- <h4><span class="">
- <span class=""><a href="#quizzes_quizzes{{ course.id }}" data-toggle="collapse" class="btn btn-outline-success">Course: {{ course }}</a></span>
- </span></h4>
- <div id="quizzes_quizzes{{ course.id }}" class="collapse card">
- <div class="card-body">
- {% for quiz in course.get_quizzes %}
- <p><a href="#quizzes_papers{{ course.id }}{{ quiz.id }}" data-toggle="collapse" class="btn btn-outline-info">Quiz: {{ quiz }}</a></p>
- <div id="quizzes_papers{{ course.id }}{{ quiz.id }}" class="collapse">
- <ol class="list-group yakshwell">
- {% for answerpaper in quiz.questionpaper_set.get.answerpaper_set.all %}
- <li class="list-group-item bg-light">
- Username: {{ answerpaper.user.username }}; Name: {{ answerpaper.user.get_full_name }}; Attempt Number: {{ answerpaper.attempt_number}}
- <a href="{{ URL_ROOT }}/exam/manage/regrade/paper/{{ course.id }}/{{ answerpaper.id }}/"
- class="btn btn-success btn-sm pull-right"><span class="fa fa-repeat"></span> Regrade whole paper </a>
- </li>
- <ol class="list-group yakshwell">
- {% for question in answerpaper.questions.all %}
- <li class="list-group-item"> {{ question.summary }}
- <a href="{{ URL_ROOT }}/exam/manage/regrade/answerpaper/{{ course.id }}/{{ question.id }}/{{ answerpaper.id }}/"
- class="btn btn-success btn-sm pull-right"><span class="fa fa-repeat"></span> Regrade </a>
- </li>
- {% endfor %}
- </ol>
- {% endfor %}
- </ol>
- </div>
- {% endfor %}
- </div>
- </div>
- </div>
-
- {% endfor %}
- </div><!--card-->
- </div>
-
- <div id="users" class="tab-pane fade" role="tabpanel" aria-labelledby="userstab">
- <div class="card">
- <div class="card-body">
- {% for course in courses %}
-
- <h4><span class="">
- <a href="#users_users{{ course.id }}" data-toggle="collapse" class="btn btn-outline-success">Course: {{ course }}</a>
- </span></h4>
- <div id="users_users{{ course.id }}" class="collapse card">
- <div class="card-bodys">
- {% for user in course.students.all %}
- <p><a href="#users_papers{{ course.id }}{{ user.id }}" data-toggle="collapse" class="btn btn-outline-info"> Answer Papers for {{ user.get_full_name }}</a></p>
- <div id="users_papers{{ course.id }}{{ user.id }}" class="collapse card">
- <ol class="list-group yakshwell">
- {% for answerpaper in user.answerpaper_set.all %}
- <li class="list-group-item bg-light"> Quiz: {{answerpaper.question_paper.quiz.description }}; Attempt Number: {{ answerpaper.attempt_number }}
- <a href="{{ URL_ROOT }}/exam/manage/regrade/paper/{{ course.id }}/{{ answerpaper.id }}/"
- class="btn btn-success pull-right" ><span class="fa fa-repeat"></span> Regrade whole paper </a>
- </li>
- <ol class="list-group yakshwell">
- {% for question in answerpaper.questions.all %}
- <li class="list-group-item"> {{ question.summary }}
- <a href="{{ URL_ROOT }}/exam/manage/regrade/answerpaper/{{ course.id }}/{{ question.id }}/{{ answerpaper.id }}/"
- class="btn btn-success pull-right"><span class="fa fa-repeat"></span> Regrade </a>
- </li>
- {% endfor %}
- </ol>
- {% endfor %}
- </ol>
- </div>
- {% endfor %}
- </div>
- </div>
-
- {% endfor %}
-</div>
- </div><!--well-->
- </div>
-
- </main><!--span10-->
-</div><!--row-->
-
-{% if details %}
-<div>
- <table class="table table-responsive-sm">
- <tbody>
- {% for detail in details %}
- {% if detail.0 %}
- <tr class="table-success">
- <td> Graded Successfully </td>
- {% else%}
- <tr class="table-danger">
- <td> Did not Grade </td>
- {% endif %}
- <td> {{ detail.1|linebreaks }} </td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- </div>
- {% endif %}
-</div>
-{% endblock %}
diff --git a/yaksh/templates/yaksh/user_data.html b/yaksh/templates/yaksh/user_data.html
index 6547851..6252fb3 100644
--- a/yaksh/templates/yaksh/user_data.html
+++ b/yaksh/templates/yaksh/user_data.html
@@ -33,11 +33,6 @@
</div>
</div>
{% endwith %}
- <br>
- <a href="{% url 'yaksh:grade_user' data.papers.0.question_paper.quiz.id data.user.id course_id %}" class="btn btn-info">
- Grade User
- </a>
- <br>
{% for paper in data.papers %}
<br>
<h3><b><u>Attempt Number:</u></b>&nbsp;<span class="badge badge-pill badge-info">
diff --git a/yaksh/templates/yaksh/view_notifications.html b/yaksh/templates/yaksh/view_notifications.html
new file mode 100644
index 0000000..48193ed
--- /dev/null
+++ b/yaksh/templates/yaksh/view_notifications.html
@@ -0,0 +1,62 @@
+{% extends template %}
+{% block title %} Notifications {% endblock %}
+{% block pagetitle %} Notifications {% endblock %}
+
+{% block main %}
+ <div class="container">
+ {% if messages %}
+ {% for message in messages %}
+ <div class="alert alert-dismissible alert-{{ message.tags }}">
+ <button type="button" class="close" data-dismiss="alert">
+ <i class="fa fa-close"></i>
+ </button>
+ <strong>{{ message }}</strong>
+ </div>
+ {% endfor %}
+ {% endif %}
+ {% if notifications %}
+ <form method="post" action="{% url 'yaksh:mark_notification' %}">
+ {% csrf_token %}
+ <button href="{% url 'yaksh:mark_notification' %}" class="btn btn-outline-success">
+ <i class="fa fa-check"></i>&nbsp;Mark all as read
+ </button>
+ <br><br>
+ <div class="row">
+ {% for notification in notifications %}
+ <div class="col-md-4">
+ <div class="toast show" role="alert" aria-live="assertive" aria-atomic="true">
+ {% with notification.message as message %}
+ <input type="hidden" name="uid" value="{{message.uid}}">
+ <div class="toast-header bg-{{message.message_type}}">
+ <strong class="mr-auto text-white">
+ {{message.summary}}
+ </strong>
+ <small class="text-white">
+ {{notification.timestamp|timesince:current_date_time}}
+ </small>
+ <a href="{% url 'yaksh:mark_notification' message.uid %}" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
+ <span class="fa fa-check" aria-hidden="true" title="Mark as read"></span>
+ </a>
+ </div>
+ <div class="toast-body">
+ {% if user.id != message.creator.id %}
+ <p><b>From: </b>{{message.creator.get_full_name}}</p>
+ {% endif %}
+ <p><b>Description:</b></p>
+ {{message.description|safe}}
+ </div>
+ {% endwith %}
+ </div>
+ <br>
+ </div>
+ {% endfor %}
+ </div>
+ </form>
+ {% else %}
+ <br>
+ <div class="alert alert-info">
+ <center>No Notifications Found</center>
+ </div>
+ {% endif %}
+ </div>
+{% endblock %} \ No newline at end of file