This commit is contained in:
Ross
2022-06-07 21:32:49 +01:00
parent 349654a22b
commit 45100f27b0
11 changed files with 136 additions and 141 deletions
@@ -36,6 +36,7 @@
<button id="add-to-exam" data-exam_json_edit_url="{% url 'generic:generic_exam_json_edit' %}"
data-exam_list_url="{% url 'rapid-exam-list' %}" data-type="rapid" data-csrf="{{ csrf_token}}"
data-qid="{{question.pk}}">Add to exam</button>
<button id="cancel-add-to-exam" style="display:none">Cancel</button>
<span id="exam-options"></span>
</div>
<p class="pre-whitespace"><b>Open Access:</b> {{ question.open_access }}</p>
@@ -156,8 +157,15 @@
})
})
$("#cancel-add-to-exam").click(function (evt) {
$("#add-to-exam").toggle();
$("#cancel-add-to-exam").toggle();
$("#exam-options").empty();
})
$("#add-to-exam").click(function (evt) {
$("#add-to-exam").toggle();
$("#cancel-add-to-exam").toggle();
var jqxhr = $.get(evt.target.dataset.exam_list_url, function (data) {
console.log(data);
@@ -380,11 +388,18 @@
<style>
.toggle-button {
font-size: x-small;
opacity: 10%;
opacity: 30%;
}
.toggle-button:hover {
font-size: x-small;
opacity: 100%;
}
#cancel-add-to-exam {
border-style: dashed;
}
#cancel-add-to-exam:hover {
background-color: purple;
}
</style>
+42 -1
View File
@@ -33,6 +33,18 @@ def create_superuser(db, django_user_model):
"admin", "ross@xkjq.uk", "adminpassword"
)
@pytest.fixture(params=EXAM_VIEWS)
def set_up_exams(request, django_user_model, create_superuser):
basic_user = django_user_model.objects.create_user(
"user1", "user@user.net", "pass2"
)
e1 = request.param.Exam.objects.create(name="test exam", exam_mode=True)
e = request.param.Exam.objects.create(name="test exam 2", exam_mode=True)
e.author.add(basic_user)
return request.param
# @pytest.fixture
# def create_exam(db):
@@ -40,6 +52,18 @@ def create_superuser(db, django_user_model):
# Very basic tests, make sure we can hit key urls without error
def test_index2(client, set_up_exams):
client.login(username="admin", password="adminpassword")
response = client.get(reverse(f"{set_up_exams.app_name}:index"))
assert response.status_code == 200
assert (
BeautifulSoup(response.content, "html.parser")
.find("h4", {"class": "exam-number-title"})
.getText()
== "2 exams found."
)
@pytest.mark.parametrize("exam_views", EXAM_VIEWS)
def test_index(client, create_superuser, exam_views, django_user_model):
@@ -63,6 +87,15 @@ def test_index(client, create_superuser, exam_views, django_user_model):
== "2 exams found."
)
response = client.get(reverse(f"{exam_views.app_name}:exam_list"))
assert response.status_code == 200
assert (
len(BeautifulSoup(response.content, "html.parser")
.select("a.exam-name"))
== 2
)
if exam_views.app_name in JSON_APPS:
response = client.get(reverse(f"{exam_views.app_name}:active_exams"))
@@ -86,7 +119,6 @@ def test_index(client, create_superuser, exam_views, django_user_model):
HTTP_X_REQUESTED_WITH="XMLHttpRequest",
)
print(f"{e1.valid_user_users.all()=}")
assert json.loads(add_user_response.content)["status"] == "success"
@@ -103,6 +135,15 @@ def test_index(client, create_superuser, exam_views, django_user_model):
== "1 exams found."
)
response = client.get(reverse(f"{exam_views.app_name}:exam_list"))
assert (
len(BeautifulSoup(response.content, "html.parser")
.select("a.exam-name"))
== 1
)
if exam_views.app_name in JSON_APPS:
response = client.get(reverse(f"{exam_views.app_name}:active_exams"))
+6 -7
View File
@@ -46,6 +46,7 @@ from generic.views import (
AuthorRequiredMixin,
ExamCloneMixin,
ExamCreateBase,
ExamDeleteBase,
ExamUpdateBase,
ExamViews,
GenericViewBase,
@@ -787,6 +788,9 @@ class ExamUpdate(ExamUpdateBase, AuthorOrCheckerRequiredMixin):
form_class = ExamForm
class ExamDelete(AuthorOrCheckerRequiredMixin, ExamDeleteBase):
model = Exam
class ExamAuthorUpdate(
RevisionMixin, LoginRequiredMixin, AuthorRequiredMixin, UpdateView
):
@@ -794,11 +798,6 @@ class ExamAuthorUpdate(
form_class = ExamAuthorForm
class ExamDelete(RevisionMixin, AuthorOrCheckerRequiredMixin, DeleteView):
model = Exam
template_name = "exam_confirm_delete.html"
success_url = reverse_lazy("rapids:index")
class UserAnswerView(LoginRequiredMixin, DetailView):
model = CidUserAnswer
@@ -840,9 +839,9 @@ class ExamViewSet(RevisionMixin, viewsets.ModelViewSet):
"""
user = self.request.user
if user.groups.filter(name="rapid_checker").exists():
return Exam.objects.all()
return Exam.objects.filter(archive=False).order_by('name')
return Exam.objects.filter(author__id=user.id)
return Exam.objects.filter(author__id=user.id, archive=False).order_by('name')
class QuestionAnswerViewSet(viewsets.ModelViewSet):