from . import commands

app_name = "custom_ui"
app_title = "Custom UI"
app_publisher = "Shiloh Code LLC"
app_description = "Custom UI"
app_email = "casey@shilohcode.com"
app_license = "mit"

after_install = "custom_ui.install.after_install"
after_migrate = "custom_ui.install.after_migrate"
after_uninstall = "custom_ui.install.after_uninstall"
# on_session_creation = "custom_ui.utils.on_login_redirect"
# on_login = "custom_ui.utils.on_login_redirect"
page_js = {
    "custom_ui": "custom_ui/custom_ui/page/custom_ui/custom_ui.js"
}

# app_include_js = ["/assets/custom_ui/dist/assets/main.js"]

add_to_apps_screen = [
    {
        "name": "custom_ui",
        "logo": "/assets/custom_ui/logo.png",
        "title": "Custom UI",
        "route": "/app/custom_ui",
        # "has_permission": "custom_ui.api.permission.has_app_permission"
    }
]

requires = [
    "holidays==0.89"
]
# Apps
# ------------------

# required_apps = []

# Each item in the list will be shown as an app in the apps page
# add_to_apps_screen = [
#   {
#       "name": "custom_ui",
#       "logo": "/assets/custom_ui/logo.png",
#       "title": "Custom Ui",
#       "route": "/custom_ui",
#       "has_permission": "custom_ui.api.permission.has_app_permission"
#   }
# ]

# Includes in <head>
# ------------------

# include js, css files in header of desk.html
# app_include_css = "/assets/custom_ui/css/custom_ui.css"
# app_include_js = "/assets/custom_ui/js/custom_ui.js"

# include js, css files in header of web template
# web_include_css = "/assets/custom_ui/css/custom_ui.css"
# web_include_js = "/assets/custom_ui/js/custom_ui.js"

# include custom scss in every website theme (without file extension ".scss")
# website_theme_scss = "custom_ui/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 = "custom_ui/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": "custom_ui.utils.jinja_methods",
#   "filters": "custom_ui.utils.jinja_filters"
# }

# Installation
# ------------

# before_install = "custom_ui.install.before_install"
# after_install = "custom_ui.install.after_install"

# Uninstallation
# ------------

# before_uninstall = "custom_ui.uninstall.before_uninstall"
# after_uninstall = "custom_ui.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 = "custom_ui.utils.before_app_install"
# after_app_install = "custom_ui.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 = "custom_ui.utils.before_app_uninstall"
# after_app_uninstall = "custom_ui.utils.after_app_uninstall"

# Desk Notifications
# ------------------
# See frappe.core.notifications.get_notification_config

# notification_config = "custom_ui.notifications.get_notification_config"

# Permissions
# -----------
# Permissions evaluated in scripted ways

# permission_query_conditions = {
#   "Event": "frappe.desk.doctype.event.event.get_permission_query_conditions",
# }
#
# has_permission = {
#   "Event": "frappe.desk.doctype.event.event.has_permission",
# }

# DocType Class
# ---------------
# Override standard doctype classes

# override_doctype_class = {
#   "ToDo": "custom_app.overrides.CustomToDo"
# }

# Document Events
# ---------------
# Hook on document methods and events

doc_events = {
    "On-Site Meeting": {
        "after_insert": "custom_ui.events.onsite_meeting.after_insert",
        "before_save": "custom_ui.events.onsite_meeting.before_save",
        "before_insert": "custom_ui.events.onsite_meeting.before_insert"
    },
    "Address": {
        "before_insert": "custom_ui.events.address.before_insert"
    },
    "Quotation": {
        "before_insert": "custom_ui.events.estimate.before_insert",
        "after_insert": "custom_ui.events.estimate.after_insert",
        # "before_save": "custom_ui.events.estimate.before_save",
        "before_submit": "custom_ui.events.estimate.before_submit",
        "on_update_after_submit": "custom_ui.events.estimate.on_update_after_submit"
    },
    "Sales Order": {
        "before_save": "custom_ui.events.sales_order.before_save",
        "before_insert": "custom_ui.events.sales_order.before_insert",
        "after_insert": "custom_ui.events.sales_order.after_insert",
        "on_submit": "custom_ui.events.sales_order.on_submit",
        "on_update_after_submit": "custom_ui.events.sales_order.on_update_after_submit"
    },
    "Project": {
        "before_insert": "custom_ui.events.jobs.before_insert",
        "after_insert": "custom_ui.events.jobs.after_insert",
        "before_save": "custom_ui.events.jobs.before_save",
        "on_update": "custom_ui.events.jobs.after_save",
        "after_save": "custom_ui.events.jobs.after_save"
    },
    "Task": {
        "before_insert": "custom_ui.events.task.before_insert",
        "after_insert": "custom_ui.events.task.after_insert",
        "before_save": "custom_ui.events.task.before_save"
    },
    "Bid Meeting Note Form": {
        "after_insert": "custom_ui.events.general.attach_bid_note_form_to_project_template"
    },
    "Service Address 2": {
        "before_save": "custom_ui.events.service_appointment.before_save",
        "after_insert": "custom_ui.events.service_appointment.after_insert",
        "on_update": "custom_ui.events.service_appointment.on_update"
    },
    "Payment Entry": {
        "on_submit": "custom_ui.events.payments.on_submit"
    },
    "Sales Invoice": {
        "on_submit": "custom_ui.events.sales_invoice.on_submit"
    }
}

fixtures = [
    {
        "dt": "Custom Field",
        "filters": [["module", "in", ["Custom UI"]]]
    },
    {
        "dt": "Email Template",
        "filters": [
            ["name", "in", ["Customer Invoice"]]
        ]
    },
    {
        "dt": "Task",
        "filters": [["status", "=", "Template"]]
    },
    {
        "dt": "Project Template"
    },
    {"dt": "Property Setter"},
    {"dt": "Client Script"},
    {"dt": "Server Script"},
    {"dt": "Letter Head"},
    {"dt": "Payment Term"},
    {"dt": "Payment Terms Template"},
    {"dt": "Territory"},
]






# Scheduled Tasks
# ---------------

scheduler_events = {
#   "all": [
#       "custom_ui.tasks.all"
#   ],
  "daily": [
      "custom_ui.scheduled_tasks.daily_task"
  ],
#   "hourly": [
#       "custom_ui.tasks.hourly"
#   ],
#   "weekly": [
#       "custom_ui.tasks.weekly"
#   ],
#   "monthly": [
#       "custom_ui.tasks.monthly"
#   ],
}

# Testing
# -------

# before_tests = "custom_ui.install.before_tests"

# Overriding Methods
# ------------------------------
#
# override_whitelisted_methods = {
#   "frappe.desk.doctype.event.event.get_events": "custom_ui.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": "custom_ui.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 = ["custom_ui.utils.before_request"]
# after_request = ["custom_ui.utils.after_request"]

# Job Events
# ----------
# before_job = ["custom_ui.utils.before_job"]
# after_job = ["custom_ui.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 = [
#   "custom_ui.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
# }

