Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

System Email Notifications and Active Primary Menu #541

Merged
merged 8 commits into from
Nov 29, 2024
105 changes: 97 additions & 8 deletions boranga/components/conservation_status/email.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from ledger_api_client.ledger_models import EmailUserRO as EmailUser

from boranga.components.emails.emails import TemplateEmailBase
from boranga.components.species_and_communities.models import SystemEmailGroup
from boranga.components.users.email import _log_user_email
from boranga.helpers import (
convert_external_url_to_internal_url,
Expand Down Expand Up @@ -157,9 +158,20 @@ def send_submit_email_notification(request, cs_proposal):
)
url = convert_external_url_to_internal_url(url)

group_type = (
cs_proposal.species.group_type
if cs_proposal.species
else cs_proposal.community.group_type
)

recipients = SystemEmailGroup.emails_by_group_and_area(
group_type=group_type,
area=SystemEmailGroup.AREA_CONSERVATION_STATUS,
)

context = {"cs_proposal": cs_proposal, "url": url}

msg = email.send(cs_proposal.assessor_recipients, context=context)
msg = email.send(recipients, context=context)

sender = request.user if request else settings.DEFAULT_FROM_EMAIL

Expand Down Expand Up @@ -427,7 +439,18 @@ def send_approver_decline_email_notification(reason, request, conservation_statu
)
context = {"cs_proposal": conservation_status, "reason": reason, "url": url}

msg = email.send(conservation_status.approver_recipients, context=context)
group_type = (
conservation_status.species.group_type
if conservation_status.species
else conservation_status.community.group_type
)

recipients = SystemEmailGroup.emails_by_group_and_area(
group_type=group_type,
area=SystemEmailGroup.AREA_CONSERVATION_STATUS,
)

msg = email.send(recipients, context=context)

sender = get_sender_user()

Expand All @@ -450,7 +473,18 @@ def send_approver_propose_delist_email_notification(
)
context = {"cs_proposal": conservation_status, "reason": reason, "url": url}

msg = email.send(conservation_status.approver_recipients, context=context)
group_type = (
conservation_status.species.group_type
if conservation_status.species
else conservation_status.community.group_type
)

recipients = SystemEmailGroup.emails_by_group_and_area(
group_type=group_type,
area=SystemEmailGroup.AREA_CONSERVATION_STATUS,
)

msg = email.send(recipients, context=context)

sender = get_sender_user()

Expand All @@ -477,7 +511,18 @@ def send_approver_approve_email_notification(request, conservation_status):
"url": url,
}

msg = email.send(conservation_status.approver_recipients, context=context)
group_type = (
conservation_status.species.group_type
if conservation_status.species
else conservation_status.community.group_type
)

recipients = SystemEmailGroup.emails_by_group_and_area(
group_type=group_type,
area=SystemEmailGroup.AREA_CONSERVATION_STATUS,
)

msg = email.send(recipients, context=context)

sender = get_sender_user()

Expand All @@ -499,7 +544,18 @@ def send_approver_proposed_for_agenda_email_notification(
"assessor_comment": assessor_comment,
}

msg = email.send(conservation_status.approver_recipients, context=context)
group_type = (
conservation_status.species.group_type
if conservation_status.species
else conservation_status.community.group_type
)

recipients = SystemEmailGroup.emails_by_group_and_area(
group_type=group_type,
area=SystemEmailGroup.AREA_CONSERVATION_STATUS,
)

msg = email.send(recipients, context=context)

sender = get_sender_user()

Expand All @@ -521,7 +577,18 @@ def send_assessor_ready_for_agenda_email_notification(
"assessor_comment": assessor_comment,
}

msg = email.send(conservation_status.assessor_recipients, context=context)
group_type = (
conservation_status.species.group_type
if conservation_status.species
else conservation_status.community.group_type
)

recipients = SystemEmailGroup.emails_by_group_and_area(
group_type=group_type,
area=SystemEmailGroup.AREA_CONSERVATION_STATUS,
)

msg = email.send(recipients, context=context)

sender = get_sender_user()

Expand Down Expand Up @@ -552,7 +619,18 @@ def send_proposal_approver_sendback_email_notification(request, conservation_sta
"approver_comment": approver_comment,
}

msg = email.send(conservation_status.assessor_recipients, context=context)
group_type = (
conservation_status.species.group_type
if conservation_status.species
else conservation_status.community.group_type
)

recipients = SystemEmailGroup.emails_by_group_and_area(
group_type=group_type,
area=SystemEmailGroup.AREA_CONSERVATION_STATUS,
)

msg = email.send(recipients, context=context)

sender = get_sender_user()

Expand All @@ -578,7 +656,18 @@ def send_approver_defer_email_notification(request, conservation_status, reason)
"reason": reason,
}

msg = email.send(conservation_status.assessor_recipients, context=context)
group_type = (
conservation_status.species.group_type
if conservation_status.species
else conservation_status.community.group_type
)

recipients = SystemEmailGroup.emails_by_group_and_area(
group_type=group_type,
area=SystemEmailGroup.AREA_CONSERVATION_STATUS,
)

msg = email.send(recipients, context=context)

sender = get_sender_user()

Expand Down
20 changes: 0 additions & 20 deletions boranga/components/conservation_status/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -820,26 +820,6 @@ def allowed_assessors(self):
)
return users

@property
def assessor_recipients(self):
recipients = []
group_ids = member_ids(
GROUP_NAME_CONSERVATION_STATUS_ASSESSOR, include_superusers=False
)
for id in group_ids:
recipients.append(EmailUser.objects.get(id=id).email)
return recipients

