[UPDT] HORILLA AUTOMATIONS: Updated mail automation send mail part by adding function to fetch candidate mails

This commit is contained in:
Horilla
2025-05-15 11:22:18 +05:30
parent cb7ea9f256
commit 069957ffac
2 changed files with 29 additions and 12 deletions

View File

@@ -42,10 +42,23 @@ def generate_choices(model_path):
module = __import__(module_name, fromlist=[class_name])
model_class: Employee = getattr(module, class_name)
fk_relation, m2m_relation = get_forward_relation_paths_separated(
# Get relations to Employee
employee_fk_paths, employee_m2m_paths = get_forward_relation_paths_separated(
model_class, Employee
)
all_fields = fk_relation + m2m_relation
# Get relations to Candidate
candidate_fk_paths, candidate_m2m_paths = get_forward_relation_paths_separated(
model_class, Candidate
)
all_fields = (
employee_fk_paths
+ employee_m2m_paths
+ candidate_fk_paths
+ candidate_m2m_paths
)
all_mail_to_field = []
mail_details_choice = []
@@ -80,6 +93,10 @@ def generate_choices(model_path):
f"{field_tuple[1].verbose_name.capitalize().replace(' id','')} / Reporting Manager (Template context) ",
)
)
print(model_path)
print(
"_______________________________________________________________________________________"
)
if model_class == Employee:
# reporting manager mail to
all_mail_to_field.append(

View File

@@ -361,7 +361,7 @@ def send_mail(request, automation, instance):
mail_template = automation.mail_template
employees = []
raw_emails = []
to_emails = []
if instance.pk:
# refreshing instance due to m2m fields are not loading here some times
@@ -378,15 +378,15 @@ def send_mail(request, automation, instance):
for mapping in eval_validate(automation.mail_to):
result = getattribute(instance, mapping)
if isinstance(result, list):
raw_emails.extend(result)
to_emails.extend(result)
else:
raw_emails.append(result)
to_emails.append(result)
raw_emails = list(filter(None, set(raw_emails)))
to_emails = list(filter(None, set(to_emails)))
employees = Employee.objects.filter(
models.Q(email__in=raw_emails)
| models.Q(employee_work_info__email__in=raw_emails)
models.Q(email__in=to_emails)
| models.Q(employee_work_info__email__in=to_emails)
).select_related("employee_work_info")
employees = list(employees)
@@ -399,11 +399,11 @@ def send_mail(request, automation, instance):
except Exception as e:
logger.error(e)
emails = [str(emp.get_mail()) for emp in employees if emp and emp.get_mail()]
cc_emails = [str(emp.get_mail()) for emp in also_sent_to if emp and emp.get_mail()]
user_ids = [emp.employee_user_id for emp in employees]
to = emails[:1]
cc = emails[1:]
to = to_emails
cc = cc_emails
email_backend = ConfiguredEmailBackend()
display_email_name = email_backend.dynamic_from_email_with_display_name
@@ -415,7 +415,7 @@ def send_mail(request, automation, instance):
except:
logger.error(Exception)
if pk_or_text and request and raw_emails:
if pk_or_text and request and to_emails:
attachments = []
try:
sender = request.user.employee_get