Hello,how to add custom app to sidebar dropdown? i dont know what it called, but why my custom app is not listed on user default app?
Hello @whytrno, it is called app screen
Add the code below before # Includes in <head>
in hooks file
app_home = "/app/workspace of that custom app"
add_to_apps_screen = [
{
"name": "app_name",
"logo": "/assets/custom_app/logo_name.png",
"title": "app title",
"route": "/app/workspace of that custom app",
}
]
I already uncomment this code on my custom app (apps/hr_management/hr_management/hooks.py)
but still not added on sidebar dropdown, am i doing wrong?
i already doing cache clear and migrate too
Did you do restart
bench
Yep i restarted bench, clear cache and migrating buat still not showing on sidebar dropdown
But when i try to access host/apps i got this
when i click hr management, got 404
Try to uncommit app_home
and also add the app_logo_url
above app_home
app_home
is the same as route
in add_to_apps_screen
app_logo_url = '/assets/hr_managment/logo.png'
This is a recent addition, and is currently missing from the documentation. Hopefully the documentation will be updated as the new frappe v16 gets released.
This should work, try to build frappe
and your app also
Still doesnt work, i dont know why
this is full code on apps/hr_management/hr_management/hooks.py
app_name = "hr_management"
app_title = "Hr Management"
app_publisher = "Wahyu Triono"
app_description = "HR Management"
app_email = "whytrno@gmail.com"
app_license = "mit"
# Apps
# ------------------
# required_apps = []
# Each item in the list will be shown as an app in the apps page
app_home = "/app/hr_management"
app_logo_url = "/assets/hr_management/logo.png"
add_to_apps_screen = [
{
"name": "hr_management",
"logo": "/assets/hr_management/logo.png",
"title": "Hr Management",
"route": "/app/hr_management",
# "has_permission": "hr_management.api.permission.has_app_permission"
}
]
# Includes in <head>
# ------------------
# include js, css files in header of desk.html
# app_include_css = "/assets/hr_management/css/hr_management.css"
# app_include_js = "/assets/hr_management/js/hr_management.js"
# include js, css files in header of web template
# web_include_css = "/assets/hr_management/css/hr_management.css"
# web_include_js = "/assets/hr_management/js/hr_management.js"
# include custom scss in every website theme (without file extension ".scss")
# website_theme_scss = "hr_management/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 = "hr_management/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": "hr_management.utils.jinja_methods",
# "filters": "hr_management.utils.jinja_filters"
# }
# Installation
# ------------
# before_install = "hr_management.install.before_install"
# after_install = "hr_management.install.after_install"
# Uninstallation
# ------------
# before_uninstall = "hr_management.uninstall.before_uninstall"
# after_uninstall = "hr_management.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 = "hr_management.utils.before_app_install"
# after_app_install = "hr_management.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 = "hr_management.utils.before_app_uninstall"
# after_app_uninstall = "hr_management.utils.after_app_uninstall"
# Desk Notifications
# ------------------
# See frappe.core.notifications.get_notification_config
# notification_config = "hr_management.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_update": "method",
# "on_cancel": "method",
# "on_trash": "method"
# }
# }
# Scheduled Tasks
# ---------------
# scheduler_events = {
# "all": [
# "hr_management.tasks.all"
# ],
# "daily": [
# "hr_management.tasks.daily"
# ],
# "hourly": [
# "hr_management.tasks.hourly"
# ],
# "weekly": [
# "hr_management.tasks.weekly"
# ],
# "monthly": [
# "hr_management.tasks.monthly"
# ],
# }
# Testing
# -------
# before_tests = "hr_management.install.before_tests"
# Overriding Methods
# ------------------------------
#
# override_whitelisted_methods = {
# "frappe.desk.doctype.event.event.get_events": "hr_management.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": "hr_management.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 = ["hr_management.utils.before_request"]
# after_request = ["hr_management.utils.after_request"]
# Job Events
# ----------
# before_job = ["hr_management.utils.before_job"]
# after_job = ["hr_management.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 = [
# "hr_management.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
# }
should i edit another file too?
This is okay, and it should work, what version of frappe are you using, as this is now at develop branch.
try bench update
Umm sorry for bother u, but its still not working