#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