app_name = "sidrah_business" app_title = "Sidrah Business" app_publisher = "abdul" app_description = "Sidrah Business Management System" app_email = "abdult8@gmail.com" app_license = "mit" # Apps # ------------------ # required_apps = [] # Each item in the list will be shown as an app in the apps page # add_to_apps_screen = [ # { # "name": "sidrah_business", # "logo": "/assets/sidrah_business/logo.png", # "title": "Sidrah Business", # "route": "/sidrah_business", # "has_permission": "sidrah_business.api.permission.has_app_permission" # } # ] # Includes in # ------------------ # include js, css files in header of desk.html # app_include_css = "/assets/sidrah_business/css/sidrah_business.css" app_include_js = "/assets/sidrah_business/js/sidrah_soft_delete_desk.js" # include js, css files in header of web template # web_include_css = "/assets/sidrah_business/css/sidrah_business.css" # web_include_js = "/assets/sidrah_business/js/sidrah_business.js" # include custom scss in every website theme (without file extension ".scss") # website_theme_scss = "sidrah_business/public/scss/website" # include js, css files in header of web form # webform_include_js = {"doctype": "public/js/doctype.js"} # webform_include_css = {"doctype": "public/css/doctype.css"} # include js in page # page_js = {"page" : "public/js/file.js"} # include js in doctype views # doctype_js = {"doctype" : "public/js/doctype.js"} # doctype_list_js = {"doctype" : "public/js/doctype_list.js"} # doctype_tree_js = {"doctype" : "public/js/doctype_tree.js"} # doctype_calendar_js = {"doctype" : "public/js/doctype_calendar.js"} # Svg Icons # ------------------ # include app icons in desk # app_include_icons = "sidrah_business/public/icons.svg" # Home Pages # ---------- # application home page (will override Website Settings) # home_page = "login" # website user home page (by Role) # role_home_page = { # "Role": "home_page" # } # Generators # ---------- # automatically create page for each record of this doctype # website_generators = ["Web Page"] # Jinja # ---------- # add methods and filters to jinja environment # jinja = { # "methods": "sidrah_business.utils.jinja_methods", # "filters": "sidrah_business.utils.jinja_filters" # } # Installation # ------------ # before_install = "sidrah_business.install.before_install" # after_install = "sidrah_business.install.after_install" # Uninstallation # ------------ # before_uninstall = "sidrah_business.uninstall.before_uninstall" # after_uninstall = "sidrah_business.uninstall.after_uninstall" # Integration Setup # ------------------ # To set up dependencies/integrations with other apps # Name of the app being installed is passed as an argument # before_app_install = "sidrah_business.utils.before_app_install" # after_app_install = "sidrah_business.utils.after_app_install" # Integration Cleanup # ------------------- # To clean up dependencies/integrations with other apps # Name of the app being uninstalled is passed as an argument # before_app_uninstall = "sidrah_business.utils.before_app_uninstall" # after_app_uninstall = "sidrah_business.utils.after_app_uninstall" # Desk Notifications # ------------------ # See frappe.core.notifications.get_notification_config # notification_config = "sidrah_business.notifications.get_notification_config" # Permissions # ----------- # Permissions evaluated in scripted ways permission_query_conditions = { "SB Incident": "sidrah_business.soft_delete.sb_incident_condition", "SB Idea": "sidrah_business.soft_delete.sb_idea_condition", "SB Order": "sidrah_business.soft_delete.sb_order_condition", "SB Process": "sidrah_business.soft_delete.sb_process_condition", "SB Organization": "sidrah_business.soft_delete.sb_organization_condition", "SB Cycle": "sidrah_business.soft_delete.sb_cycle_condition", "SB KPI Input": "sidrah_business.soft_delete.sb_kpi_input_condition", "Managements": "sidrah_business.soft_delete.managements_condition", "Department": "sidrah_business.soft_delete.department_condition", "Branch": "sidrah_business.soft_delete.branch_condition", "SB Delegation": "sidrah_business.soft_delete.sb_delegation_condition", "SB Group Company": "sidrah_business.soft_delete.sb_group_company_condition", } after_migrate = [ "sidrah_business.soft_delete.setup_soft_delete_custom_fields", "sidrah_business.setup_multitenancy.setup_multitenancy_schema", ] # Document Events # --------------- # Hook on document methods and events # Escalation must always reflect the stored cycle logs — rows can be added or # edited straight on the form (not only via the workflow API / nightly engine), # so every save re-derives escalation_level from the logs. doc_events = { "*": { "before_insert": "sidrah_business.soft_delete.auto_sync_status_from_workflow", "before_delete": "sidrah_business.soft_delete.prevent_delete", "before_save": "sidrah_business.soft_delete.auto_sync_status_from_workflow", }, "SB Process": { "before_save": "sidrah_business.tasks.recompute_process_escalation", }, "SB Order": { "before_save": "sidrah_business.tasks.recompute_order_escalation", }, "User": { "validate": "sidrah_business.api.validate_user_creation_permissions", "on_update": "sidrah_business.setup_multitenancy.sync_user_group_company_permission", }, } # Scheduled Tasks # --------------- scheduler_events = { "daily": [ "sidrah_business.tasks.check_overdue_incidents", "sidrah_business.tasks.run_cycle_engine", ], } fixtures = [ "Workflow", "Workflow State", "Workflow Action Master", "Custom DocPerm", {"doctype": "Custom Field", "filters": [ [ "module", "=", "Sidrah Business" ] ]}, { "doctype": "Role", "filters": [ ["creation", ">", "2024-06-12"] ] }, {"doctype": "Workspace", "filters": [ [ "module", "=", "Sidrah Business" ] ]}, {"doctype": "Server Script", "filters": [["module","=","Sidrah Business"]]}, {"doctype": "Notification", "filters": [["module","=","Sidrah Business"]]}, {"doctype": "Report", "filters": [["module","=","Sidrah Business"]]}, ] # Testing # ------- # before_tests = "sidrah_business.install.before_tests" # Overriding Methods # ------------------------------ # # override_whitelisted_methods = { # "frappe.desk.doctype.event.event.get_events": "sidrah_business.event.get_events" # } # # each overriding function accepts a `data` argument; # generated from the base implementation of the doctype dashboard, # along with any modifications made in other Frappe apps # override_doctype_dashboards = { # "Task": "sidrah_business.task.get_dashboard_data" # } # exempt linked doctypes from being automatically cancelled # # auto_cancel_exempted_doctypes = ["Auto Repeat"] # Ignore links to specified DocTypes when deleting documents # ----------------------------------------------------------- # ignore_links_on_delete = ["Communication", "ToDo"] # Request Events # ---------------- # before_request = ["sidrah_business.utils.before_request"] # after_request = ["sidrah_business.utils.after_request"] # Job Events # ---------- # before_job = ["sidrah_business.utils.before_job"] # after_job = ["sidrah_business.utils.after_job"] # User Data Protection # -------------------- # user_data_fields = [ # { # "doctype": "{doctype_1}", # "filter_by": "{filter_by}", # "redact_fields": ["{field_1}", "{field_2}"], # "partial": 1, # }, # { # "doctype": "{doctype_2}", # "filter_by": "{filter_by}", # "partial": 1, # }, # { # "doctype": "{doctype_3}", # "strict": False, # }, # { # "doctype": "{doctype_4}" # } # ] # Authentication and authorization # -------------------------------- # auth_hooks = [ # "sidrah_business.auth.validate" # ] # Automatically update python controller files with type annotations for this app. # export_python_type_annotations = True # default_log_clearing_doctypes = { # "Logging DocType Name": 30 # days to retain logs # } # Translation # ------------ # List of apps whose translatable strings should be excluded from this app's translations. # ignore_translatable_strings_from = []