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 AnatomyQuestion, CidUserAnswer, Exam
#from generic.filters import UserAnswerFilter
#from generic.filters import CidUserAnswerFilter
from django.contrib.auth.models import User
@@ -46,7 +46,7 @@ class AnatomyQuestionFilter(django_filters.FilterSet):
super(AnatomyQuestionFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request)
pass
class AnatomyUserAnswerFilter(django_filters.FilterSet):
class AnatomyCidUserAnswerFilter(django_filters.FilterSet):
class Meta:
model= CidUserAnswer
fields = (
@@ -63,5 +63,5 @@ class AnatomyUserAnswerFilter(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="anatomy_checker").exists():
queryset = queryset.filter(open_access=True) | queryset.filter(author__id=request.user.id)
super(AnatomyUserAnswerFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request)
super(AnatomyCidUserAnswerFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request)
pass
@@ -0,0 +1,17 @@
# Generated by Django 4.1.4 on 2023-05-15 10:11
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('anatomy', '0067_alter_anatomyquestion_image'),
]
operations = [
migrations.AlterModelOptions(
name='ciduseranswer',
options={'ordering': ['cid']},
),
]
+2 -11
View File
@@ -16,7 +16,7 @@ from sortedm2m.fields import SortedManyToManyField
import string
from generic.models import CidUser, CidUserGroup, ExamUserStatus, Examination, ExamBase, QuestionNote, UserUserGroup
from generic.models import CidUser, CidUserGroup, ExamUserStatus, Examination, ExamBase, QuestionNote, CidUserAnswerBase, UserUserGroup
from collections import defaultdict
from helpers.images import image_as_base64
@@ -467,7 +467,7 @@ class Exam(ExamBase):
@reversion.register
class CidUserAnswer(models.Model):
class CidUserAnswer(CidUserAnswerBase):
"""User answers by candidate"""
question = models.ForeignKey(
@@ -477,12 +477,6 @@ class CidUserAnswer(models.Model):
answer_compare = models.TextField(max_length=500, blank=True)
cid = models.BigIntegerField(
blank=True,
null=True,
help_text="Candidate ID (limitied by BigIntegerField size)",
)
user = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True, related_name="user_anatomy_user_answers"
)
@@ -492,9 +486,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)
score = models.CharField(
max_length=1,
choices=Answer.MarkOptions.choices,
+2 -2
View File
@@ -9,7 +9,7 @@ from easy_thumbnails.files import get_thumbnailer
from easy_thumbnails.exceptions import InvalidImageFormatError
#from generic.tables import UserAnswerTable
#from generic.tables import CidUserAnswerTable
class ImageColumn(tables.Column):
@@ -64,7 +64,7 @@ class AnatomyQuestionTable(tables.Table):
*args,
**kwargs,
)
class AnatomyUserAnswerTable(tables.Table):
class AnatomyCidUserAnswerTable(tables.Table):
select = tables.CheckBoxColumn(accessor=("pk"))
delete = tables.LinkColumn(
"anatomy:user_answer_delete", text="Delete", args=[A("pk")], orderable=False
+3 -3
View File
@@ -73,15 +73,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(
+12 -12
View File
@@ -55,8 +55,8 @@ from reversion.views import RevisionMixin
from .decorators import user_is_author_or_anatomy_checker
from .tables import AnatomyQuestionTable, AnatomyUserAnswerTable
from .filters import AnatomyQuestionFilter, AnatomyUserAnswerFilter
from .tables import AnatomyQuestionTable, AnatomyCidUserAnswerTable
from .filters import AnatomyQuestionFilter, AnatomyCidUserAnswerFilter
from django_tables2 import SingleTableView, SingleTableMixin
from django_filters.views import FilterView
@@ -161,12 +161,12 @@ def answer_question(request, pk):
# }
#
# # Get data for flagged
# # answered_questions = UserAnswer.objects.filter(user=request.user).values_list("question__pk", flat=True)
# user_answer_data = UserAnswer.objects.filter(user=request.user).values_list(
# # answered_questions = CidUserAnswer.objects.filter(user=request.user).values_list("question__pk", flat=True)
# user_answer_data = CidUserAnswer.objects.filter(user=request.user).values_list(
# "question__pk", "answer", "flagged"
# )
# # flagged_questions = UserAnswer.objects.filter(user=request.user, flagged=True).values_list("question__pk", flat=True)
# # flagged_questions I= UserAnswer.filter(user=request.user, ).values_list("question__pk", flat=True)
# # flagged_questions = CidUserAnswer.objects.filter(user=request.user, flagged=True).values_list("question__pk", flat=True)
# # flagged_questions I= CidUserAnswer.filter(user=request.user, ).values_list("question__pk", flat=True)
#
# answered_questions = set()
# flagged_questions = set()
@@ -215,7 +215,7 @@ def answer_question(request, pk):
# def flag_question(request):
# pk = request.GET.get("pk", None)
# ans = UserAnswer.objects.filter(user=request.user, question__pk=pk).first()
# ans = CidUserAnswer.objects.filter(user=request.user, question__pk=pk).first()
# ans.flagged = not ans.flagged
# ans.save()
# data = {"flagged": ans.flagged}
@@ -737,19 +737,19 @@ GenericExamViews = ExamViews(
)
class UserAnswerView(SuperuserRequiredMixin, DetailView):
class CidUserAnswerView(SuperuserRequiredMixin, DetailView):
model = CidUserAnswer
class UserAnswerTableView(SuperuserRequiredMixin, SingleTableMixin, FilterView):
class CidUserAnswerTableView(SuperuserRequiredMixin, SingleTableMixin, FilterView):
model = CidUserAnswer
table_class = AnatomyUserAnswerTable
table_class = AnatomyCidUserAnswerTable
template_name = "anatomy/user_answer_question_view.html"
filterset_class = AnatomyUserAnswerFilter
filterset_class = AnatomyCidUserAnswerFilter
class UserAnswerDelete(SuperuserRequiredMixin, DeleteView):
class CidUserAnswerDelete(SuperuserRequiredMixin, DeleteView):
model = CidUserAnswer
template_name = "user_answer_delete.html"
success_url = reverse_lazy("anatomy:user_answer_table_view")