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) } )
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)
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)
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)
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)
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 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)
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)
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