menu.py 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. #import from webservice_running.menu WEBSERVICE_RUNNING_MENU
  2. #TODO - user profile connected to platform
  3. #ALL_MY = ['tickets', 'main']
  4. ALL_ALL = ['service_categories', 'service_tariffs', 'support_chat', 'job_request_metaservice']
  5. #Same idea as vvv, maybe some custom pages for example for reports later
  6. METASERVICE_ADMIN_ALL = ['partners', 'orders', 'access_control', 'resources', 'providers']
  7. #note: delete 'delete' operation from urlpatterns! Question - should be edit and change status apart or not?
  8. METASERVICE_ADMIN_OPERATIONS = ['service_category/add', 'service_category/edit', 'service_category/change_status']
  9. #TODO - page to add money to client balance manually based on manual b2b payments! And add logic connected to platform if possible later. 2 balances - platform and manual local.
  10. #Add pages similar to platform's for payment reports for manual payments.
  11. METASERVICE_SUPERVISOR_ALL = ['partners', 'resources', 'providers', 'orders', 'access_control']
  12. METASERVICE_SUPPORT_ALL = ['partners', 'resources', 'providers', 'orders', 'orders/edit']
  13. METASERVICE_TECHSUPPORT_ALL = ['partners', 'resources', 'providers']
  14. #LOCAL - same idea except access_control that is only in open by default
  15. PARTNER_ADMIN_MY = ['resources', 'providers', 'access_control']
  16. PARTNER_ADMIN_OPERATIONS = ['service_tariff/add', 'service_tariff/edit', 'service_tariff/change_status']
  17. PARTNER_SUPERVISOR_MY = ['resources', 'providers', 'access_control']
  18. PARTNER_SUPPORT_MY = ['resources', 'providers', 'orders', 'orders/edit']
  19. PARTNER_TECHSUPPORT_MY = ['resources', 'providers']
  20. #LOCAL - same idea +local
  21. #CHECK Documentation - it seems provider should be able to add service_tariffs that he want to appy to himself based on partner's restrictions
  22. #order change_status or edit - based on handlers logic. Provider should be able to tell system he wants to process the order or customize it
  23. PROVIDER_MY_OPERATIONS = ['resource/add', 'resource/edit', 'resource', 'order/change_status']
  24. PROVIDER_MY = ['resources', 'orders']
  25. #on partners page provider might make a connection with another partner - does that mean PARTNERS list should be in ALL category?
  26. CLIENT_MY = ['order', 'orders']
  27. CLIENT_MY_OPERATIONS = ['order/edit', 'order/add']
  28. #TODO should be something for transactions
  29. ######################
  30. # WEBSERVICE_RUNNING #
  31. ######################
  32. WSR_ALL = ['serivce_tariff_local']
  33. #TODO - providers+resources on map
  34. WSR_CLIENT_MY = ['order_local', 'orders_local', 'frequent_address', 'favorite_contacts', 'preferred_providers']
  35. WSR_MENU_CLIENT_MY_OPERATIONS = ['order_local/add']
  36. WSR_NOT_MENU_CLIENT_MY_OPERATIONS = ['order_local/edit', 'frequent_address/add', 'frequent_address/edit', 'frequent_address/del', 'favorite_contacts/add', 'favorite_contacts/edit', 'favorite_contacts/del', 'preferred_providers/add', 'preferred_providers/edit', 'preferred_providers_del']
  37. #Idea - Menu categories
  38. #GLOBAL_MENU - same for all users, info on forms may vary according to roles, but view is one for all
  39. #MENU_GLOBAL = ['service_categories', 'support_chat', 'job_request_metaservice']
  40. MENU_GLOBAL = ['tickets:ticket_list_list', 'sharix_admin:service_categories', 'sharix_admin:support_chat', 'sharix_admin:job_request_metaservice']
  41. #MENU_GLOBAL = ['tickets', 'service_categories', 'support_chat', 'job_request_metaservice']
  42. MENU_OPEN = ['sharix_admin:main', 'sharix_admin:service_tariffs']
  43. #MENU_OPEN = ['main', 'service_tariffs']
  44. #Thus menu points for all staff roles is the same
  45. STAFF_METASERVICE_MENU_GLOBAL = ['sharix_admin:access_control', 'sharix_admin:partners']
  46. #STAFF_METASERVICE_MENU_GLOBAL = ['access_control', 'partners']
  47. STAFF_METASERVICE_MENU_OPEN = ['sharix_admin:resources', 'sharix_admin:providers', 'sharix_admin:orders']
  48. #STAFF_METASERVICE_MENU_OPEN = ['resources', 'providers', 'orders']
  49. #Another set of pages that lists only MY PARTNER objects - needed for the situation for users with multiple roles. For each Partner connection - same set of pages, maybe it's good idea to hide it
  50. STAFF_MY_PARTNER_MENU_GLOBAL = ['sharix_admin:access_control', 'sharix_admin:partners']
  51. #STAFF_MY_PARTNER_MENU_GLOBAL = ['access_control', 'partners']
  52. STAFF_MY_PARTNER_MENU_OPEN = ['sharix_admin:resources', 'sharix_admin:providers', 'sharix_admin:orders']
  53. #STAFF_MY_PARTNER_MENU_OPEN = ['resources', 'providers', 'orders']
  54. STAFF_MY_PROVIDER_MENU_OPEN = ['sharix_admin:resources', 'sharix_admin:orders']
  55. #STAFF_MY_PROVIDER_MENU_OPEN = ['resources', 'orders']
  56. CLIENT_MY_MENU_GLOBAL = ['sharix_admin:transactions']
  57. #CLIENT_MY_MENU_GLOBAL = ['transactions']
  58. CLIENT_MY_MENU_OPEN = ['sharix_admin:orders']
  59. #CLIENT_MY_MENU_OPEN = ['orders']
  60. #WEBSERVICE_RUNNING_MENU
  61. MENU_GLOBAL_CUSTOMIZABLE = ['main_local', 'service_tariffs_local']
  62. STAFF_METASERVICE_MENU_CUSTOMIZABLE = ['resources_local', 'providers_local', 'orders_local' ]
  63. STAFF_MY_PARTNER_MENU_CUSTOMIZABLE = ['resources_local', 'providers_local', 'orders_local']
  64. STAFF_MY_PROVIDER_MENU_CUSTOMIZABLE = ['resources_local', 'orders_local']
  65. CLIENT_MY_MENU_CUSTOMIZABLE = ['order_local', 'orders_local']
  66. #CUSTOM PAGES
  67. WSR_EXTENDED_MY = ['frequent_address', 'frequent_contacts', 'preferred_providers']
  68. WSR_EXTENDED = []
  69. #TODO - providers+resources on map (NOT MY, GLOBAL or MY meant by geolocation+preferences)
  70. #3 variants to show customizable pages, it depends on settings of a project ALL (PURE), ALL + CUSTOMIZABLE (REPLACE) replaced, ALL + CUSTOMIZABLE added (APPEND)
  71. #function to check if menu should be visible:
  72. # function that get roles by userid
  73. STAFF_METASERVICE_ROLES = ['METASERVICE_ADMIN', 'METASERVICE_SUPERVISOR', 'METASERVICE_SUPPORT', 'METASERVICE_TECHSUPPORT']
  74. STAFF_PARTNER_ROLES = ['PARTNER_ADMIN', 'PARTNER_SUPERVISOR', 'PARTNER_SUPPORT', 'PARTNER_TECHSUPPORT', 'PROVIDER']
  75. CLIENT_ROLES = ['CLIENT']
  76. #if user role in list provided and page name in a connected list then menu item is visible
  77. #so we have to know user_id and page type and MENU_ALG algorythm
  78. MENU_ALG = 'PURE'
  79. global MENU_VISIBLE_PAGES
  80. MENU_VISIBLE_PAGES = []
  81. if MENU_ALG == 'PURE':
  82. MENU_VISIBLE_PAGES = []
  83. MENU_VISIBLE_PAGES.extend(MENU_GLOBAL)
  84. MENU_VISIBLE_PAGES.extend(MENU_OPEN)
  85. if MENU_ALG == 'REPLACE':
  86. MENU_VISIBLE_PAGES = []
  87. MENU_VISIBLE_PAGES.extend(MENU_GLOBAL)
  88. MENU_VISIBLE_PAGES.extend(MENU_GLOBAL_CUSTOMIZABLE)
  89. if MENU_ALG == 'APPEND':
  90. MENU_VISIBLE_PAGES = []
  91. MENU_VISIBLE_PAGES.extend(MENU_GLOBAL)
  92. MENU_VISIBLE_PAGES.extend(MENU_GLOBAL_CUSTOMIZABLE)
  93. MENU_VISIBLE_PAGES.extend(MENU_OPEN)
  94. #TODO - change menu template to FOR loop with parameters - name, link, icon
  95. # menu structure should base on config file with menu structure as settings
  96. #MENU_SCHEME_OPEN = [
  97. # 'main',
  98. # 'service_categories',
  99. # 'service_tariffs',
  100. # 'partners',
  101. # 'resources',
  102. # 'providers',
  103. # 'orders',
  104. # 'access_control',
  105. # 'tickets',
  106. # 'support_chat',
  107. # 'job_request_metaservice',
  108. # ]
  109. #TODO - move to WSR! And add MENU_ALG setting to project settings!
  110. #MENU_SCHEME_WSR = [
  111. # 'main_local',
  112. # 'service_categories',
  113. # 'partners',
  114. # 'resources_local',
  115. # 'providers_local',
  116. # 'orders_local',
  117. # 'access_control',
  118. # 'tickets',
  119. # 'support_chat',
  120. # 'job_request_metaservice',
  121. # ]
  122. def gen_avaliable_pages(roles):
  123. #any(x in role for x in STAFF_METASERVICE_ROLES):
  124. global MENU_VISIBLE_PAGES
  125. if any(x in roles for x in STAFF_METASERVICE_ROLES):
  126. if MENU_ALG == 'PURE':
  127. MENU_VISIBLE_PAGES.extend(STAFF_METASERVICE_MENU_GLOBAL)
  128. MENU_VISIBLE_PAGES.extend(STAFF_METASERVICE_MENU_OPEN)
  129. if MENU_ALG == 'REPLACE':
  130. MENU_VISIBLE_PAGES.extend(STAFF_METASERVICE_MENU_GLOBAL)
  131. MENU_VISIBLE_PAGES.extend(STAFF_METASERVICE_MENU_CUSTOMIZABLE)
  132. if MENU_ALG == 'APPEND':
  133. MENU_VISIBLE_PAGES.extend(STAFF_METASERVICE_MENU_GLOBAL)
  134. MENU_VISIBLE_PAGES.extend(STAFF_METASERVICE_MENU_CUSTOMIZABLE)
  135. MENU_VISIBLE_PAGES.extend(STAFF_METASERVICE_MENU_OPEN)
  136. if any(x in roles for x in STAFF_PARTNER_ROLES):
  137. #if role in STAFF_PARTNER_ROLES:
  138. if MENU_ALG == 'PURE':
  139. MENU_VISIBLE_PAGES.extend(STAFF_MY_PARTNER_MENU_GLOBAL)
  140. MENU_VISIBLE_PAGES.extend(STAFF_MY_PARTNER_MENU_OPEN)
  141. MENU_VISIBLE_PAGES.extend(STAFF_MY_PROVIDER_MENU_OPEN)
  142. if MENU_ALG == 'REPLACE':
  143. MENU_VISIBLE_PAGES.extend(STAFF_MY_PARTNER_MENU_GLOBAL)
  144. MENU_VISIBLE_PAGES.extend(STAFF_MY_PARTNER_MENU_CUSTOMIZABLE)
  145. MENU_VISIBLE_PAGES.extend(STAFF_MY_PROVIDER_MENU_CUSTOMIZABLE)
  146. if MENU_ALG == 'APPEND':
  147. MENU_VISIBLE_PAGES.extend(STAFF_MY_PARTNER_MENU_GLOBAL)
  148. MENU_VISIBLE_PAGES.extend(STAFF_MY_PARTNER_MENU_CUSTOMIZABLE)
  149. MENU_VISIBLE_PAGES.extend(STAFF_MY_PARTNER_MENU_OPEN)
  150. MENU_VISIBLE_PAGES.extend(STAFF_MY_PROVIDER_MENU_CUSTOMIZABLE)
  151. MENU_VISIBLE_PAGES.extend(STAFF_MY_PROVIDER_MENU_OPEN)
  152. if any(x in roles for x in CLIENT_ROLES):
  153. #if role in CLIENT_ROLES:
  154. if MENU_ALG == 'PURE':
  155. MENU_VISIBLE_PAGES.extend(CLIENT_MY_MENU_GLOBAL)
  156. MENU_VISIBLE_PAGES.extend(CLIENT_MY_MENU_OPEN)
  157. if MENU_ALG == 'REPLACE':
  158. MENU_VISIBLE_PAGES.extend(CLIENT_MY_MENU_GLOBAL)
  159. MENU_VISIBLE_PAGES.extend(CLIENT_MY_MENU_CUSTOMIZABLE)
  160. MENU_VISIBLE_PAGES.extend(WSR_EXTENDED)
  161. MENU_VISIBLE_PAGES.extend(WSR_EXTENDED_MY)
  162. if MENU_ALG == 'APPEND':
  163. MENU_VISIBLE_PAGES.extend(CLIENT_MY_MENU_GLOBAL)
  164. MENU_VISIBLE_PAGES.extend(CLIENT_MY_MENU_CUSTOMIZABLE)
  165. MENU_VISIBLE_PAGES.extend(CLIENT_MY_MENU_OPEN)
  166. MENU_VISIBLE_PAGES.extend(WSR_EXTENDED)
  167. MENU_VISIBLE_PAGES.extend(WSR_EXTENDED_MY)
  168. #MAYBE REMOVE DUPLICATES?
  169. MENU_VISIBLE_PAGES = list(dict.fromkeys(MENU_VISIBLE_PAGES))
  170. return MENU_VISIBLE_PAGES