create base useranswer class

This commit is contained in:
Ross
2023-05-15 11:12:52 +01:00
parent 525373f393
commit 7aa78c2807
33 changed files with 198 additions and 131 deletions
+3 -3
View File
@@ -2,7 +2,7 @@ import django_filters
from .models import Category, Question, CidUserAnswer, Exam
#from generic.filters import UserAnswerFilter
#from generic.filters import CidUserAnswerFilter
from django.contrib.auth.models import User
@@ -43,7 +43,7 @@ class QuestionFilter(django_filters.FilterSet):
super(QuestionFilter, 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 = (
@@ -59,5 +59,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="sba_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
@@ -0,0 +1,22 @@
# Generated by Django 4.1.4 on 2023-05-15 10:11
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sbas', '0016_remove_exam_stats_graph'),
]
operations = [
migrations.AlterModelOptions(
name='ciduseranswer',
options={'ordering': ['cid']},
),
migrations.AlterField(
model_name='ciduseranswer',
name='cid',
field=models.BigIntegerField(blank=True, help_text='Candidate ID (limitied by BigIntegerField size)', null=True),
),
]
+2 -7
View File
@@ -11,7 +11,7 @@ from django.utils.translation import gettext_lazy as _
from sortedm2m.fields import SortedManyToManyField
from generic.models import CidUser, CidUserGroup, ExamBase, ExamUserStatus, QuestionNote, UserUserGroup
from generic.models import CidUser, CidUserGroup, ExamBase, ExamUserStatus, QuestionNote, CidUserAnswerBase, UserUserGroup
import reversion
@@ -205,7 +205,7 @@ class Exam(ExamBase):
@reversion.register
class CidUserAnswer(models.Model):
class CidUserAnswer(CidUserAnswerBase):
"""User answers by candidate"""
question = models.ForeignKey(
@@ -217,8 +217,6 @@ class CidUserAnswer(models.Model):
help_text="The correct answer",
)
cid = models.IntegerField(blank=True, null=True)
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
@@ -232,9 +230,6 @@ class CidUserAnswer(models.Model):
Exam, related_name="cid_user_answers", on_delete=models.CASCADE, null=True
)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return "{}/{}/{}".format(self.cid, self.exam, self.question.pk)
+2 -2
View File
@@ -10,7 +10,7 @@ from django.utils.html import format_html
#from easy_thumbnails.exceptions import InvalidImageFormatError
#from generic.tables import UserAnswerTable
#from generic.tables import CidUserAnswerTable
#class ImageColumn(tables.Column):
@@ -69,7 +69,7 @@ class QuestionTable(tables.Table):
return mark_safe(value)
class UserAnswerTable(tables.Table):
class CidUserAnswerTable(tables.Table):
select = tables.CheckBoxColumn(accessor=("pk"))
#delete = tables.LinkColumn(
# "sbas:user_answer_delete", text="Delete", args=[A("pk")], orderable=False
+3 -3
View File
@@ -50,15 +50,15 @@ urlpatterns = [
# path("exam/json/<int:pk>/recreate", views.exam_json_recreate, name="exam_json_recreate"),
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
View File
@@ -48,8 +48,8 @@ from rest_framework.pagination import PageNumberPagination
from django.core.exceptions import PermissionDenied
from .tables import QuestionTable, UserAnswerTable
from .filters import QuestionFilter, UserAnswerFilter
from .tables import QuestionTable, CidUserAnswerTable
from .filters import QuestionFilter, CidUserAnswerFilter
from .forms import (
QuestionForm,
@@ -404,19 +404,19 @@ class QuestionClone(QuestionCreateBase):
return initial_data
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 = "sbas/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("sbas:user_answer_table_view")