Add grade filter to user search widget and enhance logging for bulk add operations
This commit is contained in:
@@ -1967,6 +1967,13 @@ class ExamCollection(models.Model, AuthorMixin):
|
||||
if UserUserGroup is None:
|
||||
raise RuntimeError("UserUserGroup model not available")
|
||||
|
||||
# Debug: log what we received
|
||||
try:
|
||||
group_pks = [g.pk for g in groups] if groups is not None else []
|
||||
except Exception:
|
||||
group_pks = []
|
||||
logger.debug("bulk_add_user_user_groups called on collection=%s with groups=%s exam_types=%s", self.pk, group_pks, exam_types)
|
||||
|
||||
# Normalize groups to a list of model instances
|
||||
if groups is None:
|
||||
return 0
|
||||
@@ -1994,9 +2001,21 @@ class ExamCollection(models.Model, AuthorMixin):
|
||||
for exam in exams:
|
||||
# Each exam model exposes a `user_user_groups` ManyToManyField
|
||||
try:
|
||||
before_pks = set(exam.user_user_groups.values_list('pk', flat=True))
|
||||
exam.user_user_groups.add(*groups_qs)
|
||||
# Ensure any downstream signals / caches see the change
|
||||
exam.save()
|
||||
after_pks = set(exam.user_user_groups.values_list('pk', flat=True))
|
||||
# log if expected group pks are not present after add
|
||||
try:
|
||||
expected_pks = {g.pk for g in groups_qs}
|
||||
except Exception:
|
||||
expected_pks = set()
|
||||
if not expected_pks.issubset(after_pks):
|
||||
logger.warning(
|
||||
"After add, exam %s missing expected user_user_groups; before=%s after=%s expected=%s",
|
||||
getattr(exam, 'pk', exam), sorted(before_pks), sorted(after_pks), sorted(expected_pks),
|
||||
)
|
||||
updated += 1
|
||||
except Exception as e:
|
||||
logger.exception("Failed to add user_user_groups to exam %s: %s", getattr(exam, 'pk', exam), e)
|
||||
@@ -2011,6 +2030,13 @@ class ExamCollection(models.Model, AuthorMixin):
|
||||
if CidUserGroup is None:
|
||||
raise RuntimeError("CidUserGroup model not available")
|
||||
|
||||
# Debug: log what we received
|
||||
try:
|
||||
group_pks = [g.pk for g in groups] if groups is not None else []
|
||||
except Exception:
|
||||
group_pks = []
|
||||
logger.debug("bulk_add_cid_user_groups called on collection=%s with groups=%s exam_types=%s", self.pk, group_pks, exam_types)
|
||||
|
||||
if groups is None:
|
||||
return 0
|
||||
|
||||
@@ -2033,8 +2059,19 @@ class ExamCollection(models.Model, AuthorMixin):
|
||||
for exam in exams:
|
||||
# Each exam model exposes a `cid_user_groups` ManyToManyField
|
||||
try:
|
||||
before_pks = set(exam.cid_user_groups.values_list('pk', flat=True))
|
||||
exam.cid_user_groups.add(*groups_qs)
|
||||
exam.save()
|
||||
after_pks = set(exam.cid_user_groups.values_list('pk', flat=True))
|
||||
try:
|
||||
expected_pks = {g.pk for g in groups_qs}
|
||||
except Exception:
|
||||
expected_pks = set()
|
||||
if not expected_pks.issubset(after_pks):
|
||||
logger.warning(
|
||||
"After add, exam %s missing expected cid_user_groups; before=%s after=%s expected=%s",
|
||||
getattr(exam, 'pk', exam), sorted(before_pks), sorted(after_pks), sorted(expected_pks),
|
||||
)
|
||||
updated += 1
|
||||
except Exception as e:
|
||||
logger.exception("Failed to add cid_user_groups to exam %s: %s", getattr(exam, 'pk', exam), e)
|
||||
|
||||
Reference in New Issue
Block a user