rename CidUserAnswer to UserAnswer
This commit is contained in:
+3
-3
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user