create base useranswer class
This commit is contained in:
+2
-2
@@ -53,7 +53,7 @@ class LongSeriesFilter(django_filters.FilterSet):
|
||||
super(LongSeriesFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request)
|
||||
pass
|
||||
|
||||
class UserAnswerFilter(django_filters.FilterSet):
|
||||
class CidUserAnswerFilter(django_filters.FilterSet):
|
||||
class Meta:
|
||||
model = CidUserAnswer
|
||||
fields = (
|
||||
@@ -69,5 +69,5 @@ class UserAnswerFilter(django_filters.FilterSet):
|
||||
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)
|
||||
super(CidUserAnswerFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request)
|
||||
pass
|
||||
+2
-16
@@ -38,6 +38,7 @@ from generic.models import (
|
||||
Plane,
|
||||
Contrast,
|
||||
QuestionNote,
|
||||
CidUserAnswerBase,
|
||||
UserUserGroup,
|
||||
)
|
||||
|
||||
@@ -752,7 +753,7 @@ class Exam(ExamBase):
|
||||
|
||||
|
||||
@reversion.register
|
||||
class CidUserAnswer(models.Model):
|
||||
class CidUserAnswer(CidUserAnswerBase):
|
||||
"""User answers by candidate"""
|
||||
|
||||
question = models.ForeignKey(
|
||||
@@ -812,11 +813,7 @@ class CidUserAnswer(models.Model):
|
||||
# "AnswerMarks", related_name="user_answer", on_delete=models.SET_NULL, null=True, blank=True
|
||||
# )
|
||||
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
updated = models.DateTimeField(auto_now=True)
|
||||
|
||||
class Meta:
|
||||
ordering = ["cid"]
|
||||
|
||||
def __str__(self):
|
||||
try:
|
||||
@@ -885,17 +882,6 @@ class CidUserAnswer(models.Model):
|
||||
def get_absolute_url(self):
|
||||
return reverse("longs:user_answer_view", kwargs={"pk": self.pk})
|
||||
|
||||
def get_candidate_name(self) -> str:
|
||||
if self.cid is not None:
|
||||
return str(self.cid)
|
||||
else:
|
||||
return self.user.username
|
||||
|
||||
def get_candidate_masked(self) -> str:
|
||||
if self.cid is not None:
|
||||
return str(self.cid)
|
||||
else:
|
||||
return str(self.user.id)
|
||||
|
||||
|
||||
@reversion.register
|
||||
|
||||
+1
-1
@@ -130,7 +130,7 @@ class LongSeriesTable(tables.Table):
|
||||
print(self)
|
||||
return format_html("""<a href="#" onclick="return window.create_popup_window('/longs/series/{}', 'Series')" >Popup</a>""", record.pk)
|
||||
|
||||
class UserAnswerTable(tables.Table):
|
||||
class CidUserAnswerTable(tables.Table):
|
||||
select = tables.CheckBoxColumn(accessor=("pk"))
|
||||
delete = tables.LinkColumn(
|
||||
"longs:user_answer_delete", text="Delete", args=[A("pk")], orderable=False
|
||||
|
||||
+3
-3
@@ -136,15 +136,15 @@ urlpatterns = [
|
||||
),
|
||||
path(
|
||||
"user_answers/",
|
||||
views.UserAnswerTableView.as_view(),
|
||||
views.CidUserAnswerTableView.as_view(),
|
||||
name="user_answer_table_view",
|
||||
),
|
||||
path(
|
||||
"user_answers/<int:pk>", views.UserAnswerView.as_view(), name="user_answer_view"
|
||||
"user_answers/<int:pk>", views.CidUserAnswerView.as_view(), name="user_answer_view"
|
||||
),
|
||||
path(
|
||||
"user_answers/<int:pk>/delete",
|
||||
views.UserAnswerDelete.as_view(),
|
||||
views.CidUserAnswerDelete.as_view(),
|
||||
name="user_answer_delete",
|
||||
),
|
||||
path(
|
||||
|
||||
+7
-7
@@ -43,8 +43,8 @@ from .models import (
|
||||
Exam,
|
||||
CidUserAnswer,
|
||||
)
|
||||
from .tables import LongTable, LongSeriesTable, UserAnswerTable
|
||||
from .filters import LongFilter, LongSeriesFilter, UserAnswerFilter
|
||||
from .tables import LongTable, LongSeriesTable, CidUserAnswerTable
|
||||
from .filters import LongFilter, LongSeriesFilter, CidUserAnswerFilter
|
||||
|
||||
from django_tables2 import SingleTableView, SingleTableMixin
|
||||
from django_filters.views import FilterView
|
||||
@@ -1194,19 +1194,19 @@ def question_json_recreate(request, pk):
|
||||
return redirect("longs:question_detail", pk=pk)
|
||||
|
||||
|
||||
class UserAnswerView(LoginRequiredMixin, DetailView):
|
||||
class CidUserAnswerView(LoginRequiredMixin, DetailView):
|
||||
model = CidUserAnswer
|
||||
|
||||
|
||||
class UserAnswerTableView(LoginRequiredMixin, SingleTableMixin, FilterView):
|
||||
class CidUserAnswerTableView(LoginRequiredMixin, SingleTableMixin, FilterView):
|
||||
model = CidUserAnswer
|
||||
table_class = UserAnswerTable
|
||||
table_class = CidUserAnswerTable
|
||||
template_name = "longs/user_answer_question_view.html"
|
||||
|
||||
filterset_class = UserAnswerFilter
|
||||
filterset_class = CidUserAnswerFilter
|
||||
|
||||
|
||||
class UserAnswerDelete(SuperuserRequiredMixin, DeleteView):
|
||||
class CidUserAnswerDelete(SuperuserRequiredMixin, DeleteView):
|
||||
model = CidUserAnswer
|
||||
template_name = "user_answer_delete.html"
|
||||
success_url = reverse_lazy("longs:user_answer_table_view")
|
||||
|
||||
Reference in New Issue
Block a user