From f6706a8898c5d2a7a1a235305d25fa270bd28888 Mon Sep 17 00:00:00 2001 From: Edward Date: Thu, 20 Oct 2016 17:52:12 -0200 Subject: [PATCH] =?UTF-8?q?Apagando=20arquivo=20desnecess=C3=A1rio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove 'echo'. --- echo | 14029 --------------------------------------------------------- 1 file changed, 14029 deletions(-) delete mode 100644 echo diff --git a/echo b/echo deleted file mode 100644 index 7a95a6562..000000000 --- a/echo +++ /dev/null @@ -1,14029 +0,0 @@ -]0;IPython: Documents/saplVIRTUAL_ENV -> /home/eduardo/.virtualenvs/sapl/lib/python3.4/site-packages -============================= test session starts ============================== -platform linux -- Python 3.4.3, pytest-2.9.2, py-1.4.31, pluggy-0.3.1 -django settings: sapl.settings (from ini file) -rootdir: /home/eduardo/Documents/sapl, inifile: pytest.ini -plugins: cov-2.3.0, django-2.9.1, ipdb-0.1-prerelease2 -collected 2013 items - -sapl/test_urls.py .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................F....F....F....F....F....F.........F....F....F....F....F....F....F....F.........F....F....F....F....F....F....F....F....F....F....F....F....F....F....F....F....F....F....F...........F....F....F....F....F..............................................................................FFFFFFFFFFFFFFFFFFF................................................................................................................................................................................................................................................................................................................................................................................................................FFFFFFFFFF.............................................................FFFFFF.FFF.FFFFFFFFFFFFFFFFFFFFFFF..F - -=================================== FAILURES =================================== -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item238] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc050365a60>, 'sistema/app-config/', [], 'sapl.base') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item243] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04ec17bf8>, 'sistema/bancada/', [], 'sapl.sessao') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item248] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04ec17ea0>, 'sistema/bloco/', [], 'sapl.sessao') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item253] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04ec201e0>, 'sistema/cargo-bancada/', [], 'sapl.sessao') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item258] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc0503657b8>, 'sistema/casa-legislativa/', [], 'sapl.base') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item263] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9c6620>, 'sistema/coligacao/', [], 'sapl.parlamentares') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item273] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc05036cb70>, 'sistema/comissao/cargo/', [], 'sapl.comissoes') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item278] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc05036ce18>, 'sistema/comissao/periodo-composicao/', [], 'sapl.comissoes') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item283] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc050378158>, 'sistema/comissao/tipo/', [], 'sapl.comissoes') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item288] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9c6b70>, 'sistema/frente/', [], 'sapl.parlamentares') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item293] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc0502df488>, 'sistema/lexml/provedor/', [], 'sapl.lexml') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item298] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc0502df730>, 'sistema/lexml/publicador/', [], 'sapl.lexml') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item303] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9f0bf8>, 'sistema/materia/autor/', [], 'sapl.materia') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item308] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9f91e0>, 'sistema/materia/orgao/', [], 'sapl.materia') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item318] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9e5b70>, 'sistema/materia/regime-tramitacao/', [], 'sapl.materia') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item323] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9f0ea0>, 'sistema/materia/status-tramitacao/', [], 'sapl.materia') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item328] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9e5e18>, 'sistema/materia/tipo-autor/', [], 'sapl.materia') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item333] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9f0158>, 'sistema/materia/tipo-documento/', [], 'sapl.materia') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item338] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9f0400>, 'sistema/materia/tipo-fim-relatoria/', [], 'sapl.materia') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item343] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9e58c8>, 'sistema/materia/tipo/', [], 'sapl.materia') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item348] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9f06a8>, 'sistema/materia/unidade-tramitacao/', [], 'sapl.materia') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item353] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9d91e0>, 'sistema/mesa-diretora/cargo-mesa/', [], 'sapl.parlamentares') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item358] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9cfea0>, 'sistema/mesa-diretora/sessao-legislativa/', [], 'sapl.parlamentares') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item363] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9fd510>, 'sistema/norma/assunto/', [], 'sapl.norma') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item368] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9fd268>, 'sistema/norma/tipo/', [], 'sapl.norma') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item373] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9c6e18>, 'sistema/parlamentar/legislatura/', [], 'sapl.parlamentares') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item378] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9cf400>, 'sistema/parlamentar/nivel-instrucao/', [], 'sapl.parlamentares') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item383] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9cfbf8>, 'sistema/parlamentar/partido/', [], 'sapl.parlamentares') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item388] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9cf6a8>, 'sistema/parlamentar/tipo-afastamento/', [], 'sapl.parlamentares') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item393] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9cf158>, 'sistema/parlamentar/tipo-dependente/', [], 'sapl.parlamentares') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item398] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9cf950>, 'sistema/parlamentar/tipo-militar/', [], 'sapl.parlamentares') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item403] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9e5620>, 'sistema/proposicao/autor/', [], 'sapl.materia') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item408] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9e5378>, 'sistema/proposicao/tipo/', [], 'sapl.materia') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item420] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04ec17950>, 'sistema/sessao-plenaria/tipo-expediente/', [], 'sapl.sessao') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item425] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04ec176a8>, 'sistema/sessao-plenaria/tipo-resultado-votacao/', [], 'sapl.sessao') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item430] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04ec17400>, 'sistema/sessao-plenaria/tipo/', [], 'sapl.sessao') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item435] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f91e400>, 'sistema/status-tramitacao-adm/', [], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -________ test_crudaux_list_do_crud_esta_na_pagina_sistema[url_item440] _________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f91e158>, 'sistema/tipo-documento-adm/', [], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_crudaux_list_do_crud_esta_na_pagina_sistema(url_item, admin_client): - - # Verifica a url é de um CrudAux e, se for, testa se está - # na página Tabelas Auxiliares - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - view_class = None - if hasattr(key, 'view_class'): - view_class = key.view_class - - # se não tem view_class, possivelmente não é uma classed base view - if not view_class: - return - - # se não tem atributo crud, não é será nenhum tipo de crud - if not hasattr(view_class, 'crud'): - return - - herancas_crud = list(map(str, type.mro(view_class.crud))) - for string_class in herancas_crud: - if 'CrudAux' in string_class: - - herancas_view = list(map(str, type.mro(view_class))) - - for string_view_class in herancas_view: - # verifica se o link para manutenção do crud está em /sistema - if 'ListView' in string_view_class: -> response = admin_client.get('/sistema', {}, follow=True) - -sapl/test_urls.py:141: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError -_________________________ test_urlpatterns[url_item16] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9d9510>, 'docadm/', [], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item17] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f98fd90>, 'docadm/%(pk)s', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/1) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item18] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f98fea0>, 'docadm/%(pk)s/delete', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/1/delete) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item19] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f98fe18>, 'docadm/%(pk)s/edit', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/1/edit) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item20] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9d97b8>, 'docadm/create', [], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/create) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item21] _________________________ - -url_item = (, 'docadm/doc-ace-adm/%(pk)s', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/doc-ace-adm/1) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item22] _________________________ - -url_item = (, 'docadm/doc-ace-adm/edit/%(pk)s/%(ano)s', ['pk', 'ano'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/doc-ace-adm/edit/1/1) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item23] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f98ff28>, 'docadm/doc-acessorio/', [], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/doc-acessorio/) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item24] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc0502800d0>, 'docadm/doc-acessorio/%(pk)s', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/doc-acessorio/1) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item25] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc0502801e0>, 'docadm/doc-acessorio/%(pk)s/delete', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/doc-acessorio/1/delete) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item26] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc050280158>, 'docadm/doc-acessorio/%(pk)s/edit', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/doc-acessorio/1/edit) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item27] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc050280048>, 'docadm/doc-acessorio/create', [], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/doc-acessorio/create) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item28] _________________________ - -url_item = (, 'docadm/doc-adm/%(pk)s', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/doc-adm/1) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item29] _________________________ - -url_item = (, 'docadm/pesq-doc-adm', [], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/pesq-doc-adm) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item30] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc050280268>, 'docadm/tramitacao-doc-adm/%(pk)s/tramitacaoadministrativo', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/tramitacao-doc-adm/1/tramitacaoadministrativo) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item31] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc0502802f0>, 'docadm/tramitacao-doc-adm/%(pk)s/tramitacaoadministrativo/create', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/tramitacao-doc-adm/1/tramitacaoadministrativo/create) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item32] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc050280378>, 'docadm/tramitacao-doc-adm/tramitacaoadministrativo/%(pk)s', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/tramitacao-doc-adm/tramitacaoadministrativo/1) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item33] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc050280488>, 'docadm/tramitacao-doc-adm/tramitacaoadministrativo/%(pk)s/delete', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/tramitacao-doc-adm/tramitacaoadministrativo/1/delete) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -_________________________ test_urlpatterns[url_item34] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc050280400>, 'docadm/tramitacao-doc-adm/tramitacaoadministrativo/%(pk)s/edit', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/docadm/tramitacao-doc-adm/tramitacaoadministrativo/1/edit) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -________________________ test_urlpatterns[url_item435] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f91e400>, 'sistema/status-tramitacao-adm/', [], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/sistema/status-tramitacao-adm/) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -________________________ test_urlpatterns[url_item436] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f91e510>, 'sistema/status-tramitacao-adm/%(pk)s', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/sistema/status-tramitacao-adm/1) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -________________________ test_urlpatterns[url_item437] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f91e620>, 'sistema/status-tramitacao-adm/%(pk)s/delete', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/sistema/status-tramitacao-adm/1/delete) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -________________________ test_urlpatterns[url_item438] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f91e598>, 'sistema/status-tramitacao-adm/%(pk)s/edit', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/sistema/status-tramitacao-adm/1/edit) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -________________________ test_urlpatterns[url_item439] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f91e488>, 'sistema/status-tramitacao-adm/create', [], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/sistema/status-tramitacao-adm/create) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -________________________ test_urlpatterns[url_item440] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f91e158>, 'sistema/tipo-documento-adm/', [], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/sistema/tipo-documento-adm/) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -________________________ test_urlpatterns[url_item441] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f91e268>, 'sistema/tipo-documento-adm/%(pk)s', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/sistema/tipo-documento-adm/1) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -________________________ test_urlpatterns[url_item442] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f91e378>, 'sistema/tipo-documento-adm/%(pk)s/delete', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/sistema/tipo-documento-adm/1/delete) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -________________________ test_urlpatterns[url_item443] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f91e2f0>, 'sistema/tipo-documento-adm/%(pk)s/edit', ['pk'], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/sistema/tipo-documento-adm/1/edit) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -________________________ test_urlpatterns[url_item444] _________________________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f91e1e0>, 'sistema/tipo-documento-adm/create', [], 'sapl.protocoloadm') -admin_client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_urlpatterns(url_item, admin_client): - - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - assert '\n' not in url, """ - A url (%s) da app (%s) está mal formada. - """ % (app_name, url) - - app_name = app_name[5:] - - assert app_name in apps_url_patterns_prefixs_and_users, """ - A app (%s) da url (%s) não consta na lista de prefixos do teste - """ % (app_name, url) - - if app_name in apps_url_patterns_prefixs_and_users: - prefixs = apps_url_patterns_prefixs_and_users[app_name]['prefixs'] - - isvalid = False - for prefix in prefixs: - if url.startswith(prefix): - isvalid = True - break - -> assert isvalid, """ - O prefixo da url (%s) não está no padrão de sua app (%s). - Os prefixos permitidos são: - %s - """ % (url, app_name, prefixs) -E AssertionError: -E O prefixo da url (/sistema/tipo-documento-adm/create) não está no padrão de sua app (protocoloadm). -E Os prefixos permitidos são: -E ['/protocoloadm', '/docadm/sistema'] -E -E assert False - -sapl/test_urls.py:254: AssertionError -______________ test_permissions_urls_for_users_by_apps[url_item3] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc05036c620>, 'comissao/%(pk)s/composicao/create', ['pk'], 'sapl.comissoes') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:123: in get_response - response = middleware_method(request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/middleware/locale.py:25: in process_request - request, check_path=self.is_language_prefix_patterns_used) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/__init__.py:199: in get_language_from_request - return _trans.get_language_from_request(request, check_path) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/trans_real.py:494: in get_language_from_request - lang_code = request.session.get(LANGUAGE_SESSION_KEY) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:61: in get - return self._session.get(key, default) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:201: in _get_session - self._session_cache = self.load() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/db.py:33: in load - expire_date__gt=timezone.now() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:381: in get - num = len(clone) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:240: in __len__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s)' -params = ('7bpa3uesppy7ns1gsx9sm5lcsnyo5hn3', datetime.datetime(2016, 10, 11, 14, 15, 15, 423886, tzinfo=)) - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_comissoes': ['/comissao'], 'operador_geral': ['/sistema', '/comissao']} /comissao/1/composicao/create -______________ test_permissions_urls_for_users_by_apps[url_item4] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc05036c510>, 'comissao/%(pk)s/delete', ['pk'], 'sapl.comissoes') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError ------------------------------ Captured stdout call ----------------------------- -operador_geral {'operador_comissoes': ['/comissao'], 'operador_geral': ['/sistema', '/comissao']} /comissao/1/delete -______________ test_permissions_urls_for_users_by_apps[url_item5] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc05036c488>, 'comissao/%(pk)s/edit', ['pk'], 'sapl.comissoes') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:123: in get_response - response = middleware_method(request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/middleware/locale.py:25: in process_request - request, check_path=self.is_language_prefix_patterns_used) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/__init__.py:199: in get_language_from_request - return _trans.get_language_from_request(request, check_path) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/trans_real.py:494: in get_language_from_request - lang_code = request.session.get(LANGUAGE_SESSION_KEY) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:61: in get - return self._session.get(key, default) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:201: in _get_session - self._session_cache = self.load() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/db.py:33: in load - expire_date__gt=timezone.now() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:381: in get - num = len(clone) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:240: in __len__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s)' -params = ('7jt6whgolvs7ftcx9yzp2xave7o5xvnt', datetime.datetime(2016, 10, 11, 14, 15, 19, 387079, tzinfo=)) - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_comissoes': ['/comissao'], 'operador_geral': ['/sistema', '/comissao']} /comissao/1/edit -______________ test_permissions_urls_for_users_by_apps[url_item6] ______________ - -url_item = (, 'comissao/%(pk)s/materias-em-tramitacao', ['pk'], 'sapl.comissoes') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_comissoes': ['/comissao'], 'operador_geral': ['/sistema', '/comissao']} /comissao/1/materias-em-tramitacao -______________ test_permissions_urls_for_users_by_apps[url_item7] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc05036c840>, 'comissao/%(pk)s/participacao', ['pk'], 'sapl.comissoes') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:123: in get_response - response = middleware_method(request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/middleware/locale.py:25: in process_request - request, check_path=self.is_language_prefix_patterns_used) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/__init__.py:199: in get_language_from_request - return _trans.get_language_from_request(request, check_path) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/trans_real.py:494: in get_language_from_request - lang_code = request.session.get(LANGUAGE_SESSION_KEY) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:61: in get - return self._session.get(key, default) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:201: in _get_session - self._session_cache = self.load() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/db.py:33: in load - expire_date__gt=timezone.now() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:381: in get - num = len(clone) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:240: in __len__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s)' -params = ('blz7if1xg2odotvm7i641shbhcp3mxq4', datetime.datetime(2016, 10, 11, 14, 15, 22, 611850, tzinfo=)) - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_painel {'operador_comissoes': ['/comissao'], 'operador_geral': ['/sistema', '/comissao']} /comissao/1/participacao -______________ test_permissions_urls_for_users_by_apps[url_item8] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc05036c8c8>, 'comissao/%(pk)s/participacao/create', ['pk'], 'sapl.comissoes') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:123: in get_response - response = middleware_method(request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/middleware/locale.py:25: in process_request - request, check_path=self.is_language_prefix_patterns_used) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/__init__.py:199: in get_language_from_request - return _trans.get_language_from_request(request, check_path) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/trans_real.py:494: in get_language_from_request - lang_code = request.session.get(LANGUAGE_SESSION_KEY) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:61: in get - return self._session.get(key, default) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:201: in _get_session - self._session_cache = self.load() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/db.py:33: in load - expire_date__gt=timezone.now() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:381: in get - num = len(clone) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:240: in __len__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s)' -params = ('l9rjsnqyvvtkqoqjc3mhledk1q9rl7hr', datetime.datetime(2016, 10, 11, 14, 15, 24, 382486, tzinfo=)) - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_comissoes': ['/comissao'], 'operador_geral': ['/sistema', '/comissao']} /comissao/1/participacao/create -_____________ test_permissions_urls_for_users_by_apps[url_item10] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc05036c7b8>, 'comissao/composicao/%(pk)s/delete', ['pk'], 'sapl.comissoes') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:123: in get_response - response = middleware_method(request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/middleware/locale.py:25: in process_request - request, check_path=self.is_language_prefix_patterns_used) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/__init__.py:199: in get_language_from_request - return _trans.get_language_from_request(request, check_path) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/trans_real.py:494: in get_language_from_request - lang_code = request.session.get(LANGUAGE_SESSION_KEY) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:61: in get - return self._session.get(key, default) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:201: in _get_session - self._session_cache = self.load() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/db.py:33: in load - expire_date__gt=timezone.now() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:381: in get - num = len(clone) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:240: in __len__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s)' -params = ('u14b676mus329iqw81o8l3rcqlgnj6q9', datetime.datetime(2016, 10, 11, 14, 15, 27, 591360, tzinfo=)) - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_comissoes': ['/comissao'], 'operador_geral': ['/sistema', '/comissao']} /comissao/composicao/1/delete -_____________ test_permissions_urls_for_users_by_apps[url_item11] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc05036c730>, 'comissao/composicao/%(pk)s/edit', ['pk'], 'sapl.comissoes') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:123: in get_response - response = middleware_method(request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/middleware/locale.py:25: in process_request - request, check_path=self.is_language_prefix_patterns_used) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/__init__.py:199: in get_language_from_request - return _trans.get_language_from_request(request, check_path) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/trans_real.py:494: in get_language_from_request - lang_code = request.session.get(LANGUAGE_SESSION_KEY) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:61: in get - return self._session.get(key, default) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:201: in _get_session - self._session_cache = self.load() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/db.py:33: in load - expire_date__gt=timezone.now() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:381: in get - num = len(clone) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:240: in __len__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s)' -params = ('rq6fh5ia0ac9v4gzdoz1vcv7kabco7wt', datetime.datetime(2016, 10, 11, 14, 15, 29, 342310, tzinfo=)) - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_comissoes': ['/comissao'], 'operador_geral': ['/sistema', '/comissao']} /comissao/composicao/1/edit -_____________ test_permissions_urls_for_users_by_apps[url_item12] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc05036c378>, 'comissao/create', [], 'sapl.comissoes') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:123: in get_response - response = middleware_method(request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/middleware/locale.py:25: in process_request - request, check_path=self.is_language_prefix_patterns_used) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/__init__.py:199: in get_language_from_request - return _trans.get_language_from_request(request, check_path) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/trans_real.py:494: in get_language_from_request - lang_code = request.session.get(LANGUAGE_SESSION_KEY) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:61: in get - return self._session.get(key, default) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:201: in _get_session - self._session_cache = self.load() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/db.py:33: in load - expire_date__gt=timezone.now() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:381: in get - num = len(clone) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:240: in __len__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s)' -params = ('p0viey88gte42ifykp8uw4lijujkgryx', datetime.datetime(2016, 10, 11, 14, 15, 31, 253921, tzinfo=)) - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_comissoes': ['/comissao'], 'operador_geral': ['/sistema', '/comissao']} /comissao/create -_____________ test_permissions_urls_for_users_by_apps[url_item14] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc05036ca60>, 'comissao/participacao/%(pk)s/delete', ['pk'], 'sapl.comissoes') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:123: in get_response - response = middleware_method(request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/middleware/locale.py:25: in process_request - request, check_path=self.is_language_prefix_patterns_used) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/__init__.py:199: in get_language_from_request - return _trans.get_language_from_request(request, check_path) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/trans_real.py:494: in get_language_from_request - lang_code = request.session.get(LANGUAGE_SESSION_KEY) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:61: in get - return self._session.get(key, default) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:201: in _get_session - self._session_cache = self.load() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/db.py:33: in load - expire_date__gt=timezone.now() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:381: in get - num = len(clone) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:240: in __len__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s)' -params = ('n1ponlaf0agb3hqg6ie1fj6cy42qkm0y', datetime.datetime(2016, 10, 11, 14, 15, 34, 667815, tzinfo=)) - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_comissoes': ['/comissao'], 'operador_geral': ['/sistema', '/comissao']} /comissao/participacao/1/delete -_____________ test_permissions_urls_for_users_by_apps[url_item15] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc05036c9d8>, 'comissao/participacao/%(pk)s/edit', ['pk'], 'sapl.comissoes') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:123: in get_response - response = middleware_method(request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/middleware/locale.py:25: in process_request - request, check_path=self.is_language_prefix_patterns_used) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/__init__.py:199: in get_language_from_request - return _trans.get_language_from_request(request, check_path) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/trans_real.py:494: in get_language_from_request - lang_code = request.session.get(LANGUAGE_SESSION_KEY) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:61: in get - return self._session.get(key, default) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:201: in _get_session - self._session_cache = self.load() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/db.py:33: in load - expire_date__gt=timezone.now() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:381: in get - num = len(clone) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:240: in __len__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s)' -params = ('bpl6gfizvrbeymgz036oiuc91hkxq5dk', datetime.datetime(2016, 10, 11, 14, 15, 37, 451057, tzinfo=)) - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_comissoes': ['/comissao'], 'operador_geral': ['/sistema', '/comissao']} /comissao/participacao/1/edit -_____________ test_permissions_urls_for_users_by_apps[url_item16] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9d9510>, 'docadm/', [], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:123: in get_response - response = middleware_method(request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/middleware/locale.py:25: in process_request - request, check_path=self.is_language_prefix_patterns_used) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/__init__.py:199: in get_language_from_request - return _trans.get_language_from_request(request, check_path) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/trans_real.py:494: in get_language_from_request - lang_code = request.session.get(LANGUAGE_SESSION_KEY) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:61: in get - return self._session.get(key, default) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:201: in _get_session - self._session_cache = self.load() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/db.py:33: in load - expire_date__gt=timezone.now() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:381: in get - num = len(clone) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:240: in __len__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s)' -params = ('fz8bb6icn6cdi0wz8wlx3hn1prkgb75v', datetime.datetime(2016, 10, 11, 14, 15, 40, 286646, tzinfo=)) - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/ -_____________ test_permissions_urls_for_users_by_apps[url_item17] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f98fd90>, 'docadm/%(pk)s', ['pk'], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/1 -_____________ test_permissions_urls_for_users_by_apps[url_item18] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f98fea0>, 'docadm/%(pk)s/delete', ['pk'], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/1/delete -_____________ test_permissions_urls_for_users_by_apps[url_item19] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f98fe18>, 'docadm/%(pk)s/edit', ['pk'], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/1/edit -_____________ test_permissions_urls_for_users_by_apps[url_item20] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f9d97b8>, 'docadm/create', [], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:123: in get_response - response = middleware_method(request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/middleware/locale.py:25: in process_request - request, check_path=self.is_language_prefix_patterns_used) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/__init__.py:199: in get_language_from_request - return _trans.get_language_from_request(request, check_path) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/trans_real.py:494: in get_language_from_request - lang_code = request.session.get(LANGUAGE_SESSION_KEY) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:61: in get - return self._session.get(key, default) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:201: in _get_session - self._session_cache = self.load() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/db.py:33: in load - expire_date__gt=timezone.now() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:381: in get - num = len(clone) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:240: in __len__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s)' -params = ('jlcqaw2862k14g7peuhvw4jdiikkqlwj', datetime.datetime(2016, 10, 11, 14, 15, 48, 562375, tzinfo=)) - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/create -_____________ test_permissions_urls_for_users_by_apps[url_item21] ______________ - -url_item = (, 'docadm/doc-ace-adm/%(pk)s', ['pk'], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:123: in get_response - response = middleware_method(request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/middleware/locale.py:25: in process_request - request, check_path=self.is_language_prefix_patterns_used) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/__init__.py:199: in get_language_from_request - return _trans.get_language_from_request(request, check_path) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/trans_real.py:494: in get_language_from_request - lang_code = request.session.get(LANGUAGE_SESSION_KEY) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:61: in get - return self._session.get(key, default) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:201: in _get_session - self._session_cache = self.load() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/db.py:33: in load - expire_date__gt=timezone.now() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:381: in get - num = len(clone) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:240: in __len__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s)' -params = ('68us1rdd3hs8t1a7jxfl2ujqzl2h5zq1', datetime.datetime(2016, 10, 11, 14, 15, 50, 180925, tzinfo=)) - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/doc-ace-adm/1 -_____________ test_permissions_urls_for_users_by_apps[url_item22] ______________ - -url_item = (, 'docadm/doc-ace-adm/edit/%(pk)s/%(ano)s', ['pk', 'ano'], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/doc-ace-adm/edit/1/1 -_____________ test_permissions_urls_for_users_by_apps[url_item23] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc04f98ff28>, 'docadm/doc-acessorio/', [], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:123: in get_response - response = middleware_method(request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/middleware/locale.py:25: in process_request - request, check_path=self.is_language_prefix_patterns_used) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/__init__.py:199: in get_language_from_request - return _trans.get_language_from_request(request, check_path) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/trans_real.py:494: in get_language_from_request - lang_code = request.session.get(LANGUAGE_SESSION_KEY) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:61: in get - return self._session.get(key, default) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:201: in _get_session - self._session_cache = self.load() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/db.py:33: in load - expire_date__gt=timezone.now() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:381: in get - num = len(clone) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:240: in __len__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s)' -params = ('3khibaw474loj6q1g2j5j97gwkms2pza', datetime.datetime(2016, 10, 11, 14, 15, 54, 101230, tzinfo=)) - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/doc-acessorio/ -_____________ test_permissions_urls_for_users_by_apps[url_item24] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc0502800d0>, 'docadm/doc-acessorio/%(pk)s', ['pk'], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/doc-acessorio/1 -_____________ test_permissions_urls_for_users_by_apps[url_item25] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc0502801e0>, 'docadm/doc-acessorio/%(pk)s/delete', ['pk'], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/doc-acessorio/1/delete -_____________ test_permissions_urls_for_users_by_apps[url_item26] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc050280158>, 'docadm/doc-acessorio/%(pk)s/edit', ['pk'], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/doc-acessorio/1/edit -_____________ test_permissions_urls_for_users_by_apps[url_item27] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc050280048>, 'docadm/doc-acessorio/create', [], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:123: in get_response - response = middleware_method(request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/middleware/locale.py:25: in process_request - request, check_path=self.is_language_prefix_patterns_used) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/__init__.py:199: in get_language_from_request - return _trans.get_language_from_request(request, check_path) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/trans_real.py:494: in get_language_from_request - lang_code = request.session.get(LANGUAGE_SESSION_KEY) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:61: in get - return self._session.get(key, default) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:201: in _get_session - self._session_cache = self.load() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/db.py:33: in load - expire_date__gt=timezone.now() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:381: in get - num = len(clone) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:240: in __len__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s)' -params = ('xhve3xe2zi66umdru23jg4ycic21mz5v', datetime.datetime(2016, 10, 11, 14, 16, 4, 514192, tzinfo=)) - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/doc-acessorio/create -_____________ test_permissions_urls_for_users_by_apps[url_item28] ______________ - -url_item = (, 'docadm/doc-adm/%(pk)s', ['pk'], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/doc-adm/1 -_____________ test_permissions_urls_for_users_by_apps[url_item29] ______________ - -url_item = (, 'docadm/pesq-doc-adm', [], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:123: in get_response - response = middleware_method(request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/middleware/locale.py:25: in process_request - request, check_path=self.is_language_prefix_patterns_used) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/__init__.py:199: in get_language_from_request - return _trans.get_language_from_request(request, check_path) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/trans_real.py:494: in get_language_from_request - lang_code = request.session.get(LANGUAGE_SESSION_KEY) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:61: in get - return self._session.get(key, default) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:201: in _get_session - self._session_cache = self.load() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/db.py:33: in load - expire_date__gt=timezone.now() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:381: in get - num = len(clone) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:240: in __len__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s)' -params = ('zi3fqs79ieqmx1tcvf7te0h5l8tgwvz3', datetime.datetime(2016, 10, 11, 14, 16, 8, 167065, tzinfo=)) - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/pesq-doc-adm -_____________ test_permissions_urls_for_users_by_apps[url_item30] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc050280268>, 'docadm/tramitacao-doc-adm/%(pk)s/tramitacaoadministrativo', ['pk'], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/tramitacao-doc-adm/1/tramitacaoadministrativo -_____________ test_permissions_urls_for_users_by_apps[url_item31] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc0502802f0>, 'docadm/tramitacao-doc-adm/%(pk)s/tramitacaoadministrativo/create', ['pk'], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/tramitacao-doc-adm/1/tramitacaoadministrativo/create -_____________ test_permissions_urls_for_users_by_apps[url_item32] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc050280378>, 'docadm/tramitacao-doc-adm/tramitacaoadministrativo/%(pk)s', ['pk'], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/tramitacao-doc-adm/tramitacaoadministrativo/1 -_____________ test_permissions_urls_for_users_by_apps[url_item33] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc050280488>, 'docadm/tramitacao-doc-adm/tramitacaoadministrativo/%(pk)s/delete', ['pk'], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/tramitacao-doc-adm/tramitacaoadministrativo/1/delete -_____________ test_permissions_urls_for_users_by_apps[url_item34] ______________ - -url_item = (._add_base..CrudViewWithBase at 0x7fc050280400>, 'docadm/tramitacao-doc-adm/tramitacaoadministrativo/%(pk)s/edit', ['pk'], 'sapl.protocoloadm') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:206: in render - return self._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:173: in render - return compiled_parent._render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/utils.py:92: in instrumented_test_render - return self.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/loader_tags.py:69: in render - result = block.nodelist.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:992: in render - bit = node.render_annotated(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:959: in render_annotated - return self.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:319: in render - match = condition.eval(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/defaulttags.py:951: in eval - return self.value.resolve(context, ignore_failures=True) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:736: in resolve - new_obj = func(obj, *arg_vals) -sapl/base/templatetags/common_tags.py:92: in get_doc_adm_template_perms - app_config = AppConfig.objects.last() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:559: in last - objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_appconfig"."id", "base_appconfig"."documentos_administrativos", "base_appconfig"."sequencia_numeracao", ..._materia", "base_appconfig"."texto_articulado_norma" FROM "base_appconfig" ORDER BY "base_appconfig"."id" DESC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.ProgrammingError: column base_appconfig.texto_articulado_proposicao does not exist -E LINE 1: ...cia_numeracao", "base_appconfig"."painel_aberto", "base_appc... -E ^ - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: ProgrammingError ------------------------------ Captured stdout call ----------------------------- -operador_geral {'operador_geral': ['/sistema', '/docadm', '/protocoloadm'], 'operador_administrativo': ['/docadm'], 'operador_protocoloadm': ['/protocoloadm']} /docadm/tramitacao-doc-adm/tramitacaoadministrativo/1/edit -_____________ test_permissions_urls_for_users_by_apps[url_item35] ______________ - -url_item = (, 'login/', [], 'sapl.base') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:123: in get_response - response = middleware_method(request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/middleware/locale.py:25: in process_request - request, check_path=self.is_language_prefix_patterns_used) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/__init__.py:199: in get_language_from_request - return _trans.get_language_from_request(request, check_path) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/trans_real.py:494: in get_language_from_request - lang_code = request.session.get(LANGUAGE_SESSION_KEY) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:61: in get - return self._session.get(key, default) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:201: in _get_session - self._session_cache = self.load() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/db.py:33: in load - expire_date__gt=timezone.now() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:381: in get - num = len(clone) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:240: in __len__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s)' -params = ('c1uywktes83r58cl8d3wl7q9t8slb8ic', datetime.datetime(2016, 10, 11, 14, 16, 19, 138164, tzinfo=)) - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema']} /login/ -_____________ test_permissions_urls_for_users_by_apps[url_item36] ______________ - -url_item = (, 'logout/', [], 'sapl.base') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:505: in get - response = self._handle_redirects(response, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:686: in _handle_redirects - response = self.get(path, QueryDict(url.query), follow=False, **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:174: in get_response - response = self.process_exception_by_middleware(e, request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:172: in get_response - response = response.render() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:160: in render - self.content = self.rendered_content -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/response.py:137: in rendered_content - content = template.render(context, self._request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/backends/django.py:95: in render - return self.template.render(context) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/template/base.py:204: in render - with context.bind_template(self): -/usr/lib/python3.4/contextlib.py:59: in __enter__ - return next(self.gen) -../../.virtualenvs/sapl/lib/python3.4/site-packages/debug_toolbar/panels/templates/panel.py:49: in _request_context_bind_template - context = processor(self.request) -sapl/context_processors.py:7: in parliament_info - casa = get_casalegislativa() -sapl/base/views.py:26: in get_casalegislativa - return CasaLegislativa.objects.first() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:550: in first - objects = list((self if self.ordered else self.order_by('pk'))[:1]) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:258: in __iter__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "base_casalegislativa"."id", "base_casalegislativa"."codigo", "base_casalegislativa"."nome", "base_casalegisla..."base_casalegislativa"."informacao_geral" FROM "base_casalegislativa" ORDER BY "base_casalegislativa"."id" ASC LIMIT 1' -params = () - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_geral': ['/sistema']} /logout/ -_____________ test_permissions_urls_for_users_by_apps[url_item39] ______________ - -url_item = (, 'materia/%(pk)s/acompanhar-confirmar', ['pk'], 'sapl.materia') -client = - - @pytest.mark.parametrize('url_item', _lista_urls) - def test_permissions_urls_for_users_by_apps(url_item, client): - key, url, var, app_name = url_item - url = '/' + (url % {v: 1 for v in var}) - - if not get_user_model().objects.exists(): - for app in sapl_appconfs: - # readequa permissões dos models adicionando - # list e detail permissions - create_perms_post_migrate(app) - # cria usuários de perfil do sapl - cria_grupos_permissoes() - users = get_user_model().objects.values_list('username', flat=True) - - app_labels = app_name.split('.')[1] - - view = None - if hasattr(key, 'view_class'): - view = key.view_class() - - """ - A classe PermissionRequiredForAppCrudMixin pode ser usada em uma - app mas envolver permissoes para outras - como é o caso de PainelView que está na app 'sessao' - mas é um redirecionamento para 'painel'... aqui é feita - a troca da app a ser testada, por essas outras possíveis. - - Este, até a ultima versão deste teste é o único tipo de view que - possui restrição restrição simples, por permissão, e não por - container, como é o caso de proposições que possui restrição - por usuário e não só por, ou não tem, o campo permission_required - """ - if PermissionRequiredForAppCrudMixin in type.mro(key.view_class): - # essa classe deve informar app_label - assert hasattr(key.view_class, 'app_label') - # app_label deve ter conteudo - assert key.view_class.app_label - app_labels = key.view_class.app_label - else: - - if hasattr(view, 'permission_required') and \ - view.permission_required is not None and\ - len(view.permission_required) == 0: - """ - condição do Crud, se tem permission_required e ele é igual [], - então é uma view pública, teste liberado. - """ - return - else: - """ - Views que não se encaixam nãs condições acima, podem possuir - ou não restrição de acesso. Se o código continuar, - será tratado como tentativa de validar pois é possível - ter restrição local, como uma anotação method_required. - Caberá ao desenvolvedor de uma nova view, se for pública e - sem necessidade de nenhum tratamento de permissão, para limpar - o teste to py.test adicionar sua url - representativa na variavel externa ao teste: - - urls_publicas_excecoes, logo acima do teste - """ - pass - - if isinstance(app_labels, str): - app_labels = app_labels, - - for app in app_labels: - - assert app in apps_url_patterns_prefixs_and_users, """ - O app_label (%s) associado a url (%s) não está na base de testes. - %s - """ % (app_name, url) - - if 'users' not in apps_url_patterns_prefixs_and_users[app]: - continue - - users_for_url_atual_app = apps_url_patterns_prefixs_and_users[ - app]['users'] - - for username in users: - print(username, users_for_url_atual_app, url) - - client.login(username=username, password='interlegis') - - rg = None - try: - if url not in urls_publicas_excecoes['get']: - rg = client.get(url, {}, follow=True) - except: - pass - - rp = None - try: - if url not in urls_publicas_excecoes['post']: - rp = client.post(url, {}, follow=True) - except: - pass - - """ - devido às urls serem incompletas ou com pks e outras valores - inexistentes na base, iniciar a execução da view, seja por get, - post ou qualquer outro método pode causar o erro... - por isso o "try ... except" acima. - No entanto, o objetivo do teste é validar o acesso de toda url. - Independente do erro que vá acontecer, esse erro não ocorrerá - se o user não tiver permissão de acesso pelo fato de que "AS - VIEWS BEM FORMADAS PARA VALIDAÇÃO DE ACESSO DEVEM SEMPRE - REDIRECIONAR PARA - LOGIN ANTES DE SUA EXECUÇÃO", desta forma nunca gerando erro - interno dada qualquer incoerência de parâmetros nas urls - """ - - for _type, content in ( - ('get', str(rg.content if rg else '')), - ('post', str(rp.content if rp else ''))): - - if not content: - continue - - def _assert_login(_in): - if _in: - assert btn_login in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) deveria ser redirecionado - para tela de login. - """ % (_type, url, app, username) - else: - assert btn_login not in content, """ - No teste de requisição "%s" a url (%s). - App (%s) - O usuário (%s) não deveria ser redirecionado - para tela de login. Se essa é uma url - invariavelmente pública, a adicione na variavel - abaixo localizada no arquivo que se encontra este - teste: - - urls_publicas_excecoes - - - """ % (_type, url, app, username) - - if username not in users_for_url_atual_app: - # se não é usuário da app deve ser redirecionado para login - _assert_login(True) - else: - prefixs = users_for_url_atual_app[username] - for pr in prefixs: - if url.startswith(pr): - _assert_login(False) - break - -> client.get('/logout/', follow=True) - -sapl/test_urls.py:473: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:503: in get - **extra) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:304: in get - return self.generic('GET', path, secure=secure, **r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:380: in generic - return self.request(**r) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/test/client.py:467: in request - six.reraise(*exc_info) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:686: in reraise - raise value -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/core/handlers/base.py:123: in get_response - response = middleware_method(request) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/middleware/locale.py:25: in process_request - request, check_path=self.is_language_prefix_patterns_used) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/__init__.py:199: in get_language_from_request - return _trans.get_language_from_request(request, check_path) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/translation/trans_real.py:494: in get_language_from_request - lang_code = request.session.get(LANGUAGE_SESSION_KEY) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:61: in get - return self._session.get(key, default) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/base.py:201: in _get_session - self._session_cache = self.load() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/contrib/sessions/backends/db.py:33: in load - expire_date__gt=timezone.now() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/manager.py:122: in manager_method - return getattr(self.get_queryset(), name)(*args, **kwargs) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:381: in get - num = len(clone) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:240: in __len__ - self._fetch_all() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:1074: in _fetch_all - self._result_cache = list(self.iterator()) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/query.py:52: in __iter__ - results = compiler.execute_sql() -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/models/sql/compiler.py:848: in execute_sql - cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: in execute - return self.cursor.execute(sql, params) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/utils.py:95: in __exit__ - six.reraise(dj_exc_type, dj_exc_value, traceback) -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/utils/six.py:685: in reraise - raise value.with_traceback(tb) -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = -sql = 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s)' -params = ('uvoajg1ljw8wo30glsjnaridxyjxvv92', datetime.datetime(2016, 10, 11, 14, 16, 24, 515850, tzinfo=)) - - def execute(self, sql, params=None): - self.db.validate_no_broken_transaction() - with self.db.wrap_database_errors: - if params is None: - return self.cursor.execute(sql) - else: -> return self.cursor.execute(sql, params) -E django.db.utils.InternalError: current transaction is aborted, commands ignored until end of transaction block - -../../.virtualenvs/sapl/lib/python3.4/site-packages/django/db/backends/utils.py:64: InternalError ------------------------------ Captured stdout call ----------------------------- -operador_administrativo {'operador_autor': ['/proposicao'], 'operador_geral': ['/sistema', '/materia'], 'operador_materia': ['/materia']} /materia/1/acompanhar-confirmar -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! KeyboardInterrupt !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -to show a full traceback on KeyboardInterrupt use --fulltrace -/usr/lib/python3.4/ast.py:172: KeyboardInterrupt -========= 100 failed, 1449 passed, 1 pytest-warnings in 159.31 seconds =========