rename CidUserAnswer to UserAnswer

This commit is contained in:
Ross
2023-05-15 11:15:17 +01:00
parent 7aa78c2807
commit d05752b2dc
49 changed files with 346 additions and 251 deletions
+3 -3
View File
@@ -1,5 +1,5 @@
from django.contrib import admin
from .models import Rapid, RapidImage, Examination, Site, Abnormality, Region, RapidCreationDefault, Answer, Exam, CidUserAnswer
from .models import Rapid, RapidImage, Examination, Site, Abnormality, Region, RapidCreationDefault, Answer, Exam, UserAnswer
from django.forms import ModelForm
@@ -71,11 +71,11 @@ class ExamAdmin(VersionAdmin, admin.ModelAdmin):
admin.site.register(Rapid, RapidAdmin)
admin.site.register(Exam, ExamAdmin)
class CidUserAnswerAdmin(admin.ModelAdmin):
class UserAnswerAdmin(admin.ModelAdmin):
exclude = []
readonly_fields = ["created", "updated"]
admin.site.register(CidUserAnswer, CidUserAnswerAdmin)
admin.site.register(UserAnswer, UserAnswerAdmin)
class RapidImageAdmin(admin.ModelAdmin):
readonly_fields = ('rapid',)
+4 -4
View File
@@ -1,6 +1,6 @@
import django_filters
from .models import Rapid, CidUserAnswer, Exam
from .models import Rapid, UserAnswer, Exam
from django.contrib.auth.models import User
@@ -68,9 +68,9 @@ class RapidFilter(django_filters.FilterSet):
pass
class RapidCidUserAnswerFilter(django_filters.FilterSet):
class RapidUserAnswerFilter(django_filters.FilterSet):
class Meta:
model = CidUserAnswer
model = UserAnswer
fields = (
"cid",
"user",
@@ -95,7 +95,7 @@ class RapidCidUserAnswerFilter(django_filters.FilterSet):
queryset = queryset.filter(open_access=True) | queryset.filter(
author__id=request.user.id
)
super(RapidCidUserAnswerFilter, self).__init__(
super(RapidUserAnswerFilter, self).__init__(
data=data, queryset=queryset, prefix=prefix, request=request
)
pass
+2 -2
View File
@@ -17,7 +17,7 @@ from rapids.models import (
RapidImage,
Region,
Answer,
CidUserAnswer,
UserAnswer,
Exam,
)
@@ -28,7 +28,7 @@ from django.contrib.auth.models import User
class RapidAnswerForm(ModelForm):
class Meta:
model = CidUserAnswer
model = UserAnswer
fields = ("answer",)
@@ -0,0 +1,19 @@
# Generated by Django 4.1.4 on 2023-05-15 10:14
from django.conf import settings
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('rapids', '0062_alter_ciduseranswer_options'),
]
operations = [
migrations.RenameModel(
old_name='CidUserAnswer',
new_name='UserAnswer',
),
]
+9 -9
View File
@@ -34,7 +34,7 @@ from generic.models import (
#Sign,
ExamBase,
QuestionNote,
CidUserAnswerBase,
UserAnswerBase,
UserUserGroup,
)
@@ -769,7 +769,7 @@ class Exam(ExamBase):
@reversion.register
class CidUserAnswer(CidUserAnswerBase):
class UserAnswer(UserAnswerBase):
"""User answers by candidate"""
question = models.ForeignKey(
@@ -830,7 +830,7 @@ class CidUserAnswer(CidUserAnswerBase):
def save(self, *args, **kwargs):
self.clean()
return super(CidUserAnswer, self).save(*args, **kwargs)
return super(UserAnswer, self).save(*args, **kwargs)
def clean(self):
self.score = Answer.MarkOptions.UNMARKED
@@ -885,9 +885,9 @@ class CidUserAnswer(CidUserAnswerBase):
# First step we check that the normal/abnormal states match
if q.normal != self.normal:
if q.normal:
self.callstate = CidUserAnswer.CallStateOptions.OVERCALL
self.callstate = UserAnswer.CallStateOptions.OVERCALL
else:
self.callstate = CidUserAnswer.CallStateOptions.UNDERCALL
self.callstate = UserAnswer.CallStateOptions.UNDERCALL
self.score = Answer.MarkOptions.INCORRECT
self.save()
@@ -895,7 +895,7 @@ class CidUserAnswer(CidUserAnswerBase):
return 0
# If both are normal full marks
elif q.normal and self.normal:
self.callstate = CidUserAnswer.CallStateOptions.CORRECT
self.callstate = UserAnswer.CallStateOptions.CORRECT
self.score = Answer.MarkOptions.CORRECT
self.save()
return 2
@@ -920,13 +920,13 @@ class CidUserAnswer(CidUserAnswerBase):
self.score = marked_ans.status
if marked_ans.status == Answer.MarkOptions.CORRECT:
self.callstate = CidUserAnswer.CallStateOptions.CORRECT
self.callstate = UserAnswer.CallStateOptions.CORRECT
mark = 2
elif marked_ans.status == Answer.MarkOptions.HALF_MARK:
self.callstate = CidUserAnswer.CallStateOptions.PARTIALCALL
self.callstate = UserAnswer.CallStateOptions.PARTIALCALL
mark = 1
elif marked_ans.status == Answer.MarkOptions.INCORRECT:
self.callstate = CidUserAnswer.CallStateOptions.INCORRECTCALL
self.callstate = UserAnswer.CallStateOptions.INCORRECTCALL
mark = 0
self.save()
+3 -3
View File
@@ -2,7 +2,7 @@
from rest_framework import serializers, permissions
from .models import Exam, Answer, Rapid, CidUserAnswer
from .models import Exam, Answer, Rapid, UserAnswer
class ExamSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
@@ -18,12 +18,12 @@ class QuestionAnswerSerializer(serializers.HyperlinkedModelSerializer):
fields = ('id', 'question', 'answer', "answer_compare", "status")
view_name = "rapid-exam"
class CidUserAnswerSerializer(serializers.HyperlinkedModelSerializer):
class UserAnswerSerializer(serializers.HyperlinkedModelSerializer):
exam = serializers.HyperlinkedRelatedField(view_name='rapid-exam-detail',
read_only=True
)
class Meta:
model = CidUserAnswer
model = UserAnswer
fields = ('id', 'question', 'normal', "answer", "answer_compare", "cid", "user", "exam", "created", "updated")
class RapidSerializer(serializers.ModelSerializer):
+3 -3
View File
@@ -1,7 +1,7 @@
import django_tables2 as tables
from django_tables2.utils import A
from .models import Rapid, CidUserAnswer
from .models import Rapid, UserAnswer
from django.utils.html import format_html
@@ -66,7 +66,7 @@ class RapidTable(tables.Table):
**kwargs,
)
class RapidCidUserAnswerTable(tables.Table):
class RapidUserAnswerTable(tables.Table):
select = tables.CheckBoxColumn(accessor=("pk"))
delete = tables.LinkColumn(
"rapids:user_answer_delete", text="Delete", args=[A("pk")], orderable=False
@@ -76,7 +76,7 @@ class RapidCidUserAnswerTable(tables.Table):
args=[A('pk')],
orderable=False)
class Meta:
model = CidUserAnswer
model = UserAnswer
template_name = "django_tables2/bootstrap4.html"
fields = (
"cid",
+3 -3
View File
@@ -15,7 +15,7 @@ from bs4 import BeautifulSoup
from rapids.views import GenericExamViews as RapidExamViews
from rapids.models import Answer, CidUserAnswer, Exam, Examination, Rapid as Question, RapidImage
from rapids.models import Answer, UserAnswer, Exam, Examination, Rapid as Question, RapidImage
from generic.models import CidUser, CidUserGroup, UserUserGroup
@@ -295,9 +295,9 @@ def test_exams(db, client):
# Check the answers now exist in the database
if testing_cid_user:
answers = CidUserAnswer.objects.filter(cid=cid_user.cid)
answers = UserAnswer.objects.filter(cid=cid_user.cid)
else:
answers = CidUserAnswer.objects.filter(user=cid_user)
answers = UserAnswer.objects.filter(user=cid_user)
assert answers.count() == 3
+3 -3
View File
@@ -83,15 +83,15 @@ urlpatterns = [
),
path(
"user_answers/",
views.CidUserAnswerTableView.as_view(),
views.UserAnswerTableView.as_view(),
name="user_answer_table_view",
),
path(
"user_answers/<int:pk>", views.CidUserAnswerView.as_view(), name="user_answer_view"
"user_answers/<int:pk>", views.UserAnswerView.as_view(), name="user_answer_view"
),
path(
"user_answers/<int:pk>/delete",
views.CidUserAnswerDelete.as_view(),
views.UserAnswerDelete.as_view(),
name="user_answer_delete",
),
path(
+17 -17
View File
@@ -39,7 +39,7 @@ from .models import (
Examination,
Exam,
Answer,
CidUserAnswer,
UserAnswer,
)
from generic.views import (
@@ -54,8 +54,8 @@ from generic.views import (
from reversion.views import RevisionMixin
from .tables import RapidTable, RapidCidUserAnswerTable
from .filters import RapidFilter, RapidCidUserAnswerFilter
from .tables import RapidTable, RapidUserAnswerTable
from .filters import RapidFilter, RapidUserAnswerFilter
from django_tables2 import SingleTableView, SingleTableMixin
from django_filters.views import FilterView
@@ -86,7 +86,7 @@ from .serializers import (
QuestionAnswerSerializer,
RapidLateralitySerializer,
RapidSerializer,
CidUserAnswerSerializer,
UserAnswerSerializer,
)
from generic.mixins import SuperuserRequiredMixin
@@ -693,7 +693,7 @@ class QuestionDelete(AuthorOrCheckerRequiredMixin, DeleteView):
success_url = reverse_lazy("rapids:rapid_view")
GenericExamViews = ExamViews(Exam, Rapid, Answer, CidUserAnswer, "rapids", "rapid", normalise_score=normaliseScore)
GenericExamViews = ExamViews(Exam, Rapid, Answer, UserAnswer, "rapids", "rapid", normalise_score=normaliseScore)
class ExamCreate(ExamCreateBase):
@@ -717,20 +717,20 @@ class ExamAuthorUpdate(
class CidUserAnswerView(LoginRequiredMixin, DetailView):
model = CidUserAnswer
class UserAnswerView(LoginRequiredMixin, DetailView):
model = UserAnswer
class CidUserAnswerTableView(LoginRequiredMixin, SingleTableMixin, FilterView):
model = CidUserAnswer
table_class = RapidCidUserAnswerTable
class UserAnswerTableView(LoginRequiredMixin, SingleTableMixin, FilterView):
model = UserAnswer
table_class = RapidUserAnswerTable
template_name = "rapids/user_answer_question_view.html"
filterset_class = RapidCidUserAnswerFilter
filterset_class = RapidUserAnswerFilter
class CidUserAnswerDelete(SuperuserRequiredMixin, DeleteView):
model = CidUserAnswer
class UserAnswerDelete(SuperuserRequiredMixin, DeleteView):
model = UserAnswer
template_name = "user_answer_delete.html"
success_url = reverse_lazy("rapids:user_answer_table_view")
@@ -768,9 +768,9 @@ class ExamViewSet(RevisionMixin, viewsets.ModelViewSet):
# permission_classes = [permissions.IsAuthenticated]
#
#
#class CidUserAnswerViewSet(viewsets.ModelViewSet):
# queryset = CidUserAnswer.objects.all() # .order_by('name')
# serializer_class = CidUserAnswerSerializer
#class UserAnswerViewSet(viewsets.ModelViewSet):
# queryset = UserAnswer.objects.all() # .order_by('name')
# serializer_class = UserAnswerSerializer
# permission_classes = [permissions.IsAuthenticated]
@@ -822,7 +822,7 @@ class ExamViewSet(RevisionMixin, viewsets.ModelViewSet):
# return { "content_type" : content_type,
# "object_id" : pk }
GenericViews = GenericViewBase("rapids", Rapid, CidUserAnswer, Exam)
GenericViews = GenericViewBase("rapids", Rapid, UserAnswer, Exam)
@user_is_author_or_rapid_checker