.
This commit is contained in:
@@ -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
@@ -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
@@ -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",
|
||||
)
|
||||
|
||||
@@ -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 %}
|
||||
@@ -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
@@ -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
@@ -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
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user