diff options
Diffstat (limited to 'yaksh/templates')
-rw-r--r-- | yaksh/templates/manage.html | 30 | ||||
-rw-r--r-- | yaksh/templates/yaksh/grade_user.html | 109 | ||||
-rw-r--r-- | yaksh/templates/yaksh/monitor.html | 366 | ||||
-rw-r--r-- | yaksh/templates/yaksh/regrade.html | 175 | ||||
-rw-r--r-- | yaksh/templates/yaksh/user_data.html | 5 | ||||
-rw-r--r-- | yaksh/templates/yaksh/view_notifications.html | 62 |
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> 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 7206525..fdfcc4e 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' %}"> @@ -34,7 +34,7 @@ $(document).ready(function() </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> @@ -53,7 +53,12 @@ $(document).ready(function() {{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> @@ -117,6 +122,46 @@ $(document).ready(function() </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 <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> Regrade + </a> + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> + {% endwith %} + </div> + </div> + <br> + {% endif %} {% if messages %} {% for message in messages %} @@ -219,7 +264,16 @@ $(document).ready(function() {% 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> 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'> @@ -228,6 +282,7 @@ $(document).ready(function() <th>Questions</th> <th>Type</th> <th>Marks Obtained</th> + <th>Regrade by question</th> </tr> </thead> <tbody> @@ -241,6 +296,11 @@ $(document).ready(function() </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> Regrade + </a> + </td> </tr> {% endwith %} {% endfor %} @@ -255,7 +315,8 @@ $(document).ready(function() <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"> @@ -501,4 +562,40 @@ $(document).ready(function() </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">×</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: </b></td> - <td>{{course.name}}</td> - </tr> - <tr> - <td><b>Quiz Name: </b></td> - <td>{{quiz.description}}</td> - </tr> - <tr> - <td><b>Number of papers:  </b></td> - <td>{{papers|length}}</td> - </tr> - <tr> - <td><b>Papers Completed:  </b></td> - <td> - {% completed papers as completed_papers %} - <b>{{completed_papers}}</b> - </td> - </tr> - <tr> - <td><b>Papers in progress:  </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: </b></td> + <td>{{course.name}}</td> + </tr> + <tr> + <td><b>Quiz Name: </b></td> + <td>{{quiz.description}}</td> + </tr> + <tr> + <td><b>Number of papers:  </b></td> + <td>{{papers|length}}</td> + </tr> + <tr> + <td><b>Papers Completed:  </b></td> + <td> + {% completed papers as completed_papers %} + <b>{{completed_papers}}</b> + </td> + </tr> + <tr> + <td><b>Papers in progress:  </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> 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> 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> 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> 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 <i class="fa fa-sort"></i> </th> - <th> Username <i class="fa fa-sort"></i> </th> - <th> Roll No <i class="fa fa-sort"></i> </th> - <th> Institute <i class="fa fa-sort"></i> </th> - <th> Marks <i class="fa fa-sort"></i> </th> - <th> Attempts <i class="fa fa-sort"></i> </th> - <th> Time <i class="fa fa-sort"></i> </th> - <th> Status <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 <i class="fa fa-sort"></i> </th> + <th> Username <i class="fa fa-sort"></i> </th> + <th> Roll No <i class="fa fa-sort"></i> </th> + <th> Institute <i class="fa fa-sort"></i> </th> + <th> Marks <i class="fa fa-sort"></i> </th> + <th> Attempts <i class="fa fa-sort"></i> </th> + <th> Time <i class="fa fa-sort"></i> </th> + <th> Status <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> 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> 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> <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> 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 |