Skip to content

Commit ebdb5f5

Browse files
Draft: Notify on reward point granting when deleting evaluation
1 parent e54f802 commit ebdb5f5

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

evap/staff/tests/test_views.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2370,6 +2370,28 @@ def test_invalid_deletion(self):
23702370
self.app.post(self.url, user=self.manager, params=self.post_params, status=400)
23712371
self.assertTrue(Evaluation.objects.filter(pk=self.evaluation.pk).exists())
23722372

2373+
@patch.object(Evaluation, "can_be_deleted_by_manager", True)
2374+
def test_reward_point_granting_message(self):
2375+
already_evaluated = baker.make(Evaluation, course__semester=self.evaluation.course.semester)
2376+
SemesterActivation.objects.create(semester=self.evaluation.course.semester, is_active=True)
2377+
baker.make(UserProfile, evaluations_participating_in=[self.evaluation])
2378+
2379+
baker.make(
2380+
UserProfile,
2381+
email=iter(f"{name}@institution.example.com" for name in ["a", "b", "c", "d", "e"]),
2382+
evaluations_participating_in=[self.evaluation, already_evaluated],
2383+
evaluations_voted_for=[already_evaluated],
2384+
_quantity=5,
2385+
)
2386+
2387+
with patch("evap.staff.views.logger") as mock:
2388+
self.app.post(self.url, user=self.manager, params=self.post_params, status=200)
2389+
2390+
mock.info.assert_called_with(
2391+
"Deletion of evaluation has created reward point grantings",
2392+
extra={"evaluation": self.evaluation, "num_grantings": 5},
2393+
)
2394+
23732395

23742396
class TestSingleResultEditView(WebTestStaffModeWith200Check):
23752397
@classmethod

evap/staff/views.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import csv
22
import itertools
3+
import logging
34
from collections import OrderedDict, defaultdict, namedtuple
45
from collections.abc import Container
56
from dataclasses import dataclass
@@ -135,6 +136,8 @@
135136
from evap.student.views import render_vote_page
136137
from evap.tools import unordered_groupby
137138

139+
logger = logging.getLogger(__name__)
140+
138141

139142
@manager_required
140143
def index(request):
@@ -671,6 +674,8 @@ def semester_make_active(request):
671674
@require_POST
672675
@manager_required
673676
def semester_delete(request):
677+
# TODO(rebeling): Do we expect reward point granting here? Do we want to notify? I don't see why it couldn't happen
678+
674679
semester = get_object_from_dict_pk_entry_or_logged_40x(Semester, request.POST, "semester_id")
675680

676681
if not semester.can_be_deleted_by_manager:
@@ -1422,6 +1427,14 @@ def helper_single_result_edit(request, evaluation):
14221427
def evaluation_delete(request):
14231428
evaluation = get_object_from_dict_pk_entry_or_logged_40x(Evaluation, request.POST, "evaluation_id")
14241429

1430+
# See comment in helper_evaluation_edit
1431+
@receiver(RewardPointGranting.granted_by_evaluation_deletion, weak=True)
1432+
def notify_reward_points(grantings, **_kwargs):
1433+
logger.info(
1434+
"Deletion of evaluation has created reward point grantings",
1435+
extra={"evaluation": evaluation, "num_grantings": len(grantings)},
1436+
)
1437+
14251438
if not evaluation.can_be_deleted_by_manager:
14261439
raise SuspiciousOperation("Deleting evaluation not allowed")
14271440
if evaluation.is_single_result:

0 commit comments

Comments
 (0)