@hooks.register("before_bulk_action")
def bulk_anonymize_delete_user_submissions(
request, action_type, objects, action_class_instance
):
# Handling for bulk deletion of users when anonymization is selected
if (
settings.SUBMISSION_ANONYMIZATION_ENABLED
and action_type == "delete"
and request.method == "POST"
and request.POST.get("handle_submissions") == "anonymize"
and all(isinstance(x, User) for x in objects)
):
ApplicationSubmission = apps.get_model("funds", "ApplicationSubmission")
AnonymizedSubmission = apps.get_model("funds", "AnonymizedSubmission")
submissions_to_anonymize = list(
ApplicationSubmission.objects.filter(user__in=objects)
.exclude_draft()
.values(
"form_data",
"form_fields",
"page_id",
"round_id",
"status",
"submit_time",
"screening_statuses",
)
)
for submission_dict in submissions_to_anonymize:
AnonymizedSubmission.from_dict(submission_dict)