123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- from webservice_running.lib.menu import *
- #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
- #READ MENU DESCRIPTION STARTS HERE!!! vvv
- #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_list_list', 'service_categories', 'support_chat', 'job_request_metaservice']
- MENU_OPEN = ['main', 'service_tariffs']
- #Thus menu points for all staff roles is the same
- STAFF_METASERVICE_MENU_GLOBAL = ['access_control', 'partners']
- 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 = ['access_control', 'partners']
- STAFF_MY_PARTNER_MENU_OPEN = ['resources', 'providers', 'orders']
- STAFF_MY_PROVIDER_MENU_OPEN = ['resources', 'orders']
- CLIENT_MY_MENU_GLOBAL = ['transactions']
- CLIENT_MY_MENU_OPEN = ['orders']
- #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 = 'APPEND'
- global menu_visible_pages
- visible_pages = []
- if MENU_ALG == 'PURE':
- visible_pages.extend(MENU_GLOBAL)
- visible_pages.extend(MENU_OPEN)
-
- if MENU_ALG == 'REPLACE':
- visible_pages.extend(MENU_GLOBAL)
- visible_pages.extend(MENU_GLOBAL_CUSTOMIZABLE)
-
- if MENU_ALG == 'APPEND':
- visible_pages.extend(MENU_GLOBAL)
- visible_pages.extend(MENU_GLOBAL_CUSTOMIZABLE)
- 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 = True
- MENU_SCHEME_LIST_OPEN = {
- 'main': ['sharix_admin', 'house', 'Главная'],
- 'service_categories': ['sharix_admin', 'briefcase', 'Категории услуг'],
- 'service_tariffs': ['sharix_admin', 'briefcase', 'Тарифы'],
- 'partners': ['sharix_admin', 'handshake', 'Партнеры'],
- 'resources': ['sharix_admin', 'hdd-network', 'Ресурсы'],
- 'providers': ['sharix_admin', 'person', 'Исполнители'],
- 'orders': ['sharix_admin', 'clock-history', 'Заказы'],
- 'access_control': ['sharix_admin', 'hdd-network', 'Права доступа'],
- 'tickets': ['tickets_list_list', 'tickets', 'Заявки'],
- 'support_chat': ['sharix_admin', 'tickets', 'Чат техподдержки'],
- 'job_request_metaservice': ['sharix_admin', 'credit-card', 'Вакансии'],
- }
- def gen_avaliable_pages(roles):
- #any(x in role for x in STAFF_METASERVICE_ROLES):
- global visible_pages
- global MENU_SCHEME_LIST
- if any(x in roles for x in STAFF_METASERVICE_ROLES):
- if MENU_ALG == 'PURE':
- visible_pages.extend(STAFF_METASERVICE_MENU_GLOBAL)
- visible_pages.extend(STAFF_METASERVICE_MENU_OPEN)
- if MENU_ALG == 'REPLACE':
- visible_pages.extend(STAFF_METASERVICE_MENU_GLOBAL)
- visible_pages.extend(STAFF_METASERVICE_MENU_CUSTOMIZABLE)
- if MENU_ALG == 'APPEND':
- visible_pages.extend(STAFF_METASERVICE_MENU_GLOBAL)
- visible_pages.extend(STAFF_METASERVICE_MENU_CUSTOMIZABLE)
- 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':
- visible_pages.extend(STAFF_MY_PARTNER_MENU_GLOBAL)
- visible_pages.extend(STAFF_MY_PARTNER_MENU_OPEN)
- visible_pages.extend(STAFF_MY_PROVIDER_MENU_OPEN)
- if MENU_ALG == 'REPLACE':
- visible_pages.extend(STAFF_MY_PARTNER_MENU_GLOBAL)
- visible_pages.extend(STAFF_MY_PARTNER_MENU_CUSTOMIZABLE)
- visible_pages.extend(STAFF_MY_PROVIDER_MENU_CUSTOMIZABLE)
- if MENU_ALG == 'APPEND':
- visible_pages.extend(STAFF_MY_PARTNER_MENU_GLOBAL)
- visible_pages.extend(STAFF_MY_PARTNER_MENU_CUSTOMIZABLE)
- visible_pages.extend(STAFF_MY_PARTNER_MENU_OPEN)
- visible_pages.extend(STAFF_MY_PROVIDER_MENU_CUSTOMIZABLE)
- 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':
- visible_pages.extend(CLIENT_MY_MENU_GLOBAL)
- visible_pages.extend(CLIENT_MY_MENU_OPEN)
-
- if MENU_ALG == 'REPLACE':
- visible_pages.extend(CLIENT_MY_MENU_GLOBAL)
- visible_pages.extend(CLIENT_MY_MENU_CUSTOMIZABLE)
- visible_pages.extend(WSR_EXTENDED)
- visible_pages.extend(WSR_EXTENDED_MY)
- if MENU_ALG == 'APPEND':
- visible_pages.extend(CLIENT_MY_MENU_GLOBAL)
- visible_pages.extend(CLIENT_MY_MENU_CUSTOMIZABLE)
- visible_pages.extend(CLIENT_MY_MENU_OPEN)
- visible_pages.extend(WSR_EXTENDED)
- visible_pages.extend(WSR_EXTENDED_MY)
- #MAYBE REMOVE DUPLICATES?
- visible_pages = list(dict.fromkeys(visible_pages))
- menu_result = []
- if not MENU_SCHEME:
- MENU_SCHEME_LIST=MENU_SCHEME_LIST_OPEN
-
- for key, value in MENU_SCHEME_LIST.items():
- if key in visible_pages:
- menu_item=[]
- menu_item.append(value[0]+':'+key)
- menu_item=menu_item+value
- menu_result.append(menu_item)
- print (menu_result)
- return menu_result
- gen_avaliable_pages('METASERVICE-ADMIN')
|