Anand Doshi | 633edbe | 2011-12-08 19:34:01 +0530 | [diff] [blame] | 1 | import webnotes |
| 2 | |
| 3 | def execute(): |
| 4 | """ |
| 5 | * Reload email_digest doctype |
| 6 | * Create default email digest |
| 7 | """ |
| 8 | from webnotes.modules.module_manager import reload_doc |
| 9 | |
| 10 | # Minor fix in print_format doctype |
| 11 | #reload_doc('core', 'doctype', 'print_format') |
| 12 | |
Anand Doshi | 972b165 | 2011-12-22 12:04:28 +0530 | [diff] [blame] | 13 | #reload_doc('setup', 'doctype', 'email_digest') |
Anand Doshi | 633edbe | 2011-12-08 19:34:01 +0530 | [diff] [blame] | 14 | |
Anand Doshi | 972b165 | 2011-12-22 12:04:28 +0530 | [diff] [blame] | 15 | #global create_default_email_digest |
| 16 | #create_default_email_digest() |
| 17 | |
| 18 | global enabled_default_email_digest |
| 19 | enabled_default_email_digest() |
| 20 | |
| 21 | |
| 22 | def enabled_default_email_digest(): |
| 23 | """ |
| 24 | Enables the created email digest |
| 25 | """ |
| 26 | from webnotes.model.doc import Document |
Anand Doshi | 248f8f5 | 2011-12-22 12:26:36 +0530 | [diff] [blame] | 27 | from webnotes.model.code import get_obj |
Anand Doshi | 972b165 | 2011-12-22 12:04:28 +0530 | [diff] [blame] | 28 | companies_list = webnotes.conn.sql("SELECT company_name FROM `tabCompany`", as_list=1) |
| 29 | for company in companies_list: |
| 30 | if company and company[0]: |
| 31 | edigest = Document('Email Digest', 'Default Weekly Digest - ' + company[0]) |
| 32 | if edigest: |
| 33 | edigest.enabled = 1 |
| 34 | edigest.save() |
Anand Doshi | 248f8f5 | 2011-12-22 12:26:36 +0530 | [diff] [blame] | 35 | ed_obj = get_obj(doc=edigest) |
| 36 | ed_obj.on_update() |
| 37 | |
Anand Doshi | 633edbe | 2011-12-08 19:34:01 +0530 | [diff] [blame] | 38 | |
| 39 | |
| 40 | def create_default_email_digest(): |
| 41 | """ |
| 42 | * Weekly Digest |
| 43 | * For all companies |
| 44 | * Recipients: System Managers |
| 45 | * Full content |
| 46 | * Disabled by default |
| 47 | """ |
| 48 | from webnotes.model.doc import Document |
| 49 | companies_list = webnotes.conn.sql("SELECT company_name FROM `tabCompany`", as_list=1) |
| 50 | global get_system_managers |
| 51 | system_managers = get_system_managers() |
| 52 | for company in companies_list: |
| 53 | if company and company[0]: |
| 54 | edigest = Document('Email Digest') |
| 55 | edigest.name = "Default Weekly Digest - " + company[0] |
| 56 | edigest.company = company[0] |
| 57 | edigest.frequency = 'Weekly' |
| 58 | edigest.recipient_list = system_managers |
| 59 | edigest.new_leads = 1 |
| 60 | edigest.new_enquiries = 1 |
| 61 | edigest.new_quotations = 1 |
| 62 | edigest.new_sales_orders = 1 |
| 63 | edigest.new_purchase_orders = 1 |
| 64 | edigest.new_transactions = 1 |
| 65 | edigest.payables = 1 |
| 66 | edigest.payments = 1 |
| 67 | edigest.expenses_booked = 1 |
| 68 | edigest.invoiced_amount = 1 |
| 69 | edigest.collections = 1 |
| 70 | edigest.income = 1 |
| 71 | edigest.bank_balance = 1 |
| 72 | exists = webnotes.conn.sql("""\ |
| 73 | SELECT name FROM `tabEmail Digest` |
| 74 | WHERE name = %s""", edigest.name) |
| 75 | if (exists and exists[0]) and exists[0][0]: |
| 76 | continue |
| 77 | else: |
| 78 | edigest.save(1) |
| 79 | |
| 80 | |
| 81 | def get_system_managers(): |
| 82 | """ |
| 83 | Returns a string of system managers' email addresses separated by \n |
| 84 | """ |
| 85 | system_managers_list = webnotes.conn.sql("""\ |
| 86 | SELECT DISTINCT p.name |
| 87 | FROM tabUserRole ur, tabProfile p |
| 88 | WHERE |
| 89 | ur.parent = p.name AND |
| 90 | ur.role='System Manager' AND |
| 91 | p.docstatus<2 AND |
| 92 | p.enabled=1 AND |
| 93 | p.name not in ('Administrator', 'Guest')""", as_list=1) |
| 94 | |
| 95 | return "\n".join([sysman[0] for sysman in system_managers_list]) |
| 96 | |