.
This commit is contained in:
@@ -491,14 +491,14 @@ td.user-answer-score-2::after {
|
|||||||
color: red
|
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
|
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
|
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
|
color: green
|
||||||
}
|
}
|
||||||
+20
-1
@@ -1,6 +1,6 @@
|
|||||||
import django_filters
|
import django_filters
|
||||||
|
|
||||||
from .models import Long, LongSeries, Exam
|
from .models import Long, LongSeries, Exam, CidUserAnswer
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
|
||||||
def get_exams(request):
|
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(open_access=True) | queryset.filter(author__id=request.user.id)
|
||||||
queryset = 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)
|
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
|
pass
|
||||||
+26
-2
@@ -1,7 +1,7 @@
|
|||||||
import django_tables2 as tables
|
import django_tables2 as tables
|
||||||
from django_tables2.utils import A
|
from django_tables2.utils import A
|
||||||
|
|
||||||
from .models import Long, LongSeries
|
from .models import Long, LongSeries, CidUserAnswer
|
||||||
|
|
||||||
from django.utils.html import format_html
|
from django.utils.html import format_html
|
||||||
|
|
||||||
@@ -111,4 +111,28 @@ class LongSeriesTable(tables.Table):
|
|||||||
|
|
||||||
def render_popup(self, value, record):
|
def render_popup(self, value, record):
|
||||||
print(self)
|
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",
|
name="long_series_update",
|
||||||
),
|
),
|
||||||
path("<int:pk>/add_note", views.AddNote.as_view(), name="long_add_note"),
|
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.core.exceptions import ObjectDoesNotExist, PermissionDenied, ViewDoesNotExist
|
||||||
|
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
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.edit import CreateView, UpdateView, DeleteView
|
||||||
from django.views.generic import ListView
|
from django.views.generic import ListView
|
||||||
@@ -33,8 +35,8 @@ from .models import (
|
|||||||
Exam,
|
Exam,
|
||||||
CidUserAnswer,
|
CidUserAnswer,
|
||||||
)
|
)
|
||||||
from .tables import LongTable, LongSeriesTable
|
from .tables import LongTable, LongSeriesTable, UserAnswerTable
|
||||||
from .filters import LongFilter, LongSeriesFilter
|
from .filters import LongFilter, LongSeriesFilter, UserAnswerFilter
|
||||||
|
|
||||||
from django_tables2 import SingleTableView, SingleTableMixin
|
from django_tables2 import SingleTableView, SingleTableMixin
|
||||||
from django_filters.views import FilterView
|
from django_filters.views import FilterView
|
||||||
@@ -998,4 +1000,21 @@ def question_json_recreate(request, pk):
|
|||||||
|
|
||||||
#question.get_question_json()
|
#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",
|
name="rapid_update",
|
||||||
),
|
),
|
||||||
path("<int:pk>/add_note", views.AddNote.as_view(), name="rapid_add_note"),
|
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/", views.UserAnswerTableView.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/<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"),
|
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)
|
return super().form_valid(form)
|
||||||
|
|
||||||
|
|
||||||
class RapidUserAnswerView(LoginRequiredMixin, DetailView):
|
class UserAnswerView(LoginRequiredMixin, DetailView):
|
||||||
model = CidUserAnswer
|
model = CidUserAnswer
|
||||||
|
|
||||||
|
|
||||||
class RapidUserAnswerTableView(LoginRequiredMixin, SingleTableMixin, FilterView):
|
class UserAnswerTableView(LoginRequiredMixin, SingleTableMixin, FilterView):
|
||||||
model = CidUserAnswer
|
model = CidUserAnswer
|
||||||
table_class = RapidUserAnswerTable
|
table_class = RapidUserAnswerTable
|
||||||
template_name = "rapids/rapid_question_view.html"
|
template_name = "rapids/rapid_question_view.html"
|
||||||
|
|||||||
Reference in New Issue
Block a user