@property
def approver_recipients(self):
recipients = []
group_ids = member_ids(
GROUP_NAME_CONSERVATION_STATUS_APPROVER, include_superusers=False
)
for id in group_ids:
recipients.append(EmailUser.objects.get(id=id).email)
return recipients

@property
def current_conservation_status(self):
if self.species:
Expand Down
2 changes: 1 addition & 1 deletion boranga/components/history/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ def get(self, request, app_label, component_name, model_name, pk):

Example:

api/history/boranga/species_communities/SpeciesDocument/729
api/history/boranga/species-communities/SpeciesDocument/729
"""
super().get(request, model_name)

Expand Down
29 changes: 25 additions & 4 deletions boranga/components/occurrence/email.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from ledger_api_client.ledger_models import EmailUserRO as EmailUser

from boranga.components.emails.emails import TemplateEmailBase
from boranga.components.species_and_communities.models import SystemEmailGroup
from boranga.components.users.email import _log_user_email
from boranga.helpers import (
convert_external_url_to_internal_url,
Expand Down Expand Up @@ -129,7 +130,12 @@ def send_submit_email_notification(request, occurrence_report):

context = {"occurrence_report": occurrence_report, "url": url}

msg = email.send(occurrence_report.assessor_recipients, context=context)
recipients = SystemEmailGroup.emails_by_group_and_area(
group_type=occurrence_report.group_type,
area=SystemEmailGroup.AREA_OCCURRENCE,
)

msg = email.send(recipients, context=context)

sender = request.user if request else settings.DEFAULT_FROM_EMAIL

Expand Down Expand Up @@ -407,7 +413,12 @@ def send_approver_decline_email_notification(reason, request, occurrence_report)
)
context = {"occurrence_report": occurrence_report, "reason": reason, "url": url}

msg = email.send(occurrence_report.approver_recipients, context=context)
recipients = SystemEmailGroup.emails_by_group_and_area(
group_type=occurrence_report.group_type,
area=SystemEmailGroup.AREA_OCCURRENCE,
)

msg = email.send(recipients, context=context)

sender = get_sender_user()

Expand Down Expand Up @@ -489,7 +500,12 @@ def send_approver_approve_email_notification(request, occurrence_report):
"url": url,
}

msg = email.send(occurrence_report.approver_recipients, context=context)
recipients = SystemEmailGroup.emails_by_group_and_area(
group_type=occurrence_report.group_type,
area=SystemEmailGroup.AREA_OCCURRENCE,
)

msg = email.send(recipients, context=context)

sender = get_sender_user()

Expand Down Expand Up @@ -517,7 +533,12 @@ def send_approver_back_to_assessor_email_notification(
"url": url,
}

msg = email.send(occurrence_report.assessor_recipients, context=context)
recipients = SystemEmailGroup.emails_by_group_and_area(
group_type=occurrence_report.group_type,
area=SystemEmailGroup.AREA_OCCURRENCE,
)

msg = email.send(recipients, context=context)

sender = get_sender_user()

Expand Down
18 changes: 1 addition & 17 deletions boranga/components/occurrence/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -555,22 +555,6 @@ def has_unlocked_mode(self, request):
def get_approver_group(self):
return SystemGroup.objects.get(name=GROUP_NAME_OCCURRENCE_APPROVER)

@property
def assessor_recipients(self):
recipients = []
group_ids = member_ids(GROUP_NAME_OCCURRENCE_ASSESSOR, include_superusers=False)
for id in group_ids:
recipients.append(EmailUser.objects.get(id=id).email)
return recipients

@property
def approver_recipients(self):
recipients = []
group_ids = member_ids(GROUP_NAME_OCCURRENCE_APPROVER, include_superusers=False)
for id in group_ids:
recipients.append(EmailUser.objects.get(id=id).email)
return recipients

@property
def related_item_identifier(self):
return self.occurrence_report_number
Expand All @@ -594,7 +578,7 @@ def as_related_item(self):
descriptor=self.related_item_descriptor,
status=self.related_item_status,
action_url=(
f'<a href="/internal/occurrence_report/{self.id}'
f'<a href="/internal/occurrence-report/{self.id}'
f'?action=view" target="_blank">View '
'<i class="bi bi-box-arrow-up-right"></i></a>'
),
Expand Down
12 changes: 10 additions & 2 deletions boranga/components/species_and_communities/email.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,11 @@ def send_species_create_email_notification(request, species_proposal):

context = {"species_community_proposal": species_proposal, "url": url}

msg = email.send(species_proposal.approver_recipients, context=context)
recipients = SystemEmailGroup.emails_by_group_and_area(
group_type=species_proposal.group_type,
)

msg = email.send(recipients, context=context)
sender = request.user if request else settings.DEFAULT_FROM_EMAIL

_log_species_email(msg, species_proposal, sender=sender)
Expand Down Expand Up @@ -450,7 +454,11 @@ def send_community_create_email_notification(request, community_proposal):

context = {"species_community_proposal": community_proposal, "url": url}

msg = email.send(community_proposal.approver_recipients, context=context)
recipients = SystemEmailGroup.emails_by_group_and_area(
group_type=community_proposal.group_type,
)

msg = email.send(recipients, context=context)
sender = request.user if request else settings.DEFAULT_FROM_EMAIL

_log_community_email(msg, community_proposal, sender=sender)
Expand Down
Loading
Loading