From fcc74dbac2741edac0e899066d6f4f4d392a5115 Mon Sep 17 00:00:00 2001 From: Faheed Date: Tue, 18 Nov 2025 19:03:20 +0300 Subject: [PATCH] messages and email --- recruitment/__pycache__/views.cpython-312.pyc | Bin 193644 -> 194502 bytes recruitment/views.py | 24 ++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/recruitment/__pycache__/views.cpython-312.pyc b/recruitment/__pycache__/views.cpython-312.pyc index a4efc7df727700a840986734e663c6477c538e79..e95788d2c380bd5a7fdfcd878d2ffd4e24c68813 100644 GIT binary patch delta 2583 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 bB=mz-?_*)p*kg?X-VcGy2a!TN1uys?Zs8H+ diff --git a/recruitment/views.py b/recruitment/views.py index 72b5e92..9db131b 100644 --- a/recruitment/views.py +++ b/recruitment/views.py @@ -4692,7 +4692,8 @@ def message_detail(request, message_id): @login_required def message_create(request): - """Create a new message""" + """Create a new message""" + from .email_service import EmailService if request.method == "POST": form = MessageForm(request.user, request.POST) @@ -4700,8 +4701,25 @@ def message_create(request): message = form.save(commit=False) message.sender = request.user message.save() - messages.success(request, "Message sent successfully!") + ["recipient", "job", "subject", "content", "message_type"] + recipient_email = form.cleaned_data['recipient'].email # Assuming recipient is a User or Model with an 'email' field + subject = form.cleaned_data['subject'] + custom_message = form.cleaned_data['content'] + job_id = form.cleaned_data['job'].id if 'job' in form.cleaned_data and form.cleaned_data['job'] else None + sender_user_id = request.user.id + + task_id = async_task( + 'recruitment.tasks.send_bulk_email_task', + subject, + custom_message, # Pass the custom message + [recipient_email], # Pass the specific recipient as a list of one + + sender_user_id=sender_user_id, + job_id=job_id, + hook='recruitment.tasks.email_success_hook') + + logger.info(f"{task_id} queued.") return redirect("message_list") else: messages.error(request, "Please correct the errors below.") @@ -4714,6 +4732,8 @@ def message_create(request): if request.user.user_type != "staff": return render(request, "messages/candidate_message_form.html", context) return render(request, "messages/message_form.html", context) + + @login_required def message_reply(request, message_id): """Reply to a message"""