@frappe.whitelist()
def get_app_list():
 out = {}
 installed = frappe.get_installed_apps()
 for app in frappe.get_all_apps(True):
  app_hooks = frappe.get_hooks(app_name=app)
  if ((app not in installed) and app_hooks.get(u'hide_in_installer')):
   continue
  out[app] = {}
  for key in (u'app_name', u'app_title', u'app_description', u'app_icon', u'app_publisher', u'app_version', u'app_url', u'app_color'):
   val = (app_hooks.get(key) or [])
   out[app][key] = (val[0] if len(val) else u'')
  if (app in installed):
   out[app][u'installed'] = 1
 for app_from_list in get_app_listing().values():
  if (app_from_list.app_name in out):
   out[app_from_list.app_name].update(app_from_list)
  elif (not frappe.conf.disallow_app_listing):
   out[app_from_list.app_name] = app_from_list
 return out

@ frappe . whitelist ( ) def get_app_list ( ) : out = { } installed = frappe . get_installed_apps ( ) for app in frappe . get_all_apps ( True ) : app_hooks = frappe . get_hooks ( app_name = app ) if ( ( app not in installed ) and app_hooks . get ( u'hide_in_installer' ) ) : continue out [ app ] = { } for key in ( u'app_name' , u'app_title' , u'app_description' , u'app_icon' , u'app_publisher' , u'app_version' , u'app_url' , u'app_color' ) : val = ( app_hooks . get ( key ) or [ ] ) out [ app ] [ key ] = ( val [ 0 ] if len ( val ) else u'' ) if ( app in installed ) : out [ app ] [ u'installed' ] = 1 for app_from_list in get_app_listing ( ) . values ( ) : if ( app_from_list . app_name in out ) : out [ app_from_list . app_name ] . update ( app_from_list ) elif ( not frappe . conf . disallow_app_listing ) : out [ app_from_list . app_name ] = app_from_list return out
get list of all apps with properties .