def send_summary(timespan): from frappe.social.doctype.energy_point_settings.energy_point_settings import ( is_energy_point_enabled, ) from frappe.utils.user import get_enabled_system_users if not is_energy_point_enabled(): return if not is_email_notifications_enabled_for_type(frappe.session.user, "Energy Point"): return from_date = frappe.utils.add_to_date(None, weeks=-1) if timespan == "Monthly": from_date = frappe.utils.add_to_date(None, months=-1) user_points = get_user_energy_and_review_points(from_date=from_date, as_dict=False) # do not send report if no activity found if not user_points or not user_points[0].energy_points: return from_date = getdate(from_date) to_date = getdate() # select only those users that have energy point email notifications enabled all_users = [ user.email for user in get_enabled_system_users() if is_email_notifications_enabled_for_type(user.name, "Energy Point") ] frappe.sendmail( subject="{} energy points summary".format(timespan), recipients=all_users, template="energy_points_summary", args={ "top_performer": user_points[0], "top_reviewer": max(user_points, key=lambda x: x["given_points"]), "standings": user_points[:10], # top 10 "footer_message": get_footer_message(timespan).format(from_date, to_date), }, with_container=1, )
def send_notification_email(doc): is_type_enabled = is_email_notifications_enabled_for_type( doc.for_user, doc.type) if not is_type_enabled: return if doc.type == 'Energy Point' and doc.email_content is None: return from frappe.utils import get_url_to_form, strip_html doc_link = get_url_to_form(doc.document_type, doc.document_name) header = get_email_header(doc) email_subject = strip_html(doc.subject) frappe.sendmail(recipients=doc.for_user, subject=email_subject, template="new_notification", args={ 'body_content': doc.subject, 'description': doc.email_content, 'document_type': doc.document_type, 'document_name': doc.document_name, 'doc_link': doc_link }, header=[header, 'orange'], now=frappe.flags.in_test)
def send_summary(timespan): from frappe.utils.user import get_enabled_system_users from frappe.social.doctype.energy_point_settings.energy_point_settings import is_energy_point_enabled if not is_energy_point_enabled(): return if not is_email_notifications_enabled_for_type(frappe.session.user, 'Energy Point'): return from_date = frappe.utils.add_to_date(None, weeks=-1) if timespan == 'Monthly': from_date = frappe.utils.add_to_date(None, months=-1) user_points = get_user_energy_and_review_points(from_date=from_date, as_dict=False) # do not send report if no activity found if not user_points or not user_points[0].energy_points: return from_date = getdate(from_date) to_date = getdate() all_users = [user.email for user in get_enabled_system_users()] frappe.sendmail( subject='{} energy points summary'.format(timespan), recipients=all_users, template="energy_points_summary", args={ 'top_performer': user_points[0], 'top_reviewer': max(user_points, key=lambda x:x['given_points']), 'standings': user_points[:10], # top 10 'footer_message': get_footer_message(timespan).format(from_date, to_date) } )
def after_insert(self): frappe.publish_realtime("notification", after_commit=True, user=self.for_user) set_notifications_as_unseen(self.for_user) if is_email_notifications_enabled_for_type(self.for_user, self.type): send_notification_email(self)
def after_insert(self): frappe.publish_realtime('notification', after_commit=True, user=self.for_user) set_notifications_as_unseen(self.for_user) if is_email_notifications_enabled_for_type(self.for_user, self.type): try: send_notification_email(self) except frappe.OutgoingEmailError: frappe.log_error(message=frappe.get_traceback(), title=_("Failed to send notification email"))