示例#1
0
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,
    )
示例#2
0
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)
			}
		)
示例#4
0
 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)
示例#5
0
 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"))