Browse Source

Fix(Sistema): Corrige variável DEBUG e menu Sistema sem links

- Renomeia DEBUG para DJANGO_DEBUG nos docker-compose de dev,
  alinhando com o que settings.py espera via python-decouple
- Corrige bug em menus.py onde itens com check_permission tinham
  a URL limpa mesmo quando o usuário possuía a permissão,
  causando o menu Sistema vazio

Signed-off-by: rangelbruno <rangelbruno@users.noreply.github.com>
pull/3858/head
rangelbruno 7 months ago
parent
commit
b3cd80948b
  1. 2
      docker/docker-compose-dev-db.yml
  2. 2
      docker/docker-compose-dev.yml
  3. 144
      sapl/base/templatetags/menus.py

2
docker/docker-compose-dev-db.yml

@ -26,7 +26,7 @@ services:
- "8002:8000" - "8002:8000"
environment: environment:
SECRET_KEY: '$dkhxm-$zvxdox$g2-&w^1i!_z1juq0xwox6e3#gy6w_88!3t^' SECRET_KEY: '$dkhxm-$zvxdox$g2-&w^1i!_z1juq0xwox6e3#gy6w_88!3t^'
DEBUG: 'True' DJANGO_DEBUG: 'True'
DATABASE_URL: postgresql://sapl:sapl@sapldb-dev:5432/sapl DATABASE_URL: postgresql://sapl:sapl@sapldb-dev:5432/sapl
TZ: America/Sao_Paulo TZ: America/Sao_Paulo
ONLYOFFICE_URL: 'https://onlyoffice.legisinc.com.br' ONLYOFFICE_URL: 'https://onlyoffice.legisinc.com.br'

2
docker/docker-compose-dev.yml

@ -14,7 +14,7 @@ services:
- "8000:8000" - "8000:8000"
environment: environment:
SECRET_KEY: '$dkhxm-$zvxdox$g2-&w^1i!_z1juq0xwox6e3#gy6w_88!3t^' SECRET_KEY: '$dkhxm-$zvxdox$g2-&w^1i!_z1juq0xwox6e3#gy6w_88!3t^'
DEBUG: 'True' DJANGO_DEBUG: 'True'
DATABASE_URL: postgresql://sapl:sapl@host.docker.internal:5432/sapl DATABASE_URL: postgresql://sapl:sapl@host.docker.internal:5432/sapl
TZ: America/Sao_Paulo TZ: America/Sao_Paulo
ONLYOFFICE_URL: 'http://onlyoffice:80' ONLYOFFICE_URL: 'http://onlyoffice:80'

144
sapl/base/templatetags/menus.py

@ -125,93 +125,73 @@ def resolve_urls_inplace(menu, pk, rm, context):
if not req or not req.user.has_perm(menu['check_permission']): if not req or not req.user.has_perm(menu['check_permission']):
return '' return ''
menu['url'] = '' if '/' in url_name:
menu['active'] = '' pass
else: elif ':' in url_name:
if '/' in url_name: try:
pass menu['url'] = reverse('%s' % menu['url'])
elif ':' in url_name: except:
try: try:
menu['url'] = reverse('%s' % menu['url']) menu['url'] = reverse('%s' % menu['url'],
kwargs={'pk': pk})
except: except:
try: log = """
menu['url'] = reverse('%s' % menu['url'], Erro na construção do Menu:
kwargs={'pk': pk}) menu: {}
except: url: {}
# tem que ser root_pk pois quando está sendo 1) Verifique se a url existe
# renderizado um detail, update, delete 2) Se existe no contexto um desses itens:
# e ainda sim é necessário colocar o menu, - context['root_pk'] pk do master
# nestes, casos o pk da url é do detail, e não - context['object'] objeto do master
# do master, porém, os menus do subnav, apontam para """.format(menu['title'], menu['url'])
# outras áreas que as urls destas são construídas logger.error(log)
# com pk do master, e não do detail... por isso raise Exception(log)
# no contexto deve ter, ou root_pk, ou object else:
# sendo que qualquer um dos dois,deverá ser o try:
# master. menu['url'] = reverse('%s:%s' % (
# Estes detalhes são relevantes quando usa-se rm.app_name, menu['url']))
# o menu isolado. Por outro lado, quando usado except:
# conjuntamente com o crud, este configura o contexto
# como se deve para o menus.py
log = """
Erro na construção do Menu:
menu: {}
url: {}
1) Verifique se a url existe
2) Se existe no contexto um desses itens:
- context['root_pk'] pk do master
- context['object'] objeto do master
""".format(menu['title'], menu['url'])
logger.error(log)
raise Exception(log)
else:
try: try:
menu['url'] = reverse('%s:%s' % ( menu['url'] = reverse('%s:%s' % (
rm.app_name, menu['url'])) rm.app_name, menu['url']), kwargs={'pk': pk})
except:
try:
menu['url'] = reverse('%s:%s' % (
rm.app_name, menu['url']), kwargs={'pk': pk})
except:
log = """Erro na construção do Menu:
menu: {}
url: {}
1) Verifique se a url existe
2) Se existe no contexto um desses itens:
- context['root_pk'] pk do master
- context['object'] objeto do master
""".format(menu['title'], menu['url'])
logger.error(log)
raise Exception(log)
#menu['active'] = 'active'\
#if context['request'].path == menu['url'] else ''
req = context.get('request')
menu['active'] = 'active' if req and req.path == menu['url'] else ''
if not menu['active']:
"""
Se não encontrada diretamente,
procura a url acionada dentro do crud, caso seja um.
Serve para manter o active no subnav correto ao acionar
as funcionalidades diretas do MasterDetailCrud, como:
- visualização de detalhes, adição, edição, remoção.
"""
try:
if 'view' in context:
view = context['view']
if hasattr(view, 'crud'):
urls = view.crud.get_urls()
for u in urls:
if (u.name == url_name or
'urls_extras' in menu and
u.name in menu['urls_extras']):
menu['active'] = 'active'
break
except: except:
url_active = menu.get('url', '') log = """Erro na construção do Menu:
logger.warning( menu: {}
f'Não foi possível definir se url {url_active} é a url ativa.') url: {}
1) Verifique se a url existe
2) Se existe no contexto um desses itens:
- context['root_pk'] pk do master
- context['object'] objeto do master
""".format(menu['title'], menu['url'])
logger.error(log)
raise Exception(log)
req = context.get('request')
menu['active'] = 'active' if req and req.path == menu['url'] else ''
if not menu['active']:
"""
Se não encontrada diretamente,
procura a url acionada dentro do crud, caso seja um.
Serve para manter o active no subnav correto ao acionar
as funcionalidades diretas do MasterDetailCrud, como:
- visualização de detalhes, adição, edição, remoção.
"""
try:
if 'view' in context:
view = context['view']
if hasattr(view, 'crud'):
urls = view.crud.get_urls()
for u in urls:
if (u.name == url_name or
'urls_extras' in menu and
u.name in menu['urls_extras']):
menu['active'] = 'active'
break
except:
url_active = menu.get('url', '')
logger.warning(
f'Não foi possível definir se url {url_active} é a url ativa.')
elif 'check_permission' in menu and not context[ elif 'check_permission' in menu and not context[
'request'].user.has_perm(menu['check_permission']): 'request'].user.has_perm(menu['check_permission']):
menu['active'] = '' menu['active'] = ''

Loading…
Cancel
Save