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,7 +1,7 @@
from django.contrib import admin
# Register your models here.
from .models import Question, Exam, CidUserAnswer, Category
from .models import Question, Exam, UserAnswer, Category
from django.forms import ModelForm
@@ -55,8 +55,8 @@ class ExamAdmin(VersionAdmin, admin.ModelAdmin):
admin.site.register(Category)
admin.site.register(Question, QuestionAdmin)
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)
+5 -5
View File
@@ -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="sba_checker").exists():
queryset = queryset.filter(open_access=True) | 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
View File
@@ -12,7 +12,7 @@ from generic.forms import ExamAuthorFormMixin, ExamFormMixin
from .models import (
Question,
CidUserAnswer,
UserAnswer,
Exam,
Category
)
@@ -23,13 +23,13 @@ from django.forms.widgets import RadioSelect, TextInput, Textarea
from tinymce.widgets import TinyMCE
class CidUserAnswerForm(ModelForm):
class UserAnswerForm(ModelForm):
class Meta:
model = CidUserAnswer
model = UserAnswer
fields = ["answer"]
def __init__(self, *args, **kwargs):
super(CidUserAnswerForm, self).__init__(*args, **kwargs)
super(UserAnswerForm, self).__init__(*args, **kwargs)
self.fields['answer'].required = False
# This should be made generic?
@@ -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),
('sbas', '0017_alter_ciduseranswer_options_alter_ciduseranswer_cid'),
]
operations = [
migrations.RenameModel(
old_name='CidUserAnswer',
new_name='UserAnswer',
),
]
+2 -2
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, CidUserAnswerBase, UserUserGroup
from generic.models import CidUser, CidUserGroup, ExamBase, ExamUserStatus, QuestionNote, UserAnswerBase, UserUserGroup
import reversion
@@ -205,7 +205,7 @@ class Exam(ExamBase):
@reversion.register
class CidUserAnswer(CidUserAnswerBase):
class UserAnswer(UserAnswerBase):
"""User answers by candidate"""
question = models.ForeignKey(
+4 -4
View File
@@ -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):
@@ -69,7 +69,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(
# "sbas:user_answer_delete", text="Delete", args=[A("pk")], orderable=False
@@ -79,7 +79,7 @@ class CidUserAnswerTable(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
@@ -50,15 +50,15 @@ urlpatterns = [
# 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(), 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(
+19 -19
View File
@@ -2,7 +2,7 @@ from reversion.views import RevisionMixin
from generic.mixins import SuperuserRequiredMixin
from django.views.generic.detail import DetailView
from generic.models import CidUser
from sbas.forms import CidUserAnswerForm, ExamAuthorForm, ExamForm
from sbas.forms import UserAnswerForm, ExamAuthorForm, ExamForm
from django.shortcuts import render, get_object_or_404, redirect
from django.views.decorators.csrf import csrf_exempt
from django import forms
@@ -28,7 +28,7 @@ from django.http import Http404, JsonResponse
from django.http import HttpResponseRedirect, HttpResponse
from .models import Question, Category, Exam, CidUserAnswer
from .models import Question, Category, Exam, UserAnswer
from django_tables2 import SingleTableView, SingleTableMixin
from django_filters.views import FilterView
@@ -48,8 +48,8 @@ from rest_framework.pagination import PageNumberPagination
from django.core.exceptions import PermissionDenied
from .tables import QuestionTable, CidUserAnswerTable
from .filters import QuestionFilter, CidUserAnswerFilter
from .tables import QuestionTable, UserAnswerTable
from .filters import QuestionFilter, UserAnswerFilter
from .forms import (
QuestionForm,
@@ -178,7 +178,7 @@ def exam_take_overview(request, pk, cid, passcode):
questions = exam.exam_questions.all()
answers = CidUserAnswer.objects.filter(cid=cid, exam=exam)
answers = UserAnswer.objects.filter(cid=cid, exam=exam)
answer_question_map = {}
for ans in answers:
@@ -234,9 +234,9 @@ def exam_take(request, pk, sk, cid, passcode):
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():
answer = form.save(commit=False)
answer.cid = cid
@@ -261,7 +261,7 @@ def exam_take(request, pk, sk, cid, passcode):
"sbas:exam_take", sk=int(request.POST.get("goto")), **kwargs
)
else:
form = CidUserAnswerForm(instance=answer)
form = UserAnswerForm(instance=answer)
previous = -1
if sk > 0:
@@ -294,7 +294,7 @@ def exam_take(request, pk, sk, cid, passcode):
GenericExamViews = ExamViews(
Exam, Question, None, CidUserAnswer, "sbas", "sbas"
Exam, Question, None, UserAnswer, "sbas", "sbas"
)
@@ -404,20 +404,20 @@ class QuestionClone(QuestionCreateBase):
return initial_data
class CidUserAnswerView(LoginRequiredMixin, DetailView):
model = CidUserAnswer
class UserAnswerView(LoginRequiredMixin, DetailView):
model = UserAnswer
class CidUserAnswerTableView(LoginRequiredMixin, SingleTableMixin, FilterView):
model = CidUserAnswer
table_class = CidUserAnswerTable
class UserAnswerTableView(LoginRequiredMixin, SingleTableMixin, FilterView):
model = UserAnswer
table_class = UserAnswerTable
template_name = "sbas/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("sbas:user_answer_table_view")
@@ -429,11 +429,11 @@ class CidUserAnswerDelete(SuperuserRequiredMixin, DeleteView):
#
# # We could probably delete them all at once....
# for id in answer_ids:
# CidUserAnswer.objects.get(pk=id).delete()
# UserAnswer.objects.get(pk=id).delete()
# return JsonResponse({"status": "success"})
GenericViews = GenericViewBase("sbas", Question, CidUserAnswer, Exam)
GenericViews = GenericViewBase("sbas", Question, UserAnswer, Exam)
class QuestionDelete(AuthorOrCheckerRequiredMixin, DeleteView):