This commit is contained in:
Ross
2021-08-03 20:34:35 +01:00
parent cdc1259e56
commit accef904be
8 changed files with 96 additions and 13 deletions
+3 -3
View File
@@ -491,14 +491,14 @@ td.user-answer-score-2::after {
color: red
}
table.longs .user-answer-score-5, table.longs .user-answer-score-5\.5 {
table.longs .user-answer-score-5\.0, table.longs .user-answer-score-5\.5 {
color: yellow
}
table.longs .user-answer-score-6, table.longs .user-answer-score-6\.5 {
table.longs .user-answer-score-6\.0, table.longs .user-answer-score-6\.5 {
color: yellowgreen
}
table.longs .user-answer-score-7, table.longs .user-answer-score-7\.5 {
table.longs .user-answer-score-7\.0, table.longs .user-answer-score-7\.5 {
color: green
}
+20 -1
View File
@@ -1,6 +1,6 @@
import django_filters
from .models import Long, LongSeries, Exam
from .models import Long, LongSeries, Exam, CidUserAnswer
from django.contrib.auth.models import User
def get_exams(request):
@@ -51,4 +51,23 @@ class LongSeriesFilter(django_filters.FilterSet):
#queryset = queryset.filter(open_access=True) | queryset.filter(author__id=request.user.id)
queryset = queryset.filter(author__id=request.user.id)
super(LongSeriesFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request)
pass
class UserAnswerFilter(django_filters.FilterSet):
class Meta:
model = CidUserAnswer
fields = (
"cid",
"normal",
"answer",
#"answer_compare",
"exam",
"created",
"updated",
)
def __init__(self, data=None, queryset=None, prefix=None, strict=None, user=None, request=None):
if not request.user.groups.filter(name="long_checker").exists():
queryset = queryset.filter(open_access=True) | queryset.filter(author__id=request.user.id)
super(UserAnswerFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request)
pass
+26 -2
View File
@@ -1,7 +1,7 @@
import django_tables2 as tables
from django_tables2.utils import A
from .models import Long, LongSeries
from .models import Long, LongSeries, CidUserAnswer
from django.utils.html import format_html
@@ -111,4 +111,28 @@ class LongSeriesTable(tables.Table):
def render_popup(self, value, record):
print(self)
return format_html("""<a href="#" onclick="return window.create_popup_window('/longs/series/{}', 'Series')" >Popup</a>""", record.pk)
return format_html("""<a href="#" onclick="return window.create_popup_window('/longs/series/{}', 'Series')" >Popup</a>""", record.pk)
class UserAnswerTable(tables.Table):
select = tables.CheckBoxColumn(accessor=("pk"))
delete = tables.LinkColumn(
"longs:user_answer_delete", text="Delete", args=[A("pk")], orderable=False
)
view = tables.LinkColumn('longs:user_answer_view',
text='View',
args=[A('pk')],
orderable=False)
class Meta:
model = CidUserAnswer
template_name = "django_tables2/bootstrap4.html"
fields = (
"cid",
"question",
"normal",
"answer",
#"answer_compare",
"exam",
"created",
"updated",
)
+18
View File
@@ -0,0 +1,18 @@
{% extends 'longs/base.html' %}
{% load render_table from django_tables2 %}
{% block css %}
{% endblock %}
{% block content %}
<div id="view-filter-options">
<h3>Filter Long </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 %}
{% endblock %}
+3
View File
@@ -104,4 +104,7 @@ urlpatterns = [
name="long_series_update",
),
path("<int:pk>/add_note", views.AddNote.as_view(), name="long_add_note"),
path("user_answers/", views.UserAnswerTableView.as_view(), name="user_answer_table_view"),
path("user_answers/<int:pk>", views.UserAnswerView.as_view(), name="user_answer_view"),
path("user_answers/<int:pk>/delete", views.UserAnswerDelete.as_view(), name="user_answer_delete"),
]
+22 -3
View File
@@ -8,6 +8,8 @@ from django.contrib.auth.models import User
from django.core.exceptions import ObjectDoesNotExist, PermissionDenied, ViewDoesNotExist
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic.detail import DetailView
from generic.mixins import SuperuserRequiredMixin
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.views.generic import ListView
@@ -33,8 +35,8 @@ from .models import (
Exam,
CidUserAnswer,
)
from .tables import LongTable, LongSeriesTable
from .filters import LongFilter, LongSeriesFilter
from .tables import LongTable, LongSeriesTable, UserAnswerTable
from .filters import LongFilter, LongSeriesFilter, UserAnswerFilter
from django_tables2 import SingleTableView, SingleTableMixin
from django_filters.views import FilterView
@@ -998,4 +1000,21 @@ def question_json_recreate(request, pk):
#question.get_question_json()
return redirect("longs:question_detail", pk=pk)
return redirect("longs:question_detail", pk=pk)
class UserAnswerView(LoginRequiredMixin, DetailView):
model = CidUserAnswer
class UserAnswerTableView(LoginRequiredMixin, SingleTableMixin, FilterView):
model = CidUserAnswer
table_class = UserAnswerTable
template_name = "longs/question_view.html"
filterset_class = UserAnswerFilter
class UserAnswerDelete(SuperuserRequiredMixin, DeleteView):
model = CidUserAnswer
success_url = reverse_lazy("longs:user_answer_table_view")
+2 -2
View File
@@ -66,7 +66,7 @@ urlpatterns = [
name="rapid_update",
),
path("<int:pk>/add_note", views.AddNote.as_view(), name="rapid_add_note"),
path("user_answers/", views.RapidUserAnswerTableView.as_view(), name="rapid_user_answer_table_view"),
path("user_answers/<int:pk>", views.RapidUserAnswerView.as_view(), name="rapid_user_answer_view"),
path("user_answers/", views.UserAnswerTableView.as_view(), name="rapid_user_answer_table_view"),
path("user_answers/<int:pk>", views.UserAnswerView.as_view(), name="rapid_user_answer_view"),
path("user_answers/<int:pk>/delete", views.UserAnswerDelete.as_view(), name="rapid_user_answer_delete"),
]
+2 -2
View File
@@ -985,11 +985,11 @@ class ExamUpdate(
return super().form_valid(form)
class RapidUserAnswerView(LoginRequiredMixin, DetailView):
class UserAnswerView(LoginRequiredMixin, DetailView):
model = CidUserAnswer
class RapidUserAnswerTableView(LoginRequiredMixin, SingleTableMixin, FilterView):
class UserAnswerTableView(LoginRequiredMixin, SingleTableMixin, FilterView):
model = CidUserAnswer
table_class = RapidUserAnswerTable
template_name = "rapids/rapid_question_view.html"