123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- #import from webservice_running.menu WEBSERVICE_RUNNING_MENU
- #TODO - user profile connected to platform
- #ALL_MY = ['tickets', 'main']
- ALL_ALL = ['service_categories', 'service_tariffs', 'support_chat', 'job_request_metaservice']
- #Same idea as vvv, maybe some custom pages for example for reports later
- METASERVICE_ADMIN_ALL = ['partners', 'orders', 'access_control', 'resources', 'providers']
- #note: delete 'delete' operation from urlpatterns! Question - should be edit and change status apart or not?
- METASERVICE_ADMIN_OPERATIONS = ['service_category/add', 'service_category/edit', 'service_category/change_status']
- #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.
- #Add pages similar to platform's for payment reports for manual payments.
- METASERVICE_SUPERVISOR_ALL = ['partners', 'resources', 'providers', 'orders', 'access_control']
- METASERVICE_SUPPORT_ALL = ['partners', 'resources', 'providers', 'orders', 'orders/edit']
- METASERVICE_TECHSUPPORT_ALL = ['partners', 'resources', 'providers']
- #LOCAL - same idea except access_control that is only in open by default
- PARTNER_ADMIN_MY = ['resources', 'providers', 'access_control']
- PARTNER_ADMIN_OPERATIONS = ['service_tariff/add', 'service_tariff/edit', 'service_tariff/change_status']
- PARTNER_SUPERVISOR_MY = ['resources', 'providers', 'access_control']
- PARTNER_SUPPORT_MY = ['resources', 'providers', 'orders', 'orders/edit']
- PARTNER_TECHSUPPORT_MY = ['resources', 'providers']
- #LOCAL - same idea +local
- #CHECK Documentation - it seems provider should be able to add service_tariffs that he want to appy to himself based on partner's restrictions
- #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
- PROVIDER_MY_OPERATIONS = ['resource/add', 'resource/edit', 'resource', 'order/change_status']
- PROVIDER_MY = ['resources', 'orders']
- #on partners page provider might make a connection with another partner - does that mean PARTNERS list should be in ALL category?
- CLIENT_MY = ['order', 'orders']
- CLIENT_MY_OPERATIONS = ['order/edit', 'order/add']
- #TODO should be something for transactions
- ######################
- # WEBSERVICE_RUNNING #
- ######################
- WSR_ALL = ['serivce_tariff_local']
- #TODO - providers+resources on map
- WSR_CLIENT_MY = ['order_local', 'orders_local', 'frequent_address', 'favorite_contacts', 'preferred_providers']
- WSR_MENU_CLIENT_MY_OPERATIONS = ['order_local/add']
- 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']
- #Idea - Menu categories
- #GLOBAL_MENU - same for all users, info on forms may vary according to roles, but view is one for all
- #MENU_GLOBAL = ['service_categories', 'support_chat', 'job_request_metaservice']
- MENU_GLOBAL = ['tickets:ticket_list_list', 'sharix_admin:service_categories', 'sharix_admin:support_chat', 'sharix_admin:job_request_metaservice']
- #MENU_GLOBAL = ['tickets', 'service_categories', 'support_chat', 'job_request_metaservice']
- MENU_OPEN = ['sharix_admin:main', 'sharix_admin:service_tariffs']
- #MENU_OPEN = ['main', 'service_tariffs']
- #Thus menu points for all staff roles is the same
- STAFF_METASERVICE_MENU_GLOBAL = ['sharix_admin:access_control', 'sharix_admin:partners']
- #STAFF_METASERVICE_MENU_GLOBAL = ['access_control', 'partners']
- STAFF_METASERVICE_MENU_OPEN = ['sharix_admin:resources', 'sharix_admin:providers', 'sharix_admin:orders']
- #STAFF_METASERVICE_MENU_OPEN = ['resources', 'providers', 'orders']
- #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
- STAFF_MY_PARTNER_MENU_GLOBAL = ['sharix_admin:access_control', 'sharix_admin:partners']
- #STAFF_MY_PARTNER_MENU_GLOBAL = ['access_control', 'partners']
- STAFF_MY_PARTNER_MENU_OPEN = ['sharix_admin:resources', 'sharix_admin:providers', 'sharix_admin:orders']
- #STAFF_MY_PARTNER_MENU_OPEN = ['resources', 'providers', 'orders']
- STAFF_MY_PROVIDER_MENU_OPEN = ['sharix_admin:resources', 'sharix_admin:orders']
- #STAFF_MY_PROVIDER_MENU_OPEN = ['resources', 'orders']
- CLIENT_MY_MENU_GLOBAL = ['sharix_admin:transactions']
- #CLIENT_MY_MENU_GLOBAL = ['transactions']
- CLIENT_MY_MENU_OPEN = ['sharix_admin:orders']
- #CLIENT_MY_MENU_OPEN = ['orders']
- #WEBSERVICE_RUNNING_MENU
- MENU_GLOBAL_CUSTOMIZABLE = ['main_local', 'service_tariffs_local']
- STAFF_METASERVICE_MENU_CUSTOMIZABLE = ['resources_local', 'providers_local', 'orders_local' ]
- STAFF_MY_PARTNER_MENU_CUSTOMIZABLE = ['resources_local', 'providers_local', 'orders_local']
- STAFF_MY_PROVIDER_MENU_CUSTOMIZABLE = ['resources_local', 'orders_local']
- CLIENT_MY_MENU_CUSTOMIZABLE = ['order_local', 'orders_local']
- #CUSTOM PAGES
- WSR_EXTENDED_MY = ['frequent_address', 'frequent_contacts', 'preferred_providers']
- WSR_EXTENDED = []
- #TODO - providers+resources on map (NOT MY, GLOBAL or MY meant by geolocation+preferences)
- #3 variants to show customizable pages, it depends on settings of a project ALL (PURE), ALL + CUSTOMIZABLE (REPLACE) replaced, ALL + CUSTOMIZABLE added (APPEND)
- #function to check if menu should be visible:
- # function that get roles by userid
- STAFF_METASERVICE_ROLES = ['METASERVICE_ADMIN', 'METASERVICE_SUPERVISOR', 'METASERVICE_SUPPORT', 'METASERVICE_TECHSUPPORT']
- STAFF_PARTNER_ROLES = ['PARTNER_ADMIN', 'PARTNER_SUPERVISOR', 'PARTNER_SUPPORT', 'PARTNER_TECHSUPPORT', 'PROVIDER']
- CLIENT_ROLES = ['CLIENT']
- #if user role in list provided and page name in a connected list then menu item is visible
- #so we have to know user_id and page type and MENU_ALG algorythm
- MENU_ALG = 'PURE'
- global MENU_VISIBLE_PAGES
- MENU_VISIBLE_PAGES = []
- if MENU_ALG == 'PURE':
- MENU_VISIBLE_PAGES = []
- MENU_VISIBLE_PAGES.extend(MENU_GLOBAL)
- MENU_VISIBLE_PAGES.extend(MENU_OPEN)
-
- if MENU_ALG == 'REPLACE':
- MENU_VISIBLE_PAGES = []
- MENU_VISIBLE_PAGES.extend(MENU_GLOBAL)
- MENU_VISIBLE_PAGES.extend(MENU_GLOBAL_CUSTOMIZABLE)
-
- if MENU_ALG == 'APPEND':
- MENU_VISIBLE_PAGES = []
- MENU_VISIBLE_PAGES.extend(MENU_GLOBAL)
- MENU_VISIBLE_PAGES.extend(MENU_GLOBAL_CUSTOMIZABLE)
- MENU_VISIBLE_PAGES.extend(MENU_OPEN)
- #TODO - change menu template to FOR loop with parameters - name, link, icon
- # menu structure should base on config file with menu structure as settings
- #MENU_SCHEME_OPEN = [
- # 'main',
- # 'service_categories',
- # 'service_tariffs',
- # 'partners',
- # 'resources',
- # 'providers',
- # 'orders',
- # 'access_control',
- # 'tickets',
- # 'support_chat',
- # 'job_request_metaservice',
- # ]
- #TODO - move to WSR! And add MENU_ALG setting to project settings!
- #MENU_SCHEME_WSR = [
- # 'main_local',
- # 'service_categories',
- # 'partners',
- # 'resources_local',
- # 'providers_local',
- # 'orders_local',
- # 'access_control',
- # 'tickets',
- # 'support_chat',
- # 'job_request_metaservice',
- # ]
- def gen_avaliable_pages(roles):
- #any(x in role for x in STAFF_METASERVICE_ROLES):
- global MENU_VISIBLE_PAGES
- if any(x in roles for x in STAFF_METASERVICE_ROLES):
- if MENU_ALG == 'PURE':
- MENU_VISIBLE_PAGES.extend(STAFF_METASERVICE_MENU_GLOBAL)
- MENU_VISIBLE_PAGES.extend(STAFF_METASERVICE_MENU_OPEN)
- if MENU_ALG == 'REPLACE':
- MENU_VISIBLE_PAGES.extend(STAFF_METASERVICE_MENU_GLOBAL)
- MENU_VISIBLE_PAGES.extend(STAFF_METASERVICE_MENU_CUSTOMIZABLE)
- if MENU_ALG == 'APPEND':
- MENU_VISIBLE_PAGES.extend(STAFF_METASERVICE_MENU_GLOBAL)
- MENU_VISIBLE_PAGES.extend(STAFF_METASERVICE_MENU_CUSTOMIZABLE)
- MENU_VISIBLE_PAGES.extend(STAFF_METASERVICE_MENU_OPEN)
- if any(x in roles for x in STAFF_PARTNER_ROLES):
- #if role in STAFF_PARTNER_ROLES:
- if MENU_ALG == 'PURE':
- MENU_VISIBLE_PAGES.extend(STAFF_MY_PARTNER_MENU_GLOBAL)
- MENU_VISIBLE_PAGES.extend(STAFF_MY_PARTNER_MENU_OPEN)
- MENU_VISIBLE_PAGES.extend(STAFF_MY_PROVIDER_MENU_OPEN)
- if MENU_ALG == 'REPLACE':
- MENU_VISIBLE_PAGES.extend(STAFF_MY_PARTNER_MENU_GLOBAL)
- MENU_VISIBLE_PAGES.extend(STAFF_MY_PARTNER_MENU_CUSTOMIZABLE)
- MENU_VISIBLE_PAGES.extend(STAFF_MY_PROVIDER_MENU_CUSTOMIZABLE)
- if MENU_ALG == 'APPEND':
- MENU_VISIBLE_PAGES.extend(STAFF_MY_PARTNER_MENU_GLOBAL)
- MENU_VISIBLE_PAGES.extend(STAFF_MY_PARTNER_MENU_CUSTOMIZABLE)
- MENU_VISIBLE_PAGES.extend(STAFF_MY_PARTNER_MENU_OPEN)
- MENU_VISIBLE_PAGES.extend(STAFF_MY_PROVIDER_MENU_CUSTOMIZABLE)
- MENU_VISIBLE_PAGES.extend(STAFF_MY_PROVIDER_MENU_OPEN)
- if any(x in roles for x in CLIENT_ROLES):
- #if role in CLIENT_ROLES:
- if MENU_ALG == 'PURE':
- MENU_VISIBLE_PAGES.extend(CLIENT_MY_MENU_GLOBAL)
- MENU_VISIBLE_PAGES.extend(CLIENT_MY_MENU_OPEN)
-
- if MENU_ALG == 'REPLACE':
- MENU_VISIBLE_PAGES.extend(CLIENT_MY_MENU_GLOBAL)
- MENU_VISIBLE_PAGES.extend(CLIENT_MY_MENU_CUSTOMIZABLE)
- MENU_VISIBLE_PAGES.extend(WSR_EXTENDED)
- MENU_VISIBLE_PAGES.extend(WSR_EXTENDED_MY)
- if MENU_ALG == 'APPEND':
- MENU_VISIBLE_PAGES.extend(CLIENT_MY_MENU_GLOBAL)
- MENU_VISIBLE_PAGES.extend(CLIENT_MY_MENU_CUSTOMIZABLE)
- MENU_VISIBLE_PAGES.extend(CLIENT_MY_MENU_OPEN)
- MENU_VISIBLE_PAGES.extend(WSR_EXTENDED)
- MENU_VISIBLE_PAGES.extend(WSR_EXTENDED_MY)
- #MAYBE REMOVE DUPLICATES?
- MENU_VISIBLE_PAGES = list(dict.fromkeys(MENU_VISIBLE_PAGES))
- return MENU_VISIBLE_PAGES
|