This commit is contained in:
Ross
2021-08-16 12:18:00 +00:00
parent e0c1a2a2e1
commit 712f1d3182
4 changed files with 39 additions and 1 deletions
+1 -1
View File
@@ -203,4 +203,4 @@ class BodyPartForm(ModelForm):
class ExamForm(ModelForm): class ExamForm(ModelForm):
class Meta: class Meta:
model = Exam model = Exam
fields = ["name", "time_limit", "exam_mode", "active"] fields = ["name", "time_limit", "exam_mode", "active", "archive"]
+2
View File
@@ -4,6 +4,8 @@
{% load thumbnail %} {% load thumbnail %}
<div class="longs"> <div class="longs">
<a href="{% url 'longs:exam_update' exam.id %}" title="Edit the Exam">Edit</a>
<a href="{% url 'longs:exam_delete' exam.id %}" title="Delete the Exam">Delete</a>
<a href="{% url 'admin:longs_exam_change' exam.id %}" title="Edit the Exam using the admin interface">Admin Edit</a> <a href="{% url 'admin:longs_exam_change' exam.id %}" title="Edit the Exam using the admin interface">Admin Edit</a>
<h1>Exam: {{ exam.name }}</h1> <h1>Exam: {{ exam.name }}</h1>
This exam has {{question_number}} questions. Time limit: {{exam.time_limit}} seconds.<br /> This exam has {{question_number}} questions. Time limit: {{exam.time_limit}} seconds.<br />
+3
View File
@@ -59,6 +59,9 @@ urlpatterns = [
), ),
path("exam/submit", views.LongExamViews.postExamAnswers, name="exam_answers_submit"), path("exam/submit", views.LongExamViews.postExamAnswers, name="exam_answers_submit"),
path("exam/", views.LongExamViews.exam_list, name="exam_list"), path("exam/", views.LongExamViews.exam_list, name="exam_list"),
path("exam/create", views.ExamCreate.as_view(), name="exam_create"),
path("exam/<int:pk>/update", views.ExamUpdate.as_view(), name="exam_update"),
path("exam/<int:pk>/delete", views.ExamDelete.as_view(), name="exam_delete"),
path("exam/json/", views.LongExamViews.active_exams, name="active_exams"), path("exam/json/", views.LongExamViews.active_exams, name="active_exams"),
path("exam/json/<int:pk>", views.LongExamViews.exam_json, name="exam_json"), path("exam/json/<int:pk>", views.LongExamViews.exam_json, name="exam_json"),
path("exam/json/<int:pk>/unbased", views.LongExamViews.exam_json_unbased, name="exam_json_unbased"), path("exam/json/<int:pk>/unbased", views.LongExamViews.exam_json_unbased, name="exam_json_unbased"),
+33
View File
@@ -27,6 +27,7 @@ from .forms import (
SeriesFormSet, SeriesFormSet,
NoteForm, NoteForm,
ExaminationForm, ExaminationForm,
ExamForm,
) )
from .models import ( from .models import (
Long, LongSeries, Long, LongSeries,
@@ -955,6 +956,38 @@ def long_series_order_upload_filename(request, pk):
LongExamViews = ExamViews(Exam, Long, "longs", "long", loadJsonAnswer) LongExamViews = ExamViews(Exam, Long, "longs", "long", loadJsonAnswer)
class ExamCreate(RevisionMixin, LoginRequiredMixin, CreateView):
model = Exam
form_class = ExamForm
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.save()
form.instance.author.add(self.request.user.id)
return super().form_valid(form)
class ExamUpdate(
RevisionMixin, LoginRequiredMixin, AuthorOrCheckerRequiredMixin, UpdateView
):
model = Exam
form_class = ExamForm
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.save()
form.instance.author.add(self.request.user.id)
return super().form_valid(form)
class ExamDelete(RevisionMixin, AuthorOrCheckerRequiredMixin, DeleteView):
model = Exam
success_url = reverse_lazy("longs:index")
class ExamViewSet(RevisionMixin, viewsets.ModelViewSet): class ExamViewSet(RevisionMixin, viewsets.ModelViewSet):
queryset = Exam.objects.all().order_by('name') queryset = Exam.objects.all().order_by('name')
serializer_class = ExamSerializer serializer_class = ExamSerializer