Exemplo n.º 1
0
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
	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)
			}
		)
Exemplo n.º 2
0
def process_energy_points(doc, state):
	if (frappe.flags.in_patch
		or frappe.flags.in_install
		or not is_energy_point_enabled()):
		return

	for d in frappe.cache_manager.get_doctype_map('Energy Point Rule', doc.doctype,
		dict(reference_doctype = doc.doctype, enabled=1)):
		frappe.get_doc('Energy Point Rule', d.get('name')).apply(doc)
Exemplo n.º 3
0
def make_notification_logs(doc, users):
	from frappe.social.doctype.energy_point_settings.energy_point_settings import is_energy_point_enabled
	for user in users:
		if frappe.db.exists('User', user):
			if is_notifications_enabled(user):
				if doc.type == 'Energy Point' and not is_energy_point_enabled():
					return

				_doc = frappe.new_doc('Notification Log')
				_doc.update(doc)
				_doc.for_user = user
				_doc.subject = _doc.subject.replace('<div>', '').replace('</div>', '')
				if _doc.for_user != _doc.from_user or doc.type == 'Energy Point':
					_doc.insert(ignore_permissions=True)
Exemplo n.º 4
0
def make_notification_logs(doc, users):
	from frappe.social.doctype.energy_point_settings.energy_point_settings import is_energy_point_enabled

	for user in users:
		if frappe.db.exists('User', {"email": user, "enabled": 1}):
			if is_notifications_enabled(user):
				if doc.type == 'Energy Point' and not is_energy_point_enabled():
					return

				_doc = frappe.new_doc('Notification Log')
				_doc.update(doc)
				_doc.for_user = user
				if _doc.for_user != _doc.from_user or doc.type == 'Energy Point' or doc.type == 'Alert':
					_doc.insert(ignore_permissions=True)
Exemplo n.º 5
0
def process_energy_points(doc, state):
    if (frappe.flags.in_patch or frappe.flags.in_install
            or not is_energy_point_enabled()):
        return

    old_doc = doc.get_doc_before_save()

    # check if doc has been cancelled
    if old_doc and old_doc.docstatus == 1 and doc.docstatus == 2:
        return revert_points_for_cancelled_doc(doc)

    for d in frappe.cache_manager.get_doctype_map(
            'Energy Point Rule', doc.doctype,
            dict(reference_doctype=doc.doctype, enabled=1)):
        frappe.get_doc('Energy Point Rule', d.get('name')).apply(doc)
Exemplo n.º 6
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,
    )
Exemplo n.º 7
0
def process_energy_points(doc, state):
    if (frappe.flags.in_patch or frappe.flags.in_install
            or frappe.flags.in_migrate or frappe.flags.in_import
            or frappe.flags.in_setup_wizard or doc.doctype in log_types):
        return

    if not is_energy_point_enabled():
        return

    old_doc = doc.get_doc_before_save()

    # check if doc has been cancelled
    if old_doc and old_doc.docstatus == 1 and doc.docstatus == 2:
        return revert_points_for_cancelled_doc(doc)

    for d in frappe.cache_manager.get_doctype_map(
            "Energy Point Rule", doc.doctype,
            dict(reference_doctype=doc.doctype, enabled=1)):
        frappe.get_doc("Energy Point Rule", d.get("name")).apply(doc)
Exemplo n.º 8
0
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
    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()
    settings = {x["name"]: x["energy_points_summary"] for x in frappe.get_all("User", \
     filters={"user_type": "System User", "enabled": 1}, fields=["name", "energy_points_summary"])}
    all_users = [
        user for user in get_enabled_system_users()
        if settings.get(user["name"]) == 1
    ]

    for user in all_users:
        frappe.set_user_lang(user.name)
        frappe.sendmail(
            subject=_('{} energy points summary').format(_(timespan)),
            recipients=user.email,
            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)
            })

    frappe.set_user_lang(frappe.session.user)
Exemplo n.º 9
0
def get_bootinfo():
    """build and return boot info"""
    frappe.set_user_lang(frappe.session.user)
    bootinfo = frappe._dict()
    hooks = frappe.get_hooks()
    doclist = []

    # user
    get_user(bootinfo)

    # system info
    bootinfo.sitename = frappe.local.site
    bootinfo.sysdefaults = frappe.defaults.get_defaults()
    bootinfo.server_date = frappe.utils.nowdate()

    if frappe.session['user'] != 'Guest':
        bootinfo.user_info = get_user_info()
        bootinfo.sid = frappe.session['sid']

    bootinfo.modules = {}
    bootinfo.module_list = []
    load_desktop_data(bootinfo)
    bootinfo.letter_heads = get_letter_heads()
    bootinfo.active_domains = frappe.get_active_domains()
    bootinfo.all_domains = [d.get("name") for d in frappe.get_all("Domain")]
    add_layouts(bootinfo)

    bootinfo.module_app = frappe.local.module_app
    bootinfo.single_types = [
        d.name for d in frappe.get_all('DocType', {'issingle': 1})
    ]
    bootinfo.nested_set_doctypes = [
        d.parent
        for d in frappe.get_all('DocField', {'fieldname': 'lft'}, ['parent'])
    ]
    add_home_page(bootinfo, doclist)
    bootinfo.page_info = get_allowed_pages()
    load_translations(bootinfo)
    add_timezone_info(bootinfo)
    load_conf_settings(bootinfo)
    load_print(bootinfo, doclist)
    doclist.extend(get_meta_bundle("Page"))
    bootinfo.home_folder = frappe.db.get_value("File", {"is_home_folder": 1})
    bootinfo.navbar_settings = get_navbar_settings()
    bootinfo.notification_settings = get_notification_settings()

    # ipinfo
    if frappe.session.data.get('ipinfo'):
        bootinfo.ipinfo = frappe.session['data']['ipinfo']

    # add docs
    bootinfo.docs = doclist

    for method in hooks.boot_session or []:
        frappe.get_attr(method)(bootinfo)

    if bootinfo.lang:
        bootinfo.lang = text_type(bootinfo.lang)
    bootinfo.versions = {k: v['version'] for k, v in get_versions().items()}

    bootinfo.error_report_email = frappe.conf.error_report_email
    bootinfo.calendars = sorted(frappe.get_hooks("calendars"))
    bootinfo.treeviews = frappe.get_hooks("treeviews") or []
    bootinfo.lang_dict = get_lang_dict()
    bootinfo.success_action = get_success_action()
    bootinfo.update(get_email_accounts(user=frappe.session.user))
    bootinfo.energy_points_enabled = is_energy_point_enabled()
    bootinfo.website_tracking_enabled = is_tracking_enabled()
    bootinfo.points = get_energy_points(frappe.session.user)
    bootinfo.frequently_visited_links = frequently_visited_links()
    bootinfo.link_preview_doctypes = get_link_preview_doctypes()
    bootinfo.additional_filters_config = get_additional_filters_from_hooks()
    bootinfo.desk_settings = get_desk_settings()
    bootinfo.app_logo_url = get_app_logo()

    return bootinfo