rename CidUserAnswer to UserAnswer
This commit is contained in:
+3
-3
@@ -1,5 +1,5 @@
|
||||
from anatomy.models import CidUserAnswer
|
||||
from physics.models import Category, Question, Exam, CidUserAnswer
|
||||
from anatomy.models import UserAnswer
|
||||
from physics.models import Category, Question, Exam, UserAnswer
|
||||
from generic.models import CidUser
|
||||
from django.contrib import admin
|
||||
|
||||
@@ -37,5 +37,5 @@ class ExamAdmin(VersionAdmin, admin.ModelAdmin):
|
||||
admin.site.register(Category)
|
||||
admin.site.register(Question, QuestionAdmin)
|
||||
admin.site.register(Exam, ExamAdmin)
|
||||
admin.site.register(CidUserAnswer)
|
||||
admin.site.register(UserAnswer)
|
||||
|
||||
|
||||
+5
-5
@@ -1,8 +1,8 @@
|
||||
import django_filters
|
||||
|
||||
from .models import Category, Question, CidUserAnswer, Exam
|
||||
from .models import Category, Question, UserAnswer, Exam
|
||||
|
||||
#from generic.filters import CidUserAnswerFilter
|
||||
#from generic.filters import UserAnswerFilter
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
|
||||
@@ -43,9 +43,9 @@ class QuestionFilter(django_filters.FilterSet):
|
||||
super(QuestionFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request)
|
||||
pass
|
||||
|
||||
class CidUserAnswerFilter(django_filters.FilterSet):
|
||||
class UserAnswerFilter(django_filters.FilterSet):
|
||||
class Meta:
|
||||
model= CidUserAnswer
|
||||
model= UserAnswer
|
||||
fields = (
|
||||
"cid",
|
||||
#"question",
|
||||
@@ -59,5 +59,5 @@ class CidUserAnswerFilter(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="physics_checker").exists():
|
||||
queryset = queryset.filter(author__id=request.user.id)
|
||||
super(CidUserAnswerFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request)
|
||||
super(UserAnswerFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request)
|
||||
pass
|
||||
+4
-4
@@ -12,7 +12,7 @@ from generic.forms import ExamAuthorFormMixin, ExamFormMixin
|
||||
|
||||
from .models import (
|
||||
Question,
|
||||
CidUserAnswer,
|
||||
UserAnswer,
|
||||
Exam,
|
||||
)
|
||||
|
||||
@@ -20,13 +20,13 @@ from django.contrib.admin.widgets import FilteredSelectMultiple
|
||||
from django.forms.widgets import RadioSelect, TextInput, Textarea
|
||||
|
||||
|
||||
class CidUserAnswerForm(ModelForm):
|
||||
class UserAnswerForm(ModelForm):
|
||||
class Meta:
|
||||
model = CidUserAnswer
|
||||
model = UserAnswer
|
||||
fields = ["a", "b", "c", "d", "e"]
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(CidUserAnswerForm, self).__init__(*args, **kwargs)
|
||||
super(UserAnswerForm, self).__init__(*args, **kwargs)
|
||||
#self.fields['answer'].required = False
|
||||
|
||||
|
||||
|
||||
@@ -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),
|
||||
('physics', '0027_alter_ciduseranswer_options_alter_ciduseranswer_cid'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameModel(
|
||||
old_name='CidUserAnswer',
|
||||
new_name='UserAnswer',
|
||||
),
|
||||
]
|
||||
+2
-2
@@ -12,7 +12,7 @@ from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from sortedm2m.fields import SortedManyToManyField
|
||||
|
||||
from generic.models import CidUser, CidUserGroup, ExamBase, ExamUserStatus, QuestionNote, CidUserAnswerBase, UserUserGroup
|
||||
from generic.models import CidUser, CidUserGroup, ExamBase, ExamUserStatus, QuestionNote, UserAnswerBase, UserUserGroup
|
||||
|
||||
import reversion
|
||||
|
||||
@@ -182,7 +182,7 @@ class Exam(ExamBase):
|
||||
|
||||
|
||||
@reversion.register
|
||||
class CidUserAnswer(CidUserAnswerBase):
|
||||
class UserAnswer(UserAnswerBase):
|
||||
"""User answers by candidate"""
|
||||
|
||||
question = models.ForeignKey(
|
||||
|
||||
+4
-4
@@ -2,7 +2,7 @@ from django.utils.safestring import mark_safe
|
||||
import django_tables2 as tables
|
||||
from django_tables2.utils import A
|
||||
|
||||
from .models import Question, CidUserAnswer
|
||||
from .models import Question, UserAnswer
|
||||
|
||||
from django.utils.html import format_html
|
||||
|
||||
@@ -10,7 +10,7 @@ from django.utils.html import format_html
|
||||
|
||||
# from easy_thumbnails.exceptions import InvalidImageFormatError
|
||||
|
||||
# from generic.tables import CidUserAnswerTable
|
||||
# from generic.tables import UserAnswerTable
|
||||
|
||||
|
||||
# class ImageColumn(tables.Column):
|
||||
@@ -75,7 +75,7 @@ class QuestionTable(tables.Table):
|
||||
return mark_safe(value)
|
||||
|
||||
|
||||
class CidUserAnswerTable(tables.Table):
|
||||
class UserAnswerTable(tables.Table):
|
||||
select = tables.CheckBoxColumn(accessor=("pk"))
|
||||
# delete = tables.LinkColumn(
|
||||
# "physics:user_answer_delete", text="Delete", args=[A("pk")], orderable=False
|
||||
@@ -85,7 +85,7 @@ class CidUserAnswerTable(tables.Table):
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = CidUserAnswer
|
||||
model = UserAnswer
|
||||
template_name = "django_tables2/bootstrap4.html"
|
||||
fields = (
|
||||
"cid",
|
||||
|
||||
@@ -16,7 +16,7 @@ from bs4 import BeautifulSoup
|
||||
|
||||
from physics.views import GenericExamViews as PhysicsExamViews
|
||||
|
||||
from physics.models import Category, CidUserAnswer, Exam, Question
|
||||
from physics.models import Category, UserAnswer, Exam, Question
|
||||
|
||||
from generic.models import CidUser, CidUserGroup, UserUserGroup
|
||||
from rad.test_helpers import AssertNotFound, create_cid_user_and_groups
|
||||
@@ -541,9 +541,9 @@ def test_exams(db, client):
|
||||
|
||||
# answer the final question
|
||||
if testing_cid_user:
|
||||
cid_user_answer = CidUserAnswer(question=extra_question, a=True, b=False, c=True, d=False, e=True, cid=cid_user.cid, exam=exam)
|
||||
cid_user_answer = UserAnswer(question=extra_question, a=True, b=False, c=True, d=False, e=True, cid=cid_user.cid, exam=exam)
|
||||
else:
|
||||
cid_user_answer = CidUserAnswer(question=extra_question, a=True, b=False, c=True, d=False, e=True, user=current_user, exam=exam)
|
||||
cid_user_answer = UserAnswer(question=extra_question, a=True, b=False, c=True, d=False, e=True, user=current_user, exam=exam)
|
||||
cid_user_answer.save()
|
||||
|
||||
cid_exam_scores_res = client.get(
|
||||
|
||||
+3
-3
@@ -51,17 +51,17 @@ urlpatterns.extend(
|
||||
# path("exam/json/<int:pk>/recreate", views.exam_json_recreate, name="exam_json_recreate"),
|
||||
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(),
|
||||
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(
|
||||
|
||||
+21
-21
@@ -2,9 +2,9 @@ from django.contrib.contenttypes.models import ContentType
|
||||
from django.utils import timezone
|
||||
from generic.models import CidUser
|
||||
from physics.decorators import user_is_author_or_physics_checker
|
||||
from physics.filters import QuestionFilter, CidUserAnswerFilter
|
||||
from physics.filters import QuestionFilter, UserAnswerFilter
|
||||
from generic.mixins import SuperuserRequiredMixin
|
||||
from physics.tables import QuestionTable, CidUserAnswerTable
|
||||
from physics.tables import QuestionTable, UserAnswerTable
|
||||
from django.shortcuts import render, get_object_or_404, redirect
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django import forms
|
||||
@@ -32,7 +32,7 @@ from django_filters.views import FilterView
|
||||
from django_tables2.views import SingleTableMixin
|
||||
from reversion.views import RevisionMixin
|
||||
|
||||
from .models import Question, Category, Exam, CidUserAnswer
|
||||
from .models import Question, Category, Exam, UserAnswer
|
||||
|
||||
from collections import defaultdict
|
||||
import os
|
||||
@@ -58,7 +58,7 @@ from rest_framework.pagination import PageNumberPagination
|
||||
|
||||
from django.core.exceptions import PermissionDenied
|
||||
|
||||
from .forms import CidUserAnswerForm, ExamAuthorForm, ExamForm
|
||||
from .forms import UserAnswerForm, ExamAuthorForm, ExamForm
|
||||
from .decorators import (
|
||||
user_is_author_or_physics_checker,
|
||||
user_is_exam_author_or_physics_checker,
|
||||
@@ -214,9 +214,9 @@ def exam_take_overview(request, pk, cid=None, passcode=None):
|
||||
questions = exam.exam_questions.all()
|
||||
|
||||
if cid is not None:
|
||||
answers = CidUserAnswer.objects.filter(cid=cid, exam=exam)
|
||||
answers = UserAnswer.objects.filter(cid=cid, exam=exam)
|
||||
else:
|
||||
answers = CidUserAnswer.objects.filter(user=request.user, exam=exam)
|
||||
answers = UserAnswer.objects.filter(user=request.user, exam=exam)
|
||||
|
||||
answer_question_map = {}
|
||||
for ans in answers:
|
||||
@@ -289,9 +289,9 @@ def exam_take(request, pk, sk, cid=None, passcode=None):
|
||||
|
||||
if request.method == "POST":
|
||||
if answer:
|
||||
form = CidUserAnswerForm(request.POST, instance=answer)
|
||||
form = UserAnswerForm(request.POST, instance=answer)
|
||||
else:
|
||||
form = CidUserAnswerForm(request.POST)
|
||||
form = UserAnswerForm(request.POST)
|
||||
if form.is_valid() and not exam.publish_results:
|
||||
answer = form.save(commit=False)
|
||||
|
||||
@@ -327,7 +327,7 @@ def exam_take(request, pk, sk, cid=None, passcode=None):
|
||||
elif "goto" in request.POST:
|
||||
return redirect(take_url, sk=int(request.POST.get("goto")), **kwargs)
|
||||
else:
|
||||
form = CidUserAnswerForm(instance=answer)
|
||||
form = UserAnswerForm(instance=answer)
|
||||
|
||||
|
||||
saved_answer = False
|
||||
@@ -376,7 +376,7 @@ def exam_take(request, pk, sk, cid=None, passcode=None):
|
||||
# pass
|
||||
#
|
||||
# for qid in questions:
|
||||
# exiting_answers = CidUserAnswer.objects.filter(
|
||||
# exiting_answers = UserAnswer.objects.filter(
|
||||
# question__id=qid, exam__id=answer["eid"], cid=answer["cid"]
|
||||
# )
|
||||
#
|
||||
@@ -387,7 +387,7 @@ def exam_take(request, pk, sk, cid=None, passcode=None):
|
||||
# e = questions[qid]["e"]
|
||||
#
|
||||
# if not exiting_answers:
|
||||
# ans = CidUserAnswer(a=a, b=b, c=c, d=d, e=e, cid=answer["cid"])
|
||||
# ans = UserAnswer(a=a, b=b, c=c, d=d, e=e, cid=answer["cid"])
|
||||
# ans.question_id = qid
|
||||
# ans.exam_id = answer["eid"]
|
||||
#
|
||||
@@ -409,9 +409,9 @@ def exam_take(request, pk, sk, cid=None, passcode=None):
|
||||
# return True, None
|
||||
|
||||
|
||||
GenericExamViews = ExamViews(Exam, Question, None, CidUserAnswer, "physics", "physics")
|
||||
GenericExamViews = ExamViews(Exam, Question, None, UserAnswer, "physics", "physics")
|
||||
|
||||
GenericViews = GenericViewBase("physics", Question, CidUserAnswer, Exam)
|
||||
GenericViews = GenericViewBase("physics", Question, UserAnswer, Exam)
|
||||
|
||||
class ExamCreate(ExamCreateBase):
|
||||
model = Exam
|
||||
@@ -457,21 +457,21 @@ class QuestionView(
|
||||
|
||||
|
||||
|
||||
class CidUserAnswerView(AuthorOrCheckerRequiredMixin, LoginRequiredMixin, DetailView):
|
||||
model = CidUserAnswer
|
||||
class UserAnswerView(AuthorOrCheckerRequiredMixin, LoginRequiredMixin, DetailView):
|
||||
model = UserAnswer
|
||||
|
||||
|
||||
class CidUserAnswerTableView(
|
||||
class UserAnswerTableView(
|
||||
AuthorOrCheckerRequiredMixin, LoginRequiredMixin, SingleTableMixin, FilterView
|
||||
):
|
||||
model = CidUserAnswer
|
||||
table_class = CidUserAnswerTable
|
||||
model = UserAnswer
|
||||
table_class = UserAnswerTable
|
||||
template_name = "physics/user_answer_question_view.html"
|
||||
|
||||
filterset_class = CidUserAnswerFilter
|
||||
filterset_class = UserAnswerFilter
|
||||
|
||||
|
||||
class CidUserAnswerDelete(SuperuserRequiredMixin, DeleteView):
|
||||
model = CidUserAnswer
|
||||
class UserAnswerDelete(SuperuserRequiredMixin, DeleteView):
|
||||
model = UserAnswer
|
||||
template_name = "user_answer_delete.html"
|
||||
success_url = reverse_lazy("physics:user_answer_table_view")
|
||||
|
||||
Reference in New Issue
Block a user