.
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
{% extends 'physics/base.html' %}
|
||||||
|
|
||||||
|
{% block css %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div id="view-filter-options">
|
||||||
|
<h3>Filter SBA Questions</h3>
|
||||||
|
<form action="" method="get">
|
||||||
|
|
||||||
|
{{ filter.form }}
|
||||||
|
|
||||||
|
<input class="btn btn-primary btn-sm mt-1 mb-1" type="submit" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{% autoescape off %}
|
||||||
|
{% load render_table from django_tables2 %}
|
||||||
|
{% render_table table %}
|
||||||
|
{% endautoescape %}
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{% extends 'physics/base.html' %}
|
||||||
|
|
||||||
|
{% load render_table from django_tables2 %}
|
||||||
|
{% block css %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div id="view-filter-options">
|
||||||
|
<h3>Physics User Answers</h3>
|
||||||
|
<form action="" method="get">
|
||||||
|
{{ filter.form }}
|
||||||
|
<input class="btn btn-primary btn-sm mt-1 mb-1" type="submit" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{% render_table table %}
|
||||||
|
<button id="delete-selected-button">Delete selected answers</button>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block js %}
|
||||||
|
<script>
|
||||||
|
$(document).ready(function () {
|
||||||
|
$("#delete-selected-button").on("click", () => {
|
||||||
|
window.delete_multiple(
|
||||||
|
"{% url 'physics:user_answer_delete_multiple' %}", "{{ csrf_token }}"
|
||||||
|
)
|
||||||
|
})
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
||||||
@@ -1,3 +1,6 @@
|
|||||||
|
from physics.filters import QuestionFilter, UserAnswerFilter
|
||||||
|
from generic.mixins import SuperuserRequiredMixin
|
||||||
|
from physics.tables import QuestionTable, UserAnswerTable
|
||||||
from django.shortcuts import render, get_object_or_404, redirect
|
from django.shortcuts import render, get_object_or_404, redirect
|
||||||
from django.views.decorators.csrf import csrf_exempt
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
from django import forms
|
from django import forms
|
||||||
@@ -7,6 +10,7 @@ from django.contrib.auth.decorators import login_required, user_passes_test
|
|||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||||
|
from django.views.generic.detail import DetailView
|
||||||
|
|
||||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||||
from django.views.generic import ListView
|
from django.views.generic import ListView
|
||||||
@@ -20,6 +24,8 @@ from django.urls import reverse_lazy, reverse
|
|||||||
from django.http import Http404, JsonResponse
|
from django.http import Http404, JsonResponse
|
||||||
|
|
||||||
from django.http import HttpResponseRedirect, HttpResponse
|
from django.http import HttpResponseRedirect, HttpResponse
|
||||||
|
from django_filters.views import FilterView
|
||||||
|
from django_tables2.views import SingleTableMixin
|
||||||
from reversion.views import RevisionMixin
|
from reversion.views import RevisionMixin
|
||||||
|
|
||||||
from .models import Question, Category, Exam, CidUserAnswer
|
from .models import Question, Category, Exam, CidUserAnswer
|
||||||
@@ -323,3 +329,27 @@ class ExamCreate(RevisionMixin, LoginRequiredMixin, CreateView):
|
|||||||
|
|
||||||
class ExamClone(ExamCloneMixin, ExamCreate):
|
class ExamClone(ExamCloneMixin, ExamCreate):
|
||||||
"""Clone exam view"""
|
"""Clone exam view"""
|
||||||
|
|
||||||
|
class QuestionView(LoginRequiredMixin, SingleTableMixin, FilterView):
|
||||||
|
model = Question
|
||||||
|
table_class = QuestionTable
|
||||||
|
template_name = "physics/question_view.html"
|
||||||
|
|
||||||
|
filterset_class = QuestionFilter
|
||||||
|
|
||||||
|
class UserAnswerView(LoginRequiredMixin, DetailView):
|
||||||
|
model = CidUserAnswer
|
||||||
|
|
||||||
|
|
||||||
|
class UserAnswerTableView(LoginRequiredMixin, SingleTableMixin, FilterView):
|
||||||
|
model = CidUserAnswer
|
||||||
|
table_class = UserAnswerTable
|
||||||
|
template_name = "physics/user_answer_question_view.html"
|
||||||
|
|
||||||
|
filterset_class = UserAnswerFilter
|
||||||
|
|
||||||
|
|
||||||
|
class UserAnswerDelete(SuperuserRequiredMixin, DeleteView):
|
||||||
|
model = CidUserAnswer
|
||||||
|
template_name = "user_answer_delete.html"
|
||||||
|
success_url = reverse_lazy("physics:user_answer_table_view")
|
||||||
@@ -1098,3 +1098,4 @@ def question_save_annotation(request, pk):
|
|||||||
|
|
||||||
class ExamClone(ExamCloneMixin, ExamCreate):
|
class ExamClone(ExamCloneMixin, ExamCreate):
|
||||||
"""Clone exam view"""
|
"""Clone exam view"""
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user