This commit is contained in:
Ross
2021-09-25 21:20:07 +01:00
parent 85379eb128
commit f8f8e21298
3 changed files with 71 additions and 2 deletions
+4
View File
@@ -60,6 +60,10 @@ class AnatomyUserAnswerTable(tables.Table):
delete = tables.LinkColumn( delete = tables.LinkColumn(
"anatomy:user_answer_delete", text="Delete", args=[A("pk")], orderable=False "anatomy:user_answer_delete", text="Delete", args=[A("pk")], orderable=False
) )
view = tables.LinkColumn('anatomy:user_answer_view',
text='View',
args=[A('pk')],
orderable=False)
class Meta: class Meta:
model = CidUserAnswer model = CidUserAnswer
template_name = "django_tables2/bootstrap4.html" template_name = "django_tables2/bootstrap4.html"
@@ -0,0 +1,66 @@
{% extends 'anatomy/base.html' %}
{% load render_table from django_tables2 %}
{% block css %}
{% endblock %}
{% block content %}
<div id="view-filter-options">
<h3>Anatomy 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 () {
$("table thead th input").click((e) => {
let status = e.currentTarget.checked; console.log(status, $("table tbody input")); $("table tbody input").prop("checked", status);
})
//$("thead input:checked").each((n, el) => {
$("#delete-selected-button").on("click", function () {
answer_ids = [];
$("tbody input:checked").each((n, el) => {
answer_ids.push(el.value);
})
if (confirm(`Delete ${answer_ids.length} answers?`)) {
$.ajax({
url: "{% url 'anatomy:user_answer_delete_multiple' %}",
data: {
csrfmiddlewaretoken: "{{ csrf_token }}",
answer_ids: JSON.stringify(answer_ids) // true if checked else false
},
type: "POST",
dataType: "json",
})
// $.ajax().done(), $.ajax().fail(), $ajax().always() are upto you. Add/change accordingly
.done(function (data) {
console.log(data);
if (data.status == "success") {
toastr.info('Deleted.')
location.reload();
} else {
toastr.info('Error deleting questions.')
}
// show some message according to the response.
// For eg. A message box showing that the status has been changed
})
.always(function () {
console.log('[Done]');
})
}
})
});
</script>
{% endblock %}
+1 -2
View File
@@ -9,7 +9,6 @@ from django.contrib.auth.models import User
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
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
@@ -952,7 +951,7 @@ class AnatomyQuestionView(LoginRequiredMixin, SingleTableMixin, FilterView):
class UserAnswerTableView(LoginRequiredMixin, SingleTableMixin, FilterView): class UserAnswerTableView(LoginRequiredMixin, SingleTableMixin, FilterView):
model = CidUserAnswer model = CidUserAnswer
table_class = AnatomyUserAnswerTable table_class = AnatomyUserAnswerTable
template_name = "anatomy/anatomy_question_view.html" template_name = "anatomy/user_answer_question_view.html"
filterset_class = AnatomyUserAnswerFilter filterset_class = AnatomyUserAnswerFilter