def execute(): dataent.reload_doc("email", "doctype", "email_template") if not dataent.db.exists("Email Template", _('Leave Approval Notification')): base_path = dataent.get_app_path("epaas", "hr", "doctype") response = dataent.read_file(os.path.join(base_path, "leave_application/leave_application_email_template.html")) dataent.get_doc({ 'doctype': 'Email Template', 'name': _("Leave Approval Notification"), 'response': response, 'subject': _("Leave Approval Notification"), 'owner': dataent.session.user, }).insert(ignore_permissions=True) if not dataent.db.exists("Email Template", _('Leave Status Notification')): base_path = dataent.get_app_path("epaas", "hr", "doctype") response = dataent.read_file(os.path.join(base_path, "leave_application/leave_application_email_template.html")) dataent.get_doc({ 'doctype': 'Email Template', 'name': _("Leave Status Notification"), 'response': response, 'subject': _("Leave Status Notification"), 'owner': dataent.session.user, }).insert(ignore_permissions=True)
def get_change_log_for_app(app, from_version, to_version): change_log_folder = os.path.join(dataent.get_app_path(app), "change_log") if not os.path.exists(change_log_folder): return from_version = Version(from_version) to_version = Version(to_version) # remove pre-release part to_version.prerelease = None major_version_folders = [ "v{0}".format(i) for i in range(from_version.major, to_version.major + 1) ] app_change_log = [] for folder in os.listdir(change_log_folder): if folder in major_version_folders: for file in os.listdir(os.path.join(change_log_folder, folder)): version = Version( os.path.splitext(file)[0][1:].replace("_", ".")) if from_version < version <= to_version: file_path = os.path.join(change_log_folder, folder, file) content = dataent.read_file(file_path) app_change_log.append([version, content]) app_change_log = sorted(app_change_log, key=lambda d: d[0], reverse=True) # convert version to string and send return [[cstr(d[0]), d[1]] for d in app_change_log]
def get_context(context): robots_txt = (dataent.db.get_single_value('Website Settings', 'robots_txt') or (dataent.local.conf.robots_txt and dataent.read_file(dataent.local.conf.robots_txt)) or '') return {'robots_txt': robots_txt}
def prepare_header_footer(soup): options = {} head = soup.find("head").contents styles = soup.find_all("style") bootstrap = dataent.read_file( os.path.join(dataent.local.sites_path, "assets/dataent/css/bootstrap.css")) fontawesome = dataent.read_file( os.path.join(dataent.local.sites_path, "assets/dataent/css/font-awesome.css")) # extract header and footer for html_id in ("header-html", "footer-html"): content = soup.find(id=html_id) if content: # there could be multiple instances of header-html/footer-html for tag in soup.find_all(id=html_id): tag.extract() toggle_visible_pdf(content) html = dataent.render_template( "templates/print_formats/pdf_header_footer.html", { "head": head, "styles": styles, "content": content, "html_id": html_id, "bootstrap": bootstrap, "fontawesome": fontawesome }) # create temp file fname = os.path.join( "/tmp", "dataent-pdf-{0}.html".format(dataent.generate_hash())) with open(fname, "wb") as f: f.write(html.encode("utf-8")) # {"header-html": "/tmp/dataent-pdf-random.html"} options[html_id] = fname else: if html_id == "header-html": options["margin-top"] = "15mm" elif html_id == "footer-html": options["margin-bottom"] = "15mm" return options
def execute(): dataent.reload_doc("email", "doctype", "email_template") dataent.reload_doc("stock", "doctype", "delivery_settings") if not dataent.db.exists("Email Template", _("Dispatch Notification")): base_path = dataent.get_app_path("epaas", "stock", "doctype") response = dataent.read_file( os.path.join(base_path, "delivery_trip/dispatch_notification_template.html")) dataent.get_doc({ "doctype": "Email Template", "name": _("Dispatch Notification"), "response": response, "subject": _("Your order is out for delivery!"), "owner": dataent.session.user, }).insert(ignore_permissions=True) delivery_settings = dataent.get_doc("Delivery Settings") delivery_settings.dispatch_template = _("Dispatch Notification") delivery_settings.save()
def install(country=None): records = [ # domains { 'doctype': 'Domain', 'domain': 'Distribution'}, { 'doctype': 'Domain', 'domain': 'Manufacturing'}, { 'doctype': 'Domain', 'domain': 'Retail'}, { 'doctype': 'Domain', 'domain': 'Services'}, { 'doctype': 'Domain', 'domain': 'Education'}, { 'doctype': 'Domain', 'domain': 'Healthcare'}, { 'doctype': 'Domain', 'domain': 'Agriculture'}, { 'doctype': 'Domain', 'domain': 'Non Profit'}, # address template {'doctype':"Address Template", "country": country}, # item group {'doctype': 'Item Group', 'item_group_name': _('All Item Groups'), 'is_group': 1, 'parent_item_group': ''}, {'doctype': 'Item Group', 'item_group_name': _('Products'), 'is_group': 0, 'parent_item_group': _('All Item Groups'), "show_in_website": 1 }, {'doctype': 'Item Group', 'item_group_name': _('Raw Material'), 'is_group': 0, 'parent_item_group': _('All Item Groups') }, {'doctype': 'Item Group', 'item_group_name': _('Services'), 'is_group': 0, 'parent_item_group': _('All Item Groups') }, {'doctype': 'Item Group', 'item_group_name': _('Sub Assemblies'), 'is_group': 0, 'parent_item_group': _('All Item Groups') }, {'doctype': 'Item Group', 'item_group_name': _('Consumable'), 'is_group': 0, 'parent_item_group': _('All Item Groups') }, # salary component {'doctype': 'Salary Component', 'salary_component': _('Income Tax'), 'description': _('Income Tax'), 'type': 'Deduction'}, {'doctype': 'Salary Component', 'salary_component': _('Basic'), 'description': _('Basic'), 'type': 'Earning'}, {'doctype': 'Salary Component', 'salary_component': _('Arrear'), 'description': _('Arrear'), 'type': 'Earning'}, {'doctype': 'Salary Component', 'salary_component': _('Leave Encashment'), 'description': _('Leave Encashment'), 'type': 'Earning'}, # expense claim type {'doctype': 'Expense Claim Type', 'name': _('Calls'), 'expense_type': _('Calls')}, {'doctype': 'Expense Claim Type', 'name': _('Food'), 'expense_type': _('Food')}, {'doctype': 'Expense Claim Type', 'name': _('Medical'), 'expense_type': _('Medical')}, {'doctype': 'Expense Claim Type', 'name': _('Others'), 'expense_type': _('Others')}, {'doctype': 'Expense Claim Type', 'name': _('Travel'), 'expense_type': _('Travel')}, # leave type {'doctype': 'Leave Type', 'leave_type_name': _('Casual Leave'), 'name': _('Casual Leave'), 'allow_encashment': 1, 'is_carry_forward': 1, 'max_continuous_days_allowed': '3', 'include_holiday': 1}, {'doctype': 'Leave Type', 'leave_type_name': _('Compensatory Off'), 'name': _('Compensatory Off'), 'allow_encashment': 0, 'is_carry_forward': 0, 'include_holiday': 1}, {'doctype': 'Leave Type', 'leave_type_name': _('Sick Leave'), 'name': _('Sick Leave'), 'allow_encashment': 0, 'is_carry_forward': 0, 'include_holiday': 1}, {'doctype': 'Leave Type', 'leave_type_name': _('Privilege Leave'), 'name': _('Privilege Leave'), 'allow_encashment': 0, 'is_carry_forward': 0, 'include_holiday': 1}, {'doctype': 'Leave Type', 'leave_type_name': _('Leave Without Pay'), 'name': _('Leave Without Pay'), 'allow_encashment': 0, 'is_carry_forward': 0, 'is_lwp':1, 'include_holiday': 1}, # Employment Type {'doctype': 'Employment Type', 'employee_type_name': _('Full-time')}, {'doctype': 'Employment Type', 'employee_type_name': _('Part-time')}, {'doctype': 'Employment Type', 'employee_type_name': _('Probation')}, {'doctype': 'Employment Type', 'employee_type_name': _('Contract')}, {'doctype': 'Employment Type', 'employee_type_name': _('Commission')}, {'doctype': 'Employment Type', 'employee_type_name': _('Piecework')}, {'doctype': 'Employment Type', 'employee_type_name': _('Intern')}, {'doctype': 'Employment Type', 'employee_type_name': _('Apprentice')}, # Designation {'doctype': 'Designation', 'designation_name': _('CEO')}, {'doctype': 'Designation', 'designation_name': _('Manager')}, {'doctype': 'Designation', 'designation_name': _('Analyst')}, {'doctype': 'Designation', 'designation_name': _('Engineer')}, {'doctype': 'Designation', 'designation_name': _('Accountant')}, {'doctype': 'Designation', 'designation_name': _('Secretary')}, {'doctype': 'Designation', 'designation_name': _('Associate')}, {'doctype': 'Designation', 'designation_name': _('Administrative Officer')}, {'doctype': 'Designation', 'designation_name': _('Business Development Manager')}, {'doctype': 'Designation', 'designation_name': _('HR Manager')}, {'doctype': 'Designation', 'designation_name': _('Project Manager')}, {'doctype': 'Designation', 'designation_name': _('Head of Marketing and Sales')}, {'doctype': 'Designation', 'designation_name': _('Software Developer')}, {'doctype': 'Designation', 'designation_name': _('Designer')}, {'doctype': 'Designation', 'designation_name': _('Researcher')}, # territory: with two default territories, one for home country and one named Rest of the World {'doctype': 'Territory', 'territory_name': _('All Territories'), 'is_group': 1, 'name': _('All Territories'), 'parent_territory': ''}, {'doctype': 'Territory', 'territory_name': country.replace("'", ""), 'is_group': 0, 'parent_territory': _('All Territories')}, {'doctype': 'Territory', 'territory_name': _("Rest Of The World"), 'is_group': 0, 'parent_territory': _('All Territories')}, # customer group {'doctype': 'Customer Group', 'customer_group_name': _('All Customer Groups'), 'is_group': 1, 'name': _('All Customer Groups'), 'parent_customer_group': ''}, {'doctype': 'Customer Group', 'customer_group_name': _('Individual'), 'is_group': 0, 'parent_customer_group': _('All Customer Groups')}, {'doctype': 'Customer Group', 'customer_group_name': _('Commercial'), 'is_group': 0, 'parent_customer_group': _('All Customer Groups')}, {'doctype': 'Customer Group', 'customer_group_name': _('Non Profit'), 'is_group': 0, 'parent_customer_group': _('All Customer Groups')}, {'doctype': 'Customer Group', 'customer_group_name': _('Government'), 'is_group': 0, 'parent_customer_group': _('All Customer Groups')}, # supplier group {'doctype': 'Supplier Group', 'supplier_group_name': _('All Supplier Groups'), 'is_group': 1, 'name': _('All Supplier Groups'), 'parent_supplier_group': ''}, {'doctype': 'Supplier Group', 'supplier_group_name': _('Services'), 'is_group': 0, 'parent_supplier_group': _('All Supplier Groups')}, {'doctype': 'Supplier Group', 'supplier_group_name': _('Local'), 'is_group': 0, 'parent_supplier_group': _('All Supplier Groups')}, {'doctype': 'Supplier Group', 'supplier_group_name': _('Raw Material'), 'is_group': 0, 'parent_supplier_group': _('All Supplier Groups')}, {'doctype': 'Supplier Group', 'supplier_group_name': _('Electrical'), 'is_group': 0, 'parent_supplier_group': _('All Supplier Groups')}, {'doctype': 'Supplier Group', 'supplier_group_name': _('Hardware'), 'is_group': 0, 'parent_supplier_group': _('All Supplier Groups')}, {'doctype': 'Supplier Group', 'supplier_group_name': _('Pharmaceutical'), 'is_group': 0, 'parent_supplier_group': _('All Supplier Groups')}, {'doctype': 'Supplier Group', 'supplier_group_name': _('Distributor'), 'is_group': 0, 'parent_supplier_group': _('All Supplier Groups')}, # Sales Person {'doctype': 'Sales Person', 'sales_person_name': _('Sales Team'), 'is_group': 1, "parent_sales_person": ""}, # Mode of Payment {'doctype': 'Mode of Payment', 'mode_of_payment': 'Check' if country=="United States" else _('Cheque'), 'type': 'Bank'}, {'doctype': 'Mode of Payment', 'mode_of_payment': _('Cash'), 'type': 'Cash'}, {'doctype': 'Mode of Payment', 'mode_of_payment': _('Credit Card'), 'type': 'Bank'}, {'doctype': 'Mode of Payment', 'mode_of_payment': _('Wire Transfer'), 'type': 'Bank'}, {'doctype': 'Mode of Payment', 'mode_of_payment': _('Bank Draft'), 'type': 'Bank'}, # Activity Type {'doctype': 'Activity Type', 'activity_type': _('Planning')}, {'doctype': 'Activity Type', 'activity_type': _('Research')}, {'doctype': 'Activity Type', 'activity_type': _('Proposal Writing')}, {'doctype': 'Activity Type', 'activity_type': _('Execution')}, {'doctype': 'Activity Type', 'activity_type': _('Communication')}, {'doctype': "Item Attribute", "attribute_name": _("Size"), "item_attribute_values": [ {"attribute_value": _("Extra Small"), "abbr": "XS"}, {"attribute_value": _("Small"), "abbr": "S"}, {"attribute_value": _("Medium"), "abbr": "M"}, {"attribute_value": _("Large"), "abbr": "L"}, {"attribute_value": _("Extra Large"), "abbr": "XL"} ]}, {'doctype': "Item Attribute", "attribute_name": _("Colour"), "item_attribute_values": [ {"attribute_value": _("Red"), "abbr": "RED"}, {"attribute_value": _("Green"), "abbr": "GRE"}, {"attribute_value": _("Blue"), "abbr": "BLU"}, {"attribute_value": _("Black"), "abbr": "BLA"}, {"attribute_value": _("White"), "abbr": "WHI"} ]}, #Job Applicant Source {'doctype': 'Job Applicant Source', 'source_name': _('Website Listing')}, {'doctype': 'Job Applicant Source', 'source_name': _('Walk In')}, {'doctype': 'Job Applicant Source', 'source_name': _('Employee Referral')}, {'doctype': 'Job Applicant Source', 'source_name': _('Campaign')}, {'doctype': "Email Account", "email_id": "*****@*****.**", "append_to": "Opportunity"}, {'doctype': "Email Account", "email_id": "*****@*****.**", "append_to": "Issue"}, {'doctype': "Email Account", "email_id": "*****@*****.**", "append_to": "Job Applicant"}, {'doctype': "Party Type", "party_type": "Customer", "account_type": "Receivable"}, {'doctype': "Party Type", "party_type": "Supplier", "account_type": "Payable"}, {'doctype': "Party Type", "party_type": "Employee", "account_type": "Payable"}, {'doctype': "Party Type", "party_type": "Member", "account_type": "Receivable"}, {'doctype': "Party Type", "party_type": "Shareholder", "account_type": "Payable"}, {'doctype': "Party Type", "party_type": "Student", "account_type": "Receivable"}, {'doctype': "Opportunity Type", "name": "Hub"}, {'doctype': "Opportunity Type", "name": _("Sales")}, {'doctype': "Opportunity Type", "name": _("Support")}, {'doctype': "Opportunity Type", "name": _("Maintenance")}, {'doctype': "Project Type", "project_type": "Internal"}, {'doctype': "Project Type", "project_type": "External"}, {'doctype': "Project Type", "project_type": "Other"}, {"doctype": "Offer Term", "offer_term": _("Date of Joining")}, {"doctype": "Offer Term", "offer_term": _("Annual Salary")}, {"doctype": "Offer Term", "offer_term": _("Probationary Period")}, {"doctype": "Offer Term", "offer_term": _("Employee Benefits")}, {"doctype": "Offer Term", "offer_term": _("Working Hours")}, {"doctype": "Offer Term", "offer_term": _("Stock Options")}, {"doctype": "Offer Term", "offer_term": _("Department")}, {"doctype": "Offer Term", "offer_term": _("Job Description")}, {"doctype": "Offer Term", "offer_term": _("Responsibilities")}, {"doctype": "Offer Term", "offer_term": _("Leaves per Year")}, {"doctype": "Offer Term", "offer_term": _("Notice Period")}, {"doctype": "Offer Term", "offer_term": _("Incentives")}, {'doctype': "Print Heading", 'print_heading': _("Credit Note")}, {'doctype': "Print Heading", 'print_heading': _("Debit Note")}, # Assessment Group {'doctype': 'Assessment Group', 'assessment_group_name': _('All Assessment Groups'), 'is_group': 1, 'parent_assessment_group': ''}, # Share Management {"doctype": "Share Type", "title": _("Equity")}, {"doctype": "Share Type", "title": _("Preference")}, # Market Segments {"doctype": "Market Segment", "market_segment": _("Lower Income")}, {"doctype": "Market Segment", "market_segment": _("Middle Income")}, {"doctype": "Market Segment", "market_segment": _("Upper Income")}, # Sales Stages {"doctype": "Sales Stage", "stage_name": _("Prospecting")}, {"doctype": "Sales Stage", "stage_name": _("Qualification")}, {"doctype": "Sales Stage", "stage_name": _("Needs Analysis")}, {"doctype": "Sales Stage", "stage_name": _("Value Proposition")}, {"doctype": "Sales Stage", "stage_name": _("Identifying Decision Makers")}, {"doctype": "Sales Stage", "stage_name": _("Perception Analysis")}, {"doctype": "Sales Stage", "stage_name": _("Proposal/Price Quote")}, {"doctype": "Sales Stage", "stage_name": _("Negotiation/Review")} ] from epaas.setup.setup_wizard.data.industry_type import get_industry_types records += [{"doctype":"Industry Type", "industry": d} for d in get_industry_types()] # records += [{"doctype":"Operation", "operation": d} for d in get_operations()] records += [{'doctype': 'Lead Source', 'source_name': _(d)} for d in default_lead_sources] records += [{'doctype': 'Sales Partner Type', 'sales_partner_type': _(d)} for d in default_sales_partner_type] base_path = dataent.get_app_path("epaas", "hr", "doctype") response = dataent.read_file(os.path.join(base_path, "leave_application/leave_application_email_template.html")) records += [{'doctype': 'Email Template', 'name': _("Leave Approval Notification"), 'response': response,\ 'subject': _("Leave Approval Notification"), 'owner': dataent.session.user}] records += [{'doctype': 'Email Template', 'name': _("Leave Status Notification"), 'response': response,\ 'subject': _("Leave Status Notification"), 'owner': dataent.session.user}] base_path = dataent.get_app_path("epaas", "stock", "doctype") response = dataent.read_file(os.path.join(base_path, "delivery_trip/dispatch_notification_template.html")) records += [{'doctype': 'Email Template', 'name': _("Dispatch Notification"), 'response': response,\ 'subject': _("Your order is out for delivery!"), 'owner': dataent.session.user}] # Records for the Supplier Scorecard from epaas.buying.doctype.supplier_scorecard.supplier_scorecard import make_default_records make_default_records() make_records(records, True) set_more_defaults()
def get_js(path): js = dataent.read_file(path) if js: return render_include(js)