The harassment app owns the public harassment report form, stored submissions, recipients, and notification email flow.
The old public route and reverse name stay available as /social/harassment/ and social:harassment through social.urls.
Harassment captures anonymous or attributed reports with optional email plus a free-text message.HarassmentEmailRecipient stores the notification recipient list.HarassmentForm is a simple ModelForm that adds Bootstrap classes. The captcha token is read directly from request.POST['cf-turnstile-response'].harassment.views.harassment_form handles the PRG flow:
harass_submitted session flag is set.templates/social/harassment_admin_email.html receives harassment and harassment_url.harassment_url points at /admin/harassment/harassment/<id>/.social.Harassment and social.HarassmentEmailRecipient.is_reviewed or assigned_to here if case management becomes more formal.