Browse Source

Bump to 3.2

upgrade-sapl
Edward Ribeiro 2 months ago
parent
commit
93bd167c0f
  1. 4
      drfautoapi/drfautoapi.py
  2. 65
      requirements/requirements.txt
  3. 1
      sapl/api/__init__.py
  4. 2
      sapl/api/apps.py
  5. 2
      sapl/api/forms.py
  6. 18
      sapl/api/urls.py
  7. 1
      sapl/audiencia/__init__.py
  8. 2
      sapl/audiencia/apps.py
  9. 2
      sapl/audiencia/forms.py
  10. 2
      sapl/audiencia/models.py
  11. 2
      sapl/audiencia/tests/test_audiencia.py
  12. 4
      sapl/audiencia/urls.py
  13. 1
      sapl/base/__init__.py
  14. 2
      sapl/base/admin.py
  15. 2
      sapl/base/apps.py
  16. 2
      sapl/base/email_utils.py
  17. 2
      sapl/base/forms.py
  18. 4
      sapl/base/models.py
  19. 2
      sapl/base/receivers.py
  20. 2
      sapl/base/templatetags/menus.py
  21. 2
      sapl/base/tests/test_form.py
  22. 2
      sapl/base/tests/test_view_base.py
  23. 4
      sapl/base/tests/teststub_urls.py
  24. 76
      sapl/base/urls.py
  25. 6
      sapl/base/views.py
  26. 1
      sapl/comissoes/__init__.py
  27. 2
      sapl/comissoes/apps.py
  28. 2
      sapl/comissoes/forms.py
  29. 2
      sapl/comissoes/models.py
  30. 2
      sapl/comissoes/tests/test_comissoes.py
  31. 18
      sapl/comissoes/urls.py
  32. 2
      sapl/comissoes/views.py
  33. 1
      sapl/compilacao/__init__.py
  34. 2
      sapl/compilacao/apps.py
  35. 2
      sapl/compilacao/forms.py
  36. 6
      sapl/compilacao/models.py
  37. 2
      sapl/compilacao/templatetags/compilacao_filters.py
  38. 2
      sapl/compilacao/tests/test_tipo_texto_articulado_form.py
  39. 78
      sapl/compilacao/urls.py
  40. 10
      sapl/compilacao/views.py
  41. 2
      sapl/context_processors.py
  42. 6
      sapl/crispy_layout_mixin.py
  43. 12
      sapl/crud/base.py
  44. 4
      sapl/crud/tests/stub_app/models.py
  45. 4
      sapl/crud/tests/stub_app/urls.py
  46. 4
      sapl/crud/urls.py
  47. 2
      sapl/decorators.py
  48. 1
      sapl/lexml/__init__.py
  49. 2
      sapl/lexml/apps.py
  50. 2
      sapl/lexml/forms.py
  51. 2
      sapl/lexml/models.py
  52. 10
      sapl/lexml/urls.py
  53. 1
      sapl/materia/__init__.py
  54. 2
      sapl/materia/apps.py
  55. 2
      sapl/materia/forms.py
  56. 2
      sapl/materia/models.py
  57. 2
      sapl/materia/tests/test_materia_form.py
  58. 102
      sapl/materia/urls.py
  59. 8
      sapl/materia/views.py
  60. 1
      sapl/norma/__init__.py
  61. 2
      sapl/norma/apps.py
  62. 2
      sapl/norma/forms.py
  63. 2
      sapl/norma/models.py
  64. 2
      sapl/norma/tests/test_norma.py
  65. 20
      sapl/norma/urls.py
  66. 6
      sapl/norma/views.py
  67. 1
      sapl/painel/__init__.py
  68. 2
      sapl/painel/apps.py
  69. 2
      sapl/painel/models.py
  70. 20
      sapl/painel/urls.py
  71. 2
      sapl/painel/views.py
  72. 1
      sapl/parlamentares/__init__.py
  73. 2
      sapl/parlamentares/apps.py
  74. 2
      sapl/parlamentares/forms.py
  75. 2
      sapl/parlamentares/models.py
  76. 2
      sapl/parlamentares/tests/test_parlamentares.py
  77. 70
      sapl/parlamentares/urls.py
  78. 2
      sapl/parlamentares/views.py
  79. 1
      sapl/protocoloadm/__init__.py
  80. 2
      sapl/protocoloadm/apps.py
  81. 2
      sapl/protocoloadm/forms.py
  82. 2
      sapl/protocoloadm/models.py
  83. 10
      sapl/protocoloadm/tests/test_protocoloadm.py
  84. 54
      sapl/protocoloadm/urls.py
  85. 6
      sapl/protocoloadm/views.py
  86. 2
      sapl/redireciona_urls/apps.py
  87. 2
      sapl/redireciona_urls/exceptions.py
  88. 44
      sapl/redireciona_urls/urls.py
  89. 1
      sapl/relatorios/__init__.py
  90. 2
      sapl/relatorios/apps.py
  91. 2
      sapl/relatorios/forms.py
  92. 60
      sapl/relatorios/urls.py
  93. 2
      sapl/relatorios/views.py
  94. 3
      sapl/rules/__init__.py
  95. 2
      sapl/rules/apps.py
  96. 4
      sapl/rules/tests/test_rules.py
  97. 1
      sapl/sessao/__init__.py
  98. 2
      sapl/sessao/apps.py
  99. 2
      sapl/sessao/forms.py
  100. 2
      sapl/sessao/models.py

4
drfautoapi/drfautoapi.py

@ -7,12 +7,12 @@ import re
from django.apps.config import AppConfig
from django.apps.registry import apps
from django.conf import settings
from django.contrib.postgres.fields.jsonb import JSONField
from django.db.models import JSONField
from django.db.models.base import ModelBase
from django.db.models.fields import TextField, CharField
from django.db.models.fields.files import FileField
from django.template.defaultfilters import capfirst
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
import django_filters
from django_filters.constants import ALL_FIELDS, EMPTY_VALUES
from django_filters.filters import CharFilter

65
requirements/requirements.txt

@ -1,43 +1,56 @@
django==2.2.28
django-haystack==3.1.1
django-filter==2.4.0
# Core
Django==3.2.25
gunicorn==23.0.0
# Search / indexing
django-haystack==3.2.1
pysolr==3.6.0
# DRF & filtering
djangorestframework==3.12.4
django-braces==1.14.0
django-crispy-forms==1.7.2
django-contrib-postgres==0.0.1
django-extra-views==0.12.0
django-model-utils==3.1.2
django-extensions==2.1.4
django-image-cropping==1.2
django-filter==2.4.0
drf-spectacular==0.18.2
# DB & config
dj-database-url==0.5.0
psycopg2-binary==2.9.9
python-decouple==3.1
# Django utilities
django-crispy-forms==1.14.0
django-braces==1.15.0
django-extra-views==0.14.0
django-model-utils==4.3.1
django-extensions==3.2.3
django-waffle==3.0.0
django-webpack-loader==1.6.0
drf-spectacular==0.18.2
django-ratelimit==3.0.1
whitenoise==5.1.0
django-prometheus==2.2.0
# Images / files / PDFs
easy-thumbnails==2.8.5
python-decouple==3.1
dj-database-url==0.5.0
psycopg2-binary==2.9.9
pyyaml==6.0.1
pytz==2019.3
python-magic==0.4.15
unipath==1.1
django-image-cropping==1.7
Pillow==10.3.0
rlPyCairo==0.3.0
reportlab==4.2.0
WeasyPrint==66
trml2pdf==0.6
gunicorn==23.0.0
more-itertools==8.2.0
pysolr==3.6.0
PyPDF4==1.27.0
#pyoai==2.5.1
git+https://github.com/infrae/pyoai@5ff2f15e869869e70d8139e4c37b7832854d7049
python-magic==0.4.15
# Other libs
pyyaml==6.0.1
pytz==2024.1
Unidecode==1.1.1
whitenoise==5.1.0
unipath==1.1
kazoo==2.8.0
django-prometheus==2.2.0
asn1crypto==1.5.1
XlsxWriter==3.2.0
more-itertools==8.2.0
# OAI (fork/commit you already use)
git+https://github.com/infrae/pyoai@5ff2f15e869869e70d8139e4c37b7832854d7049
# Project-specific forks
git+https://github.com/interlegis/django-admin-bootstrapped

1
sapl/api/__init__.py

@ -1 +0,0 @@
default_app_config = 'sapl.api.apps.AppConfig'

2
sapl/api/apps.py

@ -1,5 +1,5 @@
from django import apps
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig):

2
sapl/api/forms.py

@ -2,7 +2,7 @@ import logging
from django.db.models import Q
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from django_filters.filters import CharFilter, DateFilter, ModelChoiceFilter
from django_filters.filterset import FilterSet
from rest_framework import serializers

18
sapl/api/urls.py

@ -1,5 +1,5 @@
from django.conf.urls import include, url
from django.urls import include, path, re_path
from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView, \
SpectacularRedocView
from rest_framework.authtoken.views import obtain_auth_token
@ -25,20 +25,20 @@ router.register(r'sessao-plenaria', SessaoPlenariaViewSet,
urlpatterns_router = router.urls
urlpatterns_api_doc = [
url('^schema/swagger-ui/',
re_path('^schema/swagger-ui/',
SpectacularSwaggerView.as_view(url_name='sapl.api:schema_api'),
name='swagger_ui_schema_api'),
url('^schema/redoc/',
re_path('^schema/redoc/',
SpectacularRedocView.as_view(url_name='sapl.api:schema_api'),
name='redoc_schema_api'),
url('^schema/', SpectacularAPIView.as_view(), name='schema_api'),
re_path('^schema/', SpectacularAPIView.as_view(), name='schema_api'),
]
urlpatterns = [
url(r'^api/', include(urlpatterns_api_doc)),
url(r'^api/', include(urlpatterns_router)),
path('api/', include(urlpatterns_api_doc)),
path('api/', include(urlpatterns_router)),
url(r'^api/version', AppVersionView.as_view()),
url(r'^api/auth/token$', obtain_auth_token),
url(r'^api/recriar-token/(?P<pk>\d*)$', recria_token, name="recria_token"),
re_path(r'^api/version', AppVersionView.as_view()),
path('api/auth/token', obtain_auth_token),
re_path(r'^api/recriar-token/(?P<pk>\d*)$', recria_token, name="recria_token"),
]

1
sapl/audiencia/__init__.py

@ -1 +0,0 @@
default_app_config = 'sapl.audiencia.apps.AppConfig'

2
sapl/audiencia/apps.py

@ -1,5 +1,5 @@
from django import apps
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig):

2
sapl/audiencia/forms.py

@ -5,7 +5,7 @@ from datetime import datetime
from django import forms
from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.db import transaction
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from crispy_forms.layout import Button, Column, Fieldset, HTML, Layout

2
sapl/audiencia/models.py

@ -1,6 +1,6 @@
from django.db import models
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from model_utils import Choices
from sapl.materia.models import MateriaLegislativa
from sapl.parlamentares.models import (CargoMesa, Parlamentar)

2
sapl/audiencia/tests/test_audiencia.py

@ -1,7 +1,7 @@
import pytest
import datetime
from model_bakery import baker
from django.utils.translation import ugettext as _
from django.utils.translation import gettext as _
from sapl.audiencia import forms
from sapl.audiencia.models import AnexoAudienciaPublica

4
sapl/audiencia/urls.py

@ -1,4 +1,4 @@
from django.conf.urls import include, url
from django.urls import include, path
from sapl.audiencia.views import (index, AudienciaCrud, AnexoAudienciaPublicaCrud)
from .apps import AppConfig
@ -6,5 +6,5 @@ from .apps import AppConfig
app_name = AppConfig.name
urlpatterns = [
url(r'^audiencia/', include(AudienciaCrud.get_urls() + AnexoAudienciaPublicaCrud.get_urls())),
path('audiencia/', include(AudienciaCrud.get_urls() + AnexoAudienciaPublicaCrud.get_urls())),
]

1
sapl/base/__init__.py

@ -1 +0,0 @@
default_app_config = 'sapl.base.apps.AppConfig'

2
sapl/base/admin.py

@ -1,6 +1,6 @@
from django.contrib import admin
from django.shortcuts import redirect
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from sapl.base.models import AuditLog
from sapl.utils import register_all_models_in_admin

2
sapl/base/apps.py

@ -1,6 +1,6 @@
import django
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class AppConfig(django.apps.AppConfig):

2
sapl/base/email_utils.py

@ -11,7 +11,7 @@ from sapl.materia.models import AcompanhamentoMateria
from sapl.protocoloadm.models import AcompanhamentoDocumento
from sapl.settings import EMAIL_SEND_USER
from sapl.utils import mail_service_configured
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
def load_email_templates(templates, context={}):

2
sapl/base/forms.py

@ -16,7 +16,7 @@ from django.db.models import Q
from django.forms import Form, ModelForm
from django.utils import timezone
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
import django_filters
from haystack.forms import ModelSearchForm

4
sapl/base/models.py

@ -1,13 +1,13 @@
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
from django.contrib.postgres.fields.jsonb import JSONField
from django.db.models import JSONField
from django.core.cache import cache
from django.core.serializers.json import DjangoJSONEncoder
from django.db import models
from django.db.models.deletion import CASCADE
from django.db.models.signals import post_migrate
from django.db.utils import DEFAULT_DB_ALIAS
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from sapl.utils import (LISTA_DE_UFS, YES_NO_CHOICES,
get_settings_auth_user_model, models_with_gr_for_model)

2
sapl/base/receivers.py

@ -14,7 +14,7 @@ from django.db.models.signals import post_delete, post_save, \
from django.db.utils import DEFAULT_DB_ALIAS
from django.dispatch import receiver
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from sapl.base.email_utils import do_envia_email_tramitacao
from sapl.base.models import AuditLog, TipoAutor, Autor, Metadata

2
sapl/base/templatetags/menus.py

@ -2,7 +2,7 @@ import logging
from django import template
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
import yaml

2
sapl/base/tests/test_form.py

@ -1,5 +1,5 @@
import pytest
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from sapl.base.forms import CasaLegislativaForm

2
sapl/base/tests/test_view_base.py

@ -2,7 +2,7 @@ import pytest
from model_bakery import baker
import datetime
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from model_bakery import baker
from sapl.base.models import Autor, TipoAutor

4
sapl/base/tests/teststub_urls.py

@ -1,9 +1,9 @@
from django.conf.urls import url
from django.urls import path
from django.views.generic.base import TemplateView
from sapl.urls import urlpatterns as original_patterns
ptrn = [url(r'^zzzz$',
ptrn = [path('zzzz',
TemplateView.as_view(
template_name='index.html'), name='zzzz')]
urlpatterns = original_patterns + ptrn

76
sapl/base/urls.py

@ -1,6 +1,6 @@
import os
from django.conf.urls import include, url
from django.urls import include, path, re_path
from django.contrib.auth import views
from django.contrib.auth.decorators import permission_required
from django.views.generic.base import RedirectView, TemplateView
@ -23,114 +23,114 @@ from .views import (LoginSapl, AlterarSenha, AppConfigCrud, CasaLegislativaCrud,
app_name = AppConfig.name
admin_user = [
url(r'^sistema/usuario/', include(UserCrud.get_urls())),
path('sistema/usuario/', include(UserCrud.get_urls())),
]
alterar_senha = [
url(r'^sistema/alterar-senha/$',
path('sistema/alterar-senha/',
AlterarSenha.as_view(),
name='alterar_senha'),
]
recuperar_senha = [
url(r'^recuperar-senha/email/$', RecuperarSenhaEmailView.as_view(),
path('recuperar-senha/email/', RecuperarSenhaEmailView.as_view(),
name='recuperar_senha_email'),
url(r'^recuperar-senha/finalizado/$',
path('recuperar-senha/finalizado/',
RecuperarSenhaFinalizadoView.as_view(), name='recuperar_senha_finalizado'),
url(r'^recuperar-senha/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$', RecuperarSenhaConfirmaView.as_view(),
re_path(r'^recuperar-senha/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$', RecuperarSenhaConfirmaView.as_view(),
name='recuperar_senha_confirma'),
url(r'^recuperar-senha/completo/$',
path('recuperar-senha/completo/',
RecuperarSenhaCompletoView.as_view(), name='recuperar_senha_completo'),
]
urlpatterns = [
url(r'^$', IndexView.as_view(template_name='index.html'), name='sapl_index'),
path('', IndexView.as_view(template_name='index.html'), name='sapl_index'),
url(r'^sistema/autor/tipo/', include(TipoAutorCrud.get_urls())),
url(r'^sistema/autor/', include(AutorCrud.get_urls())),
path('sistema/autor/tipo/', include(TipoAutorCrud.get_urls())),
path('sistema/autor/', include(AutorCrud.get_urls())),
url(r'^sistema/ajuda/(?P<topic>\w+)$',
re_path(r'^sistema/ajuda/(?P<topic>\w+)$',
HelpTopicView.as_view(), name='help_topic'),
url(r'^sistema/ajuda/$', TemplateView.as_view(template_name='ajuda.html'),
path('sistema/ajuda/', TemplateView.as_view(template_name='ajuda.html'),
name='help'),
url(r'^sistema/casa-legislativa/', include(CasaLegislativaCrud.get_urls()),
path('sistema/casa-legislativa/', include(CasaLegislativaCrud.get_urls()),
name="casa_legislativa"),
url(r'^sistema/app-config/', include(AppConfigCrud.get_urls())),
path('sistema/app-config/', include(AppConfigCrud.get_urls())),
url(r'^email/validate/(?P<uidb64>[0-9A-Za-z_\-]+)/'
re_path(r'^email/validate/(?P<uidb64>[0-9A-Za-z_\-]+)/'
'(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})$',
ConfirmarEmailView.as_view(), name='confirmar_email'),
url(r'^sistema/inconsistencias/$',
path('sistema/inconsistencias/',
ListarInconsistenciasView.as_view(),
name='lista_inconsistencias'),
url(r'^sistema/inconsistencias/protocolos_duplicados$',
path('sistema/inconsistencias/protocolos_duplicados',
ListarProtocolosDuplicadosView.as_view(),
name='lista_protocolos_duplicados'),
url(r'^sistema/inconsistencias/protocolos_com_materias$',
path('sistema/inconsistencias/protocolos_com_materias',
ListarProtocolosComMateriasView.as_view(),
name='lista_protocolos_com_materias'),
url(r'^sistema/inconsistencias/materias_protocolo_inexistente$',
path('sistema/inconsistencias/materias_protocolo_inexistente',
ListarMatProtocoloInexistenteView.as_view(),
name='lista_materias_protocolo_inexistente'),
url(r'^sistema/inconsistencias/filiacoes_sem_data_filiacao$',
path('sistema/inconsistencias/filiacoes_sem_data_filiacao',
ListarFiliacoesSemDataFiliacaoView.as_view(),
name='lista_filiacoes_sem_data_filiacao'),
url(r'^sistema/inconsistencias/mandato_sem_data_inicio',
re_path(r'^sistema/inconsistencias/mandato_sem_data_inicio',
ListarMandatoSemDataInicioView.as_view(),
name='lista_mandato_sem_data_inicio'),
url(r'^sistema/inconsistencias/parlamentares_duplicados$',
path('sistema/inconsistencias/parlamentares_duplicados',
ListarParlamentaresDuplicadosView.as_view(),
name='lista_parlamentares_duplicados'),
url(r'^sistema/inconsistencias/parlamentares_mandatos_intersecao$',
path('sistema/inconsistencias/parlamentares_mandatos_intersecao',
ListarParlMandatosIntersecaoView.as_view(),
name='lista_parlamentares_mandatos_intersecao'),
url(r'^sistema/inconsistencias/parlamentares_filiacoes_intersecao$',
path('sistema/inconsistencias/parlamentares_filiacoes_intersecao',
ListarParlFiliacoesIntersecaoView.as_view(),
name='lista_parlamentares_filiacoes_intersecao'),
url(r'^sistema/inconsistencias/autores_duplicados$',
path('sistema/inconsistencias/autores_duplicados',
ListarAutoresDuplicadosView.as_view(),
name='lista_autores_duplicados'),
url(r'^sistema/inconsistencias/bancada_comissao_autor_externo$',
path('sistema/inconsistencias/bancada_comissao_autor_externo',
ListarBancadaComissaoAutorExternoView.as_view(),
name='lista_bancada_comissao_autor_externo'),
url(r'^sistema/inconsistencias/legislatura_infindavel$',
path('sistema/inconsistencias/legislatura_infindavel',
ListarLegislaturaInfindavelView.as_view(),
name='lista_legislatura_infindavel'),
url(r'sistema/inconsistencias/anexadas_ciclicas$',
path('sistema/inconsistencias/anexadas_ciclicas',
ListarAnexadasCiclicasView.as_view(),
name='lista_anexadas_ciclicas'),
url(r'sistema/inconsistencias/anexados_ciclicos$',
path('sistema/inconsistencias/anexados_ciclicos',
ListarAnexadosCiclicosView.as_view(),
name='lista_anexados_ciclicos'),
url(r'^sistema/pesquisa-textual',
re_path(r'^sistema/pesquisa-textual',
pesquisa_textual,
name='pesquisa_textual'),
url(r'^sistema/estatisticas', get_estatistica),
re_path(r'^sistema/estatisticas', get_estatistica),
# todos os sublinks de sistema devem vir acima deste
url(r'^sistema/$', permission_required('base.view_tabelas_auxiliares')
path('sistema/', permission_required('base.view_tabelas_auxiliares')
(TemplateView.as_view(template_name='sistema.html')),
name='sistema'),
url(r'^login/$', LoginSapl.as_view(), name='login'),
url(r'^logout/$', views.LogoutView.as_view(),
path('login/', LoginSapl.as_view(), name='login'),
path('logout/', views.LogoutView.as_view(),
{'next_page': LOGOUT_REDIRECT_URL}, name='logout'),
url(r'^sistema/search/', SaplSearchView(), name='haystack_search'),
re_path(r'^sistema/search/', SaplSearchView(), name='haystack_search'),
url(r'^sistema/auditlog/$', PesquisarAuditLogView.as_view(), name='pesquisar_auditlog'),
path('sistema/auditlog/', PesquisarAuditLogView.as_view(), name='pesquisar_auditlog'),
# Folhas XSLT e extras referenciadas por documentos migrados do sapl 2.5
url(r'^(sapl/)?XSLT/HTML/(?P<path>.*)$', RedirectView.as_view(
re_path(r'^(sapl/)?XSLT/HTML/(?P<path>.*)$', RedirectView.as_view(
url=os.path.join(MEDIA_URL, 'sapl/public/XSLT/HTML/%(path)s'),
permanent=False)),
# url do logotipo usada em documentos migrados do sapl 2.5
url(r'^(sapl/)?sapl_documentos/props_sapl/logo_casa',
re_path(r'^(sapl/)?sapl_documentos/props_sapl/logo_casa',
LogotipoView.as_view(), name='logotipo'),

6
sapl/base/views.py

@ -24,7 +24,7 @@ from django.utils import timezone
from django.utils.decorators import method_decorator
from django.utils.encoding import force_bytes
from django.utils.http import urlsafe_base64_decode, urlsafe_base64_encode
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from django.views.generic import (FormView, ListView)
from django.views.generic.base import RedirectView, TemplateView
from django_filters.views import FilterView
@ -118,7 +118,7 @@ class RecuperarSenhaEmailView(PasswordResetView):
if not google_recaptcha_configured():
self.logger.warning(_('Google Recaptcha não configurado!'))
messages.error(request, _('Google Recaptcha não configurado!'))
return redirect(request.META.get('HTTP_REFERER', '/'))
return redirect(request.headers.get('referer', '/'))
return PasswordResetView.get(self, request, *args, **kwargs)
@ -127,7 +127,7 @@ class RecuperarSenhaEmailView(PasswordResetView):
if not google_recaptcha_configured():
self.logger.warning(_('Google Recaptcha não configurado!'))
messages.error(request, _('Google Recaptcha não configurado!'))
return redirect(request.META.get('HTTP_REFERER', '/'))
return redirect(request.headers.get('referer', '/'))
return PasswordResetView.post(self, request, *args, **kwargs)

1
sapl/comissoes/__init__.py

@ -1 +0,0 @@
default_app_config = 'sapl.comissoes.apps.AppConfig'

2
sapl/comissoes/apps.py

@ -1,5 +1,5 @@
from django import apps
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig):

2
sapl/comissoes/forms.py

@ -9,7 +9,7 @@ from django.core.exceptions import ValidationError
from django.db import transaction
from django.db.models import Q
from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from django.utils import timezone
from sapl.base.models import Autor, TipoAutor

2
sapl/comissoes/models.py

@ -1,5 +1,5 @@
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from model_utils import Choices
from sapl.base.models import Autor

2
sapl/comissoes/tests/test_comissoes.py

@ -1,6 +1,6 @@
import pytest
from django.urls import reverse
from django.utils.translation import ugettext as _
from django.utils.translation import gettext as _
from model_bakery import baker
from sapl.comissoes.models import Comissao, Composicao, Periodo

18
sapl/comissoes/urls.py

@ -1,4 +1,4 @@
from django.conf.urls import include, url
from django.urls import include, path, re_path
from sapl.comissoes.views import (AdicionaPautaView, CargoComissaoCrud, ComissaoCrud,
ComposicaoCrud, DocumentoAcessorioCrud,
MateriasTramitacaoListView, ParticipacaoCrud,
@ -10,21 +10,21 @@ from .apps import AppConfig
app_name = AppConfig.name
urlpatterns = [
url(r'^comissao/', include(ComissaoCrud.get_urls() +
path('comissao/', include(ComissaoCrud.get_urls() +
ComposicaoCrud.get_urls() +
ReuniaoCrud.get_urls() +
ParticipacaoCrud.get_urls() +
DocumentoAcessorioCrud.get_urls())),
url(r'^comissao/(?P<pk>\d+)/materias-em-tramitacao$',
path('comissao/<int:pk>/materias-em-tramitacao',
MateriasTramitacaoListView.as_view(), name='materias_em_tramitacao'),
url(r'^comissao/(?P<pk>\d+)/pauta/add', AdicionaPautaView.as_view(), name='pauta_add'),
url(r'^comissao/(?P<pk>\d+)/pauta/remove', RemovePautaView.as_view(), name='pauta_remove'),
re_path(r'^comissao/(?P<pk>\d+)/pauta/add', AdicionaPautaView.as_view(), name='pauta_add'),
re_path(r'^comissao/(?P<pk>\d+)/pauta/remove', RemovePautaView.as_view(), name='pauta_remove'),
url(r'^sistema/comissao/cargo/', include(CargoComissaoCrud.get_urls())),
url(r'^sistema/comissao/periodo-composicao/',
path('sistema/comissao/cargo/', include(CargoComissaoCrud.get_urls())),
path('sistema/comissao/periodo-composicao/',
include(PeriodoComposicaoCrud.get_urls())),
url(r'^sistema/comissao/tipo/', include(TipoComissaoCrud.get_urls())),
url(r'^sistema/comissao/recupera-participacoes', get_participacoes_comissao),
path('sistema/comissao/tipo/', include(TipoComissaoCrud.get_urls())),
re_path(r'^sistema/comissao/recupera-participacoes', get_participacoes_comissao),
]

2
sapl/comissoes/views.py

@ -10,7 +10,7 @@ from django.views.generic import CreateView, DeleteView, FormView, ListView
from django.views.generic.base import RedirectView
from django.views.generic.detail import DetailView
from django.views.generic.edit import FormMixin, UpdateView
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from django_filters.views import FilterView

1
sapl/compilacao/__init__.py

@ -1 +0,0 @@
default_app_config = 'sapl.compilacao.apps.AppConfig'

2
sapl/compilacao/apps.py

@ -3,7 +3,7 @@ from django import apps
from django.conf import settings
from django.db import connection, models
from django.db.utils import DEFAULT_DB_ALIAS, IntegrityError
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig):

2
sapl/compilacao/forms.py

@ -12,7 +12,7 @@ from django.forms import widgets
from django.forms.forms import Form
from django.forms.models import ModelForm
from django.template import defaultfilters
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from image_cropping.widgets import CropWidget, ImageCropWidget
from model_utils.choices import Choices

6
sapl/compilacao/models.py

@ -9,8 +9,8 @@ from django.http.response import Http404
from django.template import defaultfilters
from django.utils import timezone
from django.utils.decorators import classonlymethod
from django.utils.encoding import force_text
from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import force_str
from django.utils.translation import gettext_lazy as _
from image_cropping.fields import ImageCropField, ImageRatioField
from sapl.compilacao.utils import (get_integrations_view_names, int_to_letter,
@ -952,7 +952,7 @@ def imagem_upload_path(instance, filename):
class Dispositivo(BaseModel, TimestampedMixin):
TEXTO_PADRAO_DISPOSITIVO_REVOGADO = force_text(_('(Revogado)'))
TEXTO_PADRAO_DISPOSITIVO_REVOGADO = force_str(_('(Revogado)'))
INTERVALO_ORDEM = 1000
ordem = models.PositiveIntegerField(

2
sapl/compilacao/templatetags/compilacao_filters.py

@ -3,7 +3,7 @@ from django import template
from django.core.signing import Signer
from django.db.models import Q
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from sapl.compilacao.models import Dispositivo

2
sapl/compilacao/tests/test_tipo_texto_articulado_form.py

@ -1,5 +1,5 @@
import pytest
from django.utils.translation import ugettext as _
from django.utils.translation import gettext as _
from model_bakery import baker
from sapl.compilacao import forms

78
sapl/compilacao/urls.py

@ -1,4 +1,4 @@
from django.conf.urls import include, url
from django.urls import include, path, re_path
from sapl.compilacao import views
from sapl.compilacao.views import (TipoDispositivoCrud, TipoNotaCrud,
@ -11,92 +11,86 @@ from .apps import AppConfig
app_name = AppConfig.name
urlpatterns_compilacao = [
url(r'^$', views.TaListView.as_view(), name='ta_list'),
url(r'^create$', views.TaCreateView.as_view(), name='ta_create'),
url(r'^(?P<pk>[0-9]+)$', views.TaDetailView.as_view(), name='ta_detail'),
url(r'^(?P<pk>[0-9]+)/edit$',
path('', views.TaListView.as_view(), name='ta_list'),
path('create', views.TaCreateView.as_view(), name='ta_create'),
path('<int:pk>', views.TaDetailView.as_view(), name='ta_detail'),
path('<int:pk>/edit',
views.TaUpdateView.as_view(), name='ta_edit'),
url(r'^(?P<pk>[0-9]+)/delete$',
path('<int:pk>/delete',
views.TaDeleteView.as_view(), name='ta_delete'),
url(r'^(?P<ta_id>[0-9]+)/text$',
path('<int:ta_id>/text',
views.TextView.as_view(), name='ta_text'),
url(r'^(?P<ta_id>[0-9]+)/text/vigencia/(?P<sign>.*:[A-Za-z0-9_-]+)/$',
re_path(r'^(?P<ta_id>[0-9]+)/text/vigencia/(?P<sign>.*:[A-Za-z0-9_-]+)/$',
views.TextView.as_view(), name='ta_vigencia'),
url(r'^(?P<ta_id>[0-9]+)/text/edit',
re_path(r'^(?P<ta_id>[0-9]+)/text/edit',
views.TextEditView.as_view(), name='ta_text_edit'),
url(r'^(?P<ta_id>[0-9]+)/text/notifications',
re_path(r'^(?P<ta_id>[0-9]+)/text/notifications',
views.TextNotificacoesView.as_view(), name='ta_text_notificacoes'),
url(r'^(?P<ta_id>[0-9]+)/text/(?P<dispositivo_id>[0-9]+)/$',
path('<int:ta_id>/text/<int:dispositivo_id>/',
views.DispositivoView.as_view(), name='dispositivo'),
url(r'^(?P<ta_id>[0-9]+)/text/(?P<dispositivo_id>[0-9]+)/refresh',
re_path(r'^(?P<ta_id>[0-9]+)/text/(?P<dispositivo_id>[0-9]+)/refresh',
views.DispositivoDinamicEditView.as_view(),
name='dispositivo_refresh'),
url(r'^(?P<ta_id>[0-9]+)/text/(?P<pk>[0-9]+)/edit$',
path('<int:ta_id>/text/<int:pk>/edit',
views.DispositivoEdicaoBasicaView.as_view(), name='dispositivo_edit'),
url(r'^(?P<ta_id>[0-9]+)/text/(?P<pk>[0-9]+)/edit/vigencia',
re_path(r'^(?P<ta_id>[0-9]+)/text/(?P<pk>[0-9]+)/edit/vigencia',
views.DispositivoEdicaoVigenciaView.as_view(),
name='dispositivo_edit_vigencia'),
url(r'^(?P<ta_id>[0-9]+)/text/(?P<pk>[0-9]+)/edit/alteracao',
re_path(r'^(?P<ta_id>[0-9]+)/text/(?P<pk>[0-9]+)/edit/alteracao',
views.DispositivoEdicaoAlteracaoView.as_view(),
name='dispositivo_edit_alteracao'),
url(r'^(?P<ta_id>[0-9]+)/text/(?P<pk>[0-9]+)/edit/definidor_vigencia',
re_path(r'^(?P<ta_id>[0-9]+)/text/(?P<pk>[0-9]+)/edit/definidor_vigencia',
views.DispositivoDefinidorVigenciaView.as_view(),
name='dispositivo_edit_definidor_vigencia'),
url(r'^(?P<ta_id>[0-9]+)/text/'
'(?P<dispositivo_id>[0-9]+)/nota/create$',
path('<int:ta_id>/text/<int:dispositivo_id>/nota/create',
views.NotasCreateView.as_view(), name='nota_create'),
url(r'^(?P<ta_id>[0-9]+)/text/'
'(?P<dispositivo_id>[0-9]+)/nota/(?P<pk>[0-9]+)/edit$',
path('<int:ta_id>/text/<int:dispositivo_id>/nota/<int:pk>/edit',
views.NotasEditView.as_view(), name='nota_edit'),
url(r'^(?P<ta_id>[0-9]+)/text/'
'(?P<dispositivo_id>[0-9]+)/nota/(?P<pk>[0-9]+)/delete$',
path('<int:ta_id>/text/<int:dispositivo_id>/nota/<int:pk>/delete',
views.NotasDeleteView.as_view(), name='nota_delete'),
url(r'^(?P<ta_id>[0-9]+)/text/'
'(?P<dispositivo_id>[0-9]+)/vide/create$',
path('<int:ta_id>/text/<int:dispositivo_id>/vide/create',
views.VideCreateView.as_view(), name='vide_create'),
url(r'^(?P<ta_id>[0-9]+)/text/'
'(?P<dispositivo_id>[0-9]+)/vide/(?P<pk>[0-9]+)/edit$',
path('<int:ta_id>/text/<int:dispositivo_id>/vide/<int:pk>/edit',
views.VideEditView.as_view(), name='vide_edit'),
url(r'^(?P<ta_id>[0-9]+)/text/'
'(?P<dispositivo_id>[0-9]+)/vide/(?P<pk>[0-9]+)/delete$',
path('<int:ta_id>/text/<int:dispositivo_id>/vide/<int:pk>/delete',
views.VideDeleteView.as_view(), name='vide_delete'),
url(r'^search_fragment_form$',
path('search_fragment_form',
views.DispositivoSearchFragmentFormView.as_view(),
name='dispositivo_fragment_form'),
url(r'^search_form$',
path('search_form',
views.DispositivoSearchModalView.as_view(),
name='dispositivo_search_form'),
url(r'^(?P<ta_id>[0-9]+)/publicacao$',
path('<int:ta_id>/publicacao',
views.PublicacaoListView.as_view(), name='ta_pub_list'),
url(r'^(?P<ta_id>[0-9]+)/publicacao/create$',
path('<int:ta_id>/publicacao/create',
views.PublicacaoCreateView.as_view(), name='ta_pub_create'),
url(r'^(?P<ta_id>[0-9]+)/publicacao/(?P<pk>[0-9]+)$',
path('<int:ta_id>/publicacao/<int:pk>',
views.PublicacaoDetailView.as_view(), name='ta_pub_detail'),
url(r'^(?P<ta_id>[0-9]+)/publicacao/(?P<pk>[0-9]+)/edit$',
path('<int:ta_id>/publicacao/<int:pk>/edit',
views.PublicacaoUpdateView.as_view(), name='ta_pub_edit'),
url(r'^(?P<ta_id>[0-9]+)/publicacao/(?P<pk>[0-9]+)/delete$',
path('<int:ta_id>/publicacao/<int:pk>/delete',
views.PublicacaoDeleteView.as_view(), name='ta_pub_delete'),
@ -104,19 +98,19 @@ urlpatterns_compilacao = [
]
urlpatterns = [
url(r'^ta/', include(urlpatterns_compilacao)),
path('ta/', include(urlpatterns_compilacao)),
url(r'^sistema/ta/config/tipo-nota/',
path('sistema/ta/config/tipo-nota/',
include(TipoNotaCrud.get_urls())),
url(r'^sistema/ta/config/tipo-vide/',
path('sistema/ta/config/tipo-vide/',
include(TipoVideCrud.get_urls())),
url(r'^sistema/ta/config/tipo-publicacao/',
path('sistema/ta/config/tipo-publicacao/',
include(TipoPublicacaoCrud.get_urls())),
url(r'^sistema/ta/config/veiculo-publicacao/',
path('sistema/ta/config/veiculo-publicacao/',
include(VeiculoPublicacaoCrud.get_urls())),
url(r'^sistema/ta/config/tipo/',
path('sistema/ta/config/tipo/',
include(TipoTextoArticuladoCrud.get_urls())),
url(r'^sistema/ta/config/tipodispositivo/',
path('sistema/ta/config/tipodispositivo/',
include(TipoDispositivoCrud.get_urls())),

10
sapl/compilacao/views.py

@ -21,8 +21,8 @@ from django.http.response import (HttpResponse, HttpResponseRedirect,
from django.shortcuts import get_object_or_404, redirect
from django.urls import reverse, reverse_lazy
from django.utils.dateparse import parse_date
from django.utils.encoding import force_text
from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import force_str
from django.utils.translation import gettext_lazy as _
from django.views.generic.base import TemplateView
from django.views.generic.detail import DetailView
from django.views.generic.edit import (CreateView, DeleteView, FormView,
@ -1975,18 +1975,18 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
result = [
{
'tipo_insert': force_text("{} {}".format(_('Inserir Após'), base.tipo_dispositivo.nome)),
'tipo_insert': force_str("{} {}".format(_('Inserir Após'), base.tipo_dispositivo.nome)),
'icone': '&#8631;&nbsp;',
'action': 'json_add_next',
'itens': []},
{
'tipo_insert': force_text("{} {}".format(_('Inserir em'), base.tipo_dispositivo.nome)),
'tipo_insert': force_str("{} {}".format(_('Inserir em'), base.tipo_dispositivo.nome)),
'icone': '&#8690;&nbsp;',
'action': 'json_add_in',
'itens': []
},
{
'tipo_insert': force_text(_('Inserir Antes')),
'tipo_insert': force_str(_('Inserir Antes')),
'icone': '&#8630;&nbsp;',
'action': 'json_add_prior',
'itens': []

2
sapl/context_processors.py

@ -1,6 +1,6 @@
import logging
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from sapl.utils import google_recaptcha_configured as \
google_recaptcha_configured_utils, sapn_is_enabled, cached_call, get_base_url

6
sapl/crispy_layout_mixin.py

@ -7,8 +7,8 @@ from django import template
from django.contrib.contenttypes.models import ContentType
from django.urls import reverse, reverse_lazy
from django.utils import formats
from django.utils.encoding import force_text
from django.utils.translation import ugettext as _
from django.utils.encoding import force_str
from django.utils.translation import gettext as _
import yaml
@ -40,7 +40,7 @@ def form_actions(more=[Div(css_class='clearfix')],
label=_('Salvar'), name='salvar',
css_class='float-right', disabled=True):
if disabled and force_text(label) != 'Pesquisar':
if disabled and force_str(label) != 'Pesquisar':
doubleclick = 'this.form.submit();this.disabled=true;'
else:
doubleclick = 'return true;'

12
sapl/crud/base.py

@ -5,7 +5,7 @@ from crispy_forms.bootstrap import FieldWithButtons, StrictButton
from crispy_forms.layout import Field, Layout
from django import forms
from django.conf import settings
from django.conf.urls import url
from django.urls import re_path
from django.contrib import messages
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.core.exceptions import ObjectDoesNotExist
@ -15,8 +15,8 @@ from django.http.response import Http404
from django.shortcuts import redirect
from django.urls import reverse
from django.utils.decorators import classonlymethod
from django.utils.encoding import force_text
from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import force_str
from django.utils.translation import gettext_lazy as _
from django.views.generic import (CreateView, DeleteView, DetailView, ListView,
UpdateView)
from django.views.generic.base import ContextMixin
@ -433,9 +433,9 @@ class CrudListView(PermissionRequiredContainerCrudMixin, ListView):
hook = 'hook_header_{}'.format(''.join(fn))
if hasattr(self, hook):
header = getattr(self, hook)()
s.append(force_text(header))
s.append(force_str(header))
else:
s.append(force_text(f.verbose_name))
s.append(force_str(f.verbose_name))
else:
hook = 'hook_header_{}'.format(''.join(fn))
if hasattr(self, hook):
@ -1029,7 +1029,7 @@ class Crud:
if crud[0]:
cruds.append(crud)
return [url(regex, view.as_view(), name=view.url_name(suffix))
return [re_path(regex, view.as_view(), name=view.url_name(suffix))
for regex, view, suffix in cruds]
@classonlymethod

4
sapl/crud/tests/stub_app/models.py

@ -10,7 +10,7 @@ class Continent(models.Model):
class Country(models.Model):
name = models.CharField(max_length=50)
continent = models.ForeignKey(Continent)
continent = models.ForeignKey(Continent, on_delete=models.CASCADE)
is_cold = models.BooleanField(choices=[(True, 'Yes'), (False, 'No')])
population = models.PositiveIntegerField(blank=True, null=True)
description = models.TextField(blank=True)
@ -25,4 +25,4 @@ class Country(models.Model):
class City(models.Model):
name = models.CharField(max_length=50)
country = models.ForeignKey(Country)
country = models.ForeignKey(Country, on_delete=models.CASCADE)

4
sapl/crud/tests/stub_app/urls.py

@ -1,8 +1,8 @@
from django.conf.urls import include, url
from django.urls import include, path
from .views import CityCrud, CountryCrud
urlpatterns = [
url(r'^country/', include(
path('country/', include(
CountryCrud.get_urls() + CityCrud.get_urls(), 'stub_app')),
]

4
sapl/crud/urls.py

@ -1,5 +1,5 @@
from django.conf.urls import include, url
from django.urls import include, path
urlpatterns = [
url(r'', include('stub_app.urls')),
path('', include('stub_app.urls')),
]

2
sapl/decorators.py

@ -1,7 +1,7 @@
from functools import wraps
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
def vigencia_atual(decorated_method):

1
sapl/lexml/__init__.py

@ -1 +0,0 @@
default_app_config = 'sapl.lexml.apps.AppConfig'

2
sapl/lexml/apps.py

@ -1,5 +1,5 @@
from django import apps
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig):

2
sapl/lexml/forms.py

@ -1,7 +1,7 @@
from django.core.exceptions import ValidationError
from django.forms import ModelForm
from sapl.settings import PROJECT_DIR
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from io import StringIO
from lxml import etree

2
sapl/lexml/models.py

@ -1,5 +1,5 @@
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class LexmlProvedor(models.Model): # LexmlRegistroProvedor

10
sapl/lexml/urls.py

@ -1,4 +1,4 @@
from django.conf.urls import include, url
from django.urls import include, path, re_path
from sapl.lexml.views import LexmlProvedorCrud, LexmlPublicadorCrud, lexml_request, request_search
@ -7,11 +7,11 @@ from .apps import AppConfig
app_name = AppConfig.name
urlpatterns = [
url(r'^sistema/lexml/provedor/',
path('sistema/lexml/provedor/',
include(LexmlProvedorCrud.get_urls())),
url(r'^sistema/lexml/publicador/',
path('sistema/lexml/publicador/',
include(LexmlPublicadorCrud.get_urls())),
url(r'^sistema/lexml/request_search/(?P<keyword>[\w\-]+)/', request_search, name='lexml_search'),
url(r'^sistema/lexml/oai', lexml_request, name='lexml_endpoint'),
re_path(r'^sistema/lexml/request_search/(?P<keyword>[\w\-]+)/', request_search, name='lexml_search'),
re_path(r'^sistema/lexml/oai', lexml_request, name='lexml_endpoint'),
]

1
sapl/materia/__init__.py

@ -1 +0,0 @@
default_app_config = 'sapl.materia.apps.AppConfig'

2
sapl/materia/apps.py

@ -1,5 +1,5 @@
from django import apps
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig):

2
sapl/materia/forms.py

@ -15,7 +15,7 @@ from django.forms.models import ModelMultipleChoiceField
from django.forms.widgets import CheckboxSelectMultiple, HiddenInput, Select
from django.urls import reverse
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
import django_filters
from sapl.base.models import AppConfig as BaseAppConfig, Autor, TipoAutor

2
sapl/materia/models.py

@ -7,7 +7,7 @@ from django.db import models
from django.db.models.functions import Concat
from django.template import defaultfilters
from django.utils import formats, timezone
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from model_utils import Choices
from sapl.base.models import SEQUENCIA_NUMERACAO_PROTOCOLO, Autor

2
sapl/materia/tests/test_materia_form.py

@ -1,5 +1,5 @@
import pytest
from django.utils.translation import ugettext as _
from django.utils.translation import gettext as _
from model_bakery import baker
from sapl.comissoes.models import Comissao, TipoComissao

102
sapl/materia/urls.py

@ -1,4 +1,4 @@
from django.conf.urls import include, url
from django.urls import include, path, re_path
from sapl.materia.views import (AcompanhamentoConfirmarView,
AcompanhamentoExcluirView,
@ -42,28 +42,28 @@ from .apps import AppConfig
app_name = AppConfig.name
urlpatterns_impressos = [
url(r'^materia/impressos/$',
path('materia/impressos/',
ImpressosView.as_view(),
name='impressos'),
url(r'^materia/impressos/etiqueta-pesquisa/$',
path('materia/impressos/etiqueta-pesquisa/',
EtiquetaPesquisaView.as_view(),
name='impressos_etiqueta'),
url(r'^materia/impressos/ficha-pesquisa/$',
path('materia/impressos/ficha-pesquisa/',
FichaPesquisaView.as_view(),
name='impressos_ficha_pesquisa'),
url(r'^materia/impressos/ficha-seleciona/$',
path('materia/impressos/ficha-seleciona/',
FichaSelecionaView.as_view(),
name='impressos_ficha_seleciona'),
url(r'^materia/impressos/norma-pesquisa/$',
path('materia/impressos/norma-pesquisa/',
NormaPesquisaSimplesView.as_view(),
name='impressos_norma_pesquisa'),
url(r'^materia/impressos/materia-pesquisa/$',
path('materia/impressos/materia-pesquisa/',
MateriaPesquisaSimplesView.as_view(),
name='impressos_materia_pesquisa'),
url(r'^materia/impressos/ficha-pesquisa-adm/$',
path('materia/impressos/ficha-pesquisa-adm/',
FichaPesquisaAdmView.as_view(),
name='impressos_ficha_pesquisa_adm'),
url(r'^materia/impressos/ficha-seleciona-adm/$',
path('materia/impressos/ficha-seleciona-adm/',
FichaSelecionaAdmView.as_view(),
name='impressos_ficha_seleciona_adm'),
]
@ -72,11 +72,11 @@ urlpatterns_materia = [
# Esta customização substitui a url do crud desque que ela permaneça antes
# da inclusão das urls de DespachoInicialCrud
url(r'^materia/(?P<pk>\d+)/despachoinicial/create',
re_path(r'^materia/(?P<pk>\d+)/despachoinicial/create',
DespachoInicialMultiCreateView.as_view(),
name='despacho-inicial-multi'),
url(r'^materia/', include(MateriaLegislativaCrud.get_urls() +
path('materia/', include(MateriaLegislativaCrud.get_urls() +
AnexadaCrud.get_urls() +
AutoriaCrud.get_urls() +
DespachoInicialCrud.get_urls() +
@ -87,107 +87,107 @@ urlpatterns_materia = [
RelatoriaCrud.get_urls() +
DocumentoAcessorioCrud.get_urls())),
url(r'^materia/(?P<pk>[0-9]+)/create_simplificado$',
path('materia/<int:pk>/create_simplificado',
CriarProtocoloMateriaView.as_view(),
name='materia_create_simplificado'),
url(r'^materia/recuperar-materia',
re_path(r'^materia/recuperar-materia',
recuperar_materia, name='recuperar_materia'),
url(r'^materia/(?P<pk>[0-9]+)/ta$',
path('materia/<int:pk>/ta',
MateriaTaView.as_view(), name='materia_ta'),
url(r'^materia/pesquisar-materia$',
path('materia/pesquisar-materia',
MateriaLegislativaPesquisaView.as_view(), name='pesquisar_materia'),
url(r'^materia/(?P<pk>\d+)/acompanhar-materia/$',
path('materia/<int:pk>/acompanhar-materia/',
AcompanhamentoMateriaView.as_view(), name='acompanhar_materia'),
url(r'^materia/(?P<pk>\d+)/acompanhar-confirmar$',
path('materia/<int:pk>/acompanhar-confirmar',
AcompanhamentoConfirmarView.as_view(),
name='acompanhar_confirmar'),
url(r'^materia/(?P<pk>\d+)/acompanhar-excluir$',
path('materia/<int:pk>/acompanhar-excluir',
AcompanhamentoExcluirView.as_view(),
name='acompanhar_excluir'),
url(r'^materia/(?P<pk>\d+)/autoria/multicreate',
re_path(r'^materia/(?P<pk>\d+)/autoria/multicreate',
AutoriaMultiCreateView.as_view(),
name='autoria_multicreate'),
url(r'^materia/acessorio-em-lote', DocumentoAcessorioEmLoteView.as_view(),
re_path(r'^materia/acessorio-em-lote', DocumentoAcessorioEmLoteView.as_view(),
name='acessorio_em_lote'),
url(r'^materia/(?P<pk>\d+)/anexada-em-lote', MateriaAnexadaEmLoteView.as_view(),
re_path(r'^materia/(?P<pk>\d+)/anexada-em-lote', MateriaAnexadaEmLoteView.as_view(),
name='anexada_em_lote'),
url(r'^materia/primeira-tramitacao-em-lote',
re_path(r'^materia/primeira-tramitacao-em-lote',
PrimeiraTramitacaoEmLoteView.as_view(),
name='primeira_tramitacao_em_lote'),
url(r'^materia/tramitacao-em-lote', TramitacaoEmLoteView.as_view(),
re_path(r'^materia/tramitacao-em-lote', TramitacaoEmLoteView.as_view(),
name='tramitacao_em_lote'),
url(r'^materia/excluir-tramitacao-em-lote', ExcluirTramitacaoEmLoteView.as_view(),
re_path(r'^materia/excluir-tramitacao-em-lote', ExcluirTramitacaoEmLoteView.as_view(),
name='excluir_tramitacao_em_lote'),
url(r'^materia/docacessorio/zip/(?P<pk>\d+)$', get_zip_docacessorios,
path('materia/docacessorio/zip/<int:pk>', get_zip_docacessorios,
name='compress_docacessorios'),
url(r'^materia/docacessorio/pdf/(?P<pk>\d+)$', get_pdf_docacessorios,
path('materia/docacessorio/pdf/<int:pk>', get_pdf_docacessorios,
name='merge_docacessorios')
]
urlpatterns_proposicao = [
url(r'^proposicao/', include(ProposicaoCrud.get_urls())),
url(r'^proposicao/recibo/(?P<pk>\d+)', ReciboProposicaoView.as_view(),
path('proposicao/', include(ProposicaoCrud.get_urls())),
re_path(r'^proposicao/recibo/(?P<pk>\d+)', ReciboProposicaoView.as_view(),
name='recibo-proposicao'),
url(r'^proposicao/receber/', ReceberProposicao.as_view(),
re_path(r'^proposicao/receber/', ReceberProposicao.as_view(),
name='receber-proposicao'),
url(r'^proposicao/pendente/', ProposicaoPendente.as_view(),
re_path(r'^proposicao/pendente/', ProposicaoPendente.as_view(),
name='proposicao-pendente'),
url(r'^proposicao/recebida/', ProposicaoRecebida.as_view(),
re_path(r'^proposicao/recebida/', ProposicaoRecebida.as_view(),
name='proposicao-recebida'),
url(r'^proposicao/devolvida/', ProposicaoDevolvida.as_view(),
re_path(r'^proposicao/devolvida/', ProposicaoDevolvida.as_view(),
name='proposicao-devolvida'),
url(r'^proposicao/confirmar/P(?P<hash>[0-9A-Fa-f]+)/'
r'(?P<pk>\d+)', ConfirmarProposicao.as_view(),
re_path(r'^proposicao/confirmar/P(?P<hash>[0-9A-Fa-f]+)/'
'(?P<pk>\d+)', ConfirmarProposicao.as_view(),
name='proposicao-confirmar'),
url(r'^sistema/proposicao/tipo/',
path('sistema/proposicao/tipo/',
include(TipoProposicaoCrud.get_urls())),
url(r'^proposicao/(?P<pk>[0-9]+)/ta$',
path('proposicao/<int:pk>/ta',
ProposicaoTaView.as_view(), name='proposicao_ta'),
url(r'^proposicao/texto/(?P<pk>\d+)$', proposicao_texto,
path('proposicao/texto/<int:pk>', proposicao_texto,
name='proposicao_texto'),
url(r'^proposicao/(?P<pk>\d+)/retornar', RetornarProposicao.as_view(),
re_path(r'^proposicao/(?P<pk>\d+)/retornar', RetornarProposicao.as_view(),
name='retornar-proposicao'),
url(r'^proposicao/historico', HistoricoProposicaoView.as_view(),
re_path(r'^proposicao/historico', HistoricoProposicaoView.as_view(),
name='historico-proposicao'),
]
urlpatterns_sistema = [
url(r'^sistema/assunto-materia/',
path('sistema/assunto-materia/',
include(AssuntoMateriaCrud.get_urls())),
url(r'^sistema/proposicao/tipo/',
path('sistema/proposicao/tipo/',
include(TipoProposicaoCrud.get_urls())),
url(r'^sistema/materia/tipo/', include(TipoMateriaCrud.get_urls())),
url(r'^sistema/materia/regime-tramitacao/',
path('sistema/materia/tipo/', include(TipoMateriaCrud.get_urls())),
path('sistema/materia/regime-tramitacao/',
include(RegimeTramitacaoCrud.get_urls())),
url(r'^sistema/materia/tipo-documento/',
path('sistema/materia/tipo-documento/',
include(TipoDocumentoCrud.get_urls())),
url(r'^sistema/materia/tipo-fim-relatoria/',
path('sistema/materia/tipo-fim-relatoria/',
include(TipoFimRelatoriaCrud.get_urls())),
url(r'^sistema/materia/unidade-tramitacao/',
path('sistema/materia/unidade-tramitacao/',
include(UnidadeTramitacaoCrud.get_urls())),
url(r'^sistema/materia/origem/', include(OrigemCrud.get_urls())),
path('sistema/materia/origem/', include(OrigemCrud.get_urls())),
url(r'^sistema/materia/status-tramitacao/', include(
path('sistema/materia/status-tramitacao/', include(
StatusTramitacaoCrud.get_urls()
)),
url(
re_path(
r'^sistema/materia/pesquisar-status-tramitacao/',
PesquisarStatusTramitacaoView.as_view(),
name="pesquisar_statustramitacao"
),
url(r'^sistema/materia/orgao/', include(OrgaoCrud.get_urls())),
url(r'^sistema/materia/config-etiqueta-materia-legislativas/',configEtiquetaMateriaLegislativaCrud, name="configEtiquetaMateriaLegislativaCrud"),
path('sistema/materia/orgao/', include(OrgaoCrud.get_urls())),
re_path(r'^sistema/materia/config-etiqueta-materia-legislativas/',configEtiquetaMateriaLegislativaCrud, name="configEtiquetaMateriaLegislativaCrud"),
]
urlpatterns = urlpatterns_impressos + urlpatterns_materia + \

8
sapl/materia/views.py

@ -24,8 +24,8 @@ from django.shortcuts import render
from django.template import loader
from django.urls import reverse
from django.utils import formats, timezone
from django.utils.encoding import force_text
from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import force_str
from django.utils.translation import gettext_lazy as _
from django.views.generic import CreateView, ListView, TemplateView, UpdateView
from django.views.generic.base import RedirectView
from django.views.generic.edit import FormView
@ -2173,7 +2173,7 @@ class AcompanhamentoMateriaView(CreateView):
if not google_recaptcha_configured():
self.logger.warning(_('Google Recaptcha não configurado!'))
messages.error(request, _('Google Recaptcha não configurado!'))
return redirect(request.META.get('HTTP_REFERER', '/'))
return redirect(request.headers.get('referer', '/'))
pk = self.kwargs['pk']
materia = MateriaLegislativa.objects.get(id=pk)
@ -2193,7 +2193,7 @@ class AcompanhamentoMateriaView(CreateView):
if not google_recaptcha_configured():
self.logger.warning(_('Google Recaptcha não configurado!'))
messages.error(request, _('Google Recaptcha não configurado!'))
return redirect(request.META.get('HTTP_REFERER', '/'))
return redirect(request.headers.get('referer', '/'))
form = AcompanhamentoMateriaForm(request.POST)
pk = self.kwargs['pk']

1
sapl/norma/__init__.py

@ -1 +0,0 @@
default_app_config = 'sapl.norma.apps.AppConfig'

2
sapl/norma/apps.py

@ -1,5 +1,5 @@
from django import apps
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig):

2
sapl/norma/forms.py

@ -8,7 +8,7 @@ from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.db.models import Q, F, Func, Value
from django.forms import ModelChoiceField, ModelForm, widgets
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
import django_filters
from sapl.base.models import TipoAutor

2
sapl/norma/models.py

@ -2,7 +2,7 @@ from django.contrib.contenttypes.fields import GenericRelation
from django.db import models
from django.template import defaultfilters
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from model_utils import Choices
from sapl.base.models import Autor

2
sapl/norma/tests/test_norma.py

@ -1,5 +1,5 @@
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from model_bakery import baker
import pytest

20
sapl/norma/urls.py

@ -1,5 +1,5 @@
from django.conf import settings
from django.conf.urls import include, url
from django.urls import include, path, re_path
from sapl.norma.views import (AnexoNormaJuridicaCrud, AssuntoNormaCrud,
NormaCrud, NormaPesquisaView,
@ -16,28 +16,28 @@ app_name = AppConfig.name
urlpatterns = [
url(r'^norma/', include(NormaCrud.get_urls() +
path('norma/', include(NormaCrud.get_urls() +
NormaRelacionadaCrud.get_urls() +
AnexoNormaJuridicaCrud.get_urls() +
AutoriaNormaCrud.get_urls())),
# Integração com Compilação
url(r'^norma/(?P<pk>[0-9]+)/ta$', NormaTaView.as_view(), name='norma_ta'),
url(r'^sistema/norma/tipo/', include(TipoNormaCrud.get_urls())),
path('norma/<int:pk>/ta', NormaTaView.as_view(), name='norma_ta'),
path('sistema/norma/tipo/', include(TipoNormaCrud.get_urls())),
url(r'^sistema/norma/assunto/', include(AssuntoNormaCrud.get_urls())),
url(
path('sistema/norma/assunto/', include(AssuntoNormaCrud.get_urls())),
re_path(
r'^sistema/norma/pesquisar-assunto-norma/',
PesquisarAssuntoNormaView.as_view(), name="pesquisar_assuntonorma"
),
url(r'^sistema/norma/vinculo/', include(
path('sistema/norma/vinculo/', include(
TipoVinculoNormaJuridicaCrud.get_urls())),
url(r'^norma/pesquisar$',
path('norma/pesquisar',
NormaPesquisaView.as_view(), name='norma_pesquisa'),
url(r'^norma/recuperar-norma$', recuperar_norma, name="recuperar_norma"),
url(r'^norma/recuperar-numero-norma$', recuperar_numero_norma,
path('norma/recuperar-norma', recuperar_norma, name="recuperar_norma"),
path('norma/recuperar-numero-norma', recuperar_numero_norma,
name="recuperar_numero_norma"),
]

6
sapl/norma/views.py

@ -12,8 +12,8 @@ from django.template import loader
from django.urls import reverse
from django.urls.base import reverse_lazy
from django.utils import timezone
from django.utils.encoding import force_text
from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import force_str
from django.utils.translation import gettext_lazy as _
from django.views.generic import TemplateView, UpdateView
from django.views.generic.edit import FormView
from django_filters.views import FilterView
@ -353,7 +353,7 @@ class NormaCrud(Crud):
return HttpResponseRedirect(url)
def hook_header_epigrafe(self, *args, **kwargs):
return force_text(_('Epigrafe'))
return force_str(_('Epigrafe'))
def hook_epigrafe(self, obj, ss, url):

1
sapl/painel/__init__.py

@ -1 +0,0 @@
default_app_config = 'sapl.painel.apps.AppConfig'

2
sapl/painel/apps.py

@ -1,5 +1,5 @@
from django import apps
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig):

2
sapl/painel/models.py

@ -1,5 +1,5 @@
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class Painel(models.Model):

20
sapl/painel/urls.py

@ -1,4 +1,4 @@
from django.conf.urls import url
from django.urls import path
from .apps import AppConfig
from .views import (cronometro_painel, get_dados_painel, painel_mensagem_view,
@ -8,20 +8,20 @@ from .views import (cronometro_painel, get_dados_painel, painel_mensagem_view,
app_name = AppConfig.name
urlpatterns = [
url(r'^painel-principal/(?P<pk>\d+)$', painel_view,
path('painel-principal/<int:pk>', painel_view,
name="painel_principal"),
url(r'^painel/(?P<pk>\d+)/dados$', get_dados_painel, name='dados_painel'),
url(r'^painel/mensagem$', painel_mensagem_view, name="painel_mensagem"),
url(r'^painel/parlamentar$', painel_parlamentar_view,
path('painel/<int:pk>/dados', get_dados_painel, name='dados_painel'),
path('painel/mensagem', painel_mensagem_view, name="painel_mensagem"),
path('painel/parlamentar', painel_parlamentar_view,
name='painel_parlamentar'),
url(r'^painel/switch-painel$', switch_painel,
path('painel/switch-painel', switch_painel,
name="switch_painel"),
url(r'^painel/votacao$', painel_votacao_view, name='painel_votacao'),
url(r'^painel/verifica-painel$', verifica_painel,
path('painel/votacao', painel_votacao_view, name='painel_votacao'),
path('painel/verifica-painel', verifica_painel,
name="verifica_painel"),
url(r'^painel/cronometro$', cronometro_painel, name='cronometro_painel'),
path('painel/cronometro', cronometro_painel, name='cronometro_painel'),
# url(r'^painel/cronometro$', include(CronometroPainelCrud.get_urls())),
url(r'^voto-individual/$', votante_view,
path('voto-individual/', votante_view,
name='voto_individual'),
]

2
sapl/painel/views.py

@ -11,7 +11,7 @@ from django.http import HttpResponse, JsonResponse
from django.http.response import Http404, HttpResponseRedirect
from django.shortcuts import render
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from sapl.base.models import AppConfig as ConfiguracoesAplicacao
from sapl.base.models import CasaLegislativa

1
sapl/parlamentares/__init__.py

@ -1 +0,0 @@
default_app_config = 'sapl.parlamentares.apps.AppConfig'

2
sapl/parlamentares/apps.py

@ -1,5 +1,5 @@
from django import apps
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig):

2
sapl/parlamentares/forms.py

@ -11,7 +11,7 @@ from django.db import transaction
from django.db.models import Q
from django.forms import ModelForm
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
import django_filters
from image_cropping.widgets import CropWidget, ImageCropWidget

2
sapl/parlamentares/models.py

@ -1,7 +1,7 @@
from django.db import models
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from image_cropping.fields import ImageCropField, ImageRatioField
from model_utils import Choices
from prompt_toolkit.key_binding.bindings.named_commands import self_insert

2
sapl/parlamentares/tests/test_parlamentares.py

@ -1,6 +1,6 @@
import pytest
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from model_bakery import baker
from sapl.parlamentares.forms import FrenteForm, LegislaturaForm, MandatoForm

70
sapl/parlamentares/urls.py

@ -1,4 +1,4 @@
from django.conf.urls import include, url
from django.urls import include, path, re_path
from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud,
coligacao_legislatura,
@ -30,7 +30,7 @@ from .apps import AppConfig
app_name = AppConfig.name
urlpatterns = [
url(r'^parlamentar/', include(
path('parlamentar/', include(
ParlamentarCrud.get_urls() + DependenteCrud.get_urls() +
FiliacaoCrud.get_urls() + MandatoCrud.get_urls() +
ParticipacaoParlamentarCrud.get_urls() +
@ -41,85 +41,85 @@ urlpatterns = [
)),
url(r'^parlamentar/pesquisar-parlamentar/',
re_path(r'^parlamentar/pesquisar-parlamentar/',
PesquisarParlamentarView.as_view(), name='pesquisar_parlamentar'),
url(r'^parlamentar/(?P<pk>\d+)/materias$',
path('parlamentar/<int:pk>/materias',
ParlamentarMateriasView.as_view(), name='parlamentar_materias'),
url(r'^parlamentar/(?P<pk>\d+)/normas$',
path('parlamentar/<int:pk>/normas',
ParlamentarNormasView.as_view(), name='parlamentar_normas'),
url(r'^parlamentar/(?P<pk>\d+)/frentes/$',
path('parlamentar/<int:pk>/frentes/',
get_parlamentar_frentes, name='parlamentar_frentes'),
url(r'^parlamentar/vincular-parlamentar/$',
path('parlamentar/vincular-parlamentar/',
VincularParlamentarView.as_view(), name='vincular_parlamentar'),
url(r'^parlamentar/coligacao-legislatura/',
re_path(r'^parlamentar/coligacao-legislatura/',
coligacao_legislatura, name="coligacao_legislatura"),
url(r'^sistema/coligacao/', include(ColigacaoCrud.get_urls() +
path('sistema/coligacao/', include(ColigacaoCrud.get_urls() +
ComposicaoColigacaoCrud.get_urls())),
url(r'^sistema/pesquisar-coligacao/',
re_path(r'^sistema/pesquisar-coligacao/',
PesquisarColigacaoView.as_view(), name='pesquisar_coligacao'),
url(r'^sistema/coligacao/', include(ColigacaoCrud.get_urls() +
path('sistema/coligacao/', include(ColigacaoCrud.get_urls() +
ComposicaoColigacaoCrud.get_urls())),
url(r'^sistema/bloco/', include(BlocoCrud.get_urls())),
url(r'^sistema/bloco-cargo/', include(BlocoCargoCrud.get_urls())),
url(r'^sistema/bloco-membros/', include(BlocoMembroCrud.get_urls())),
path('sistema/bloco/', include(BlocoCrud.get_urls())),
path('sistema/bloco-cargo/', include(BlocoCargoCrud.get_urls())),
path('sistema/bloco-membros/', include(BlocoMembroCrud.get_urls())),
url(r'^sistema/frente/', include(FrenteCrud.get_urls())),
url(r'^sistema/frente-cargo/', include(FrenteCargoCrud.get_urls())),
url(r'^sistema/frente-parlamentares/',
path('sistema/frente/', include(FrenteCrud.get_urls())),
path('sistema/frente-cargo/', include(FrenteCargoCrud.get_urls())),
path('sistema/frente-parlamentares/',
include(FrenteParlamentarCrud.get_urls())),
url(r'^sistema/frente/atualiza-lista-parlamentares',
re_path(r'^sistema/frente/atualiza-lista-parlamentares',
frente_atualiza_lista_parlamentares,
name='atualiza_lista_parlamentares'),
url(r'^sistema/frente/parlamentares-frente-selected',
re_path(r'^sistema/frente/parlamentares-frente-selected',
parlamentares_frente_selected,
name='parlamentares_frente_selected'),
url(r'^sistema/parlamentar/legislatura/',
path('sistema/parlamentar/legislatura/',
include(LegislaturaCrud.get_urls())),
url(r'^sistema/parlamentar/tipo-dependente/',
path('sistema/parlamentar/tipo-dependente/',
include(TipoDependenteCrud.get_urls())),
url(r'^sistema/parlamentar/nivel-instrucao/',
path('sistema/parlamentar/nivel-instrucao/',
include(NivelInstrucaoCrud.get_urls())),
url(r'^sistema/parlamentar/tipo-afastamento/',
path('sistema/parlamentar/tipo-afastamento/',
include(TipoAfastamentoCrud.get_urls())),
url(r'^sistema/parlamentar/tipo-militar/',
path('sistema/parlamentar/tipo-militar/',
include(TipoMilitarCrud.get_urls())),
url(r'^sistema/parlamentar/partido/', include(PartidoCrud.get_urls())),
url(r'^sistema/parlamentar/pesquisar-partido/',
path('sistema/parlamentar/partido/', include(PartidoCrud.get_urls())),
re_path(r'^sistema/parlamentar/pesquisar-partido/',
PesquisarPartidoView.as_view(), name='pesquisar_partido'),
url(r'^sistema/parlamentar/partido/(?P<pk>\d+)/filiados$',
path('sistema/parlamentar/partido/<int:pk>/filiados',
parlamentares_filiados, name='parlamentares_filiados'),
url(r'^sistema/mesa-diretora/sessao-legislativa/',
path('sistema/mesa-diretora/sessao-legislativa/',
include(SessaoLegislativaCrud.get_urls())),
url(r'^sistema/mesa-diretora/cargo-mesa/',
path('sistema/mesa-diretora/cargo-mesa/',
include(CargoMesaCrud.get_urls())),
url(r'^mesa-diretora/$',
path('mesa-diretora/',
MesaDiretoraView.as_view(), name='mesa_diretora'),
url(r'^mesa-diretora/altera-field-mesa/$',
path('mesa-diretora/altera-field-mesa/',
altera_field_mesa, name='altera_field_mesa'),
url(r'^mesa-diretora/altera-field-mesa-public-view/$',
path('mesa-diretora/altera-field-mesa-public-view/',
altera_field_mesa_public_view, name='altera_field_mesa_public_view'),
url(r'^mesa-diretora/insere-parlamentar-composicao/$',
path('mesa-diretora/insere-parlamentar-composicao/',
insere_parlamentar_composicao, name='insere_parlamentar_composicao'),
url(r'^mesa-diretora/remove-parlamentar-composicao/$',
path('mesa-diretora/remove-parlamentar-composicao/',
remove_parlamentar_composicao, name='remove_parlamentar_composicao'),
url(r'^parlamentar/get-sessoes-legislatura/$',
path('parlamentar/get-sessoes-legislatura/',
get_sessoes_legislatura, name='get_sessoes_legislatura'),
]

2
sapl/parlamentares/views.py

@ -16,7 +16,7 @@ from django.templatetags.static import static
from django.urls import reverse, reverse_lazy
from django.utils import timezone
from django.utils.datastructures import MultiValueDictKeyError
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from django.views.decorators.clickjacking import xframe_options_exempt
from django.views.generic import FormView
from django.views.generic.edit import UpdateView

1
sapl/protocoloadm/__init__.py

@ -1 +0,0 @@
default_app_config = 'sapl.protocoloadm.apps.AppConfig'

2
sapl/protocoloadm/apps.py

@ -1,5 +1,5 @@
from django import apps
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig):

2
sapl/protocoloadm/forms.py

@ -11,7 +11,7 @@ from django.db import transaction
from django.db.models import Max
from django.forms import ModelForm
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
import django_filters
from sapl.base.models import Autor, TipoAutor, AppConfig

2
sapl/protocoloadm/models.py

@ -3,7 +3,7 @@ import re
from django.db import models
from django.utils import timezone
from django.utils.functional import cached_property
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from model_utils import Choices
from sapl.base.models import Autor, AppConfig as SaplAppConfig

10
sapl/protocoloadm/tests/test_protocoloadm.py

@ -2,8 +2,8 @@ from datetime import date, timedelta
from django.urls import reverse
from django.utils import timezone
from django.utils.encoding import force_text
from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import force_str
from django.utils.translation import gettext_lazy as _
from model_bakery import baker
from urllib.parse import urlencode
import pytest
@ -168,7 +168,7 @@ def test_create_tramitacao(admin_client):
'data_tramitacao': date(2016, 8, 21)},
follow=True)
msg = force_text(_('A origem da nova tramitação deve ser igual ao '
msg = force_str(_('A origem da nova tramitação deve ser igual ao '
'destino da última adicionada!'))
# Verifica se a origem da nova tramitacao é igual ao destino da última
@ -209,7 +209,7 @@ def test_create_tramitacao(admin_client):
days=1)},
follow=True)
msg = force_text(_('A data de tramitação deve ser ' +
msg = force_str(_('A data de tramitação deve ser ' +
'menor ou igual a data de hoje!'))
# Verifica se a data da tramitação é menor do que a data de hoje
@ -230,7 +230,7 @@ def test_create_tramitacao(admin_client):
'data_encaminhamento': date(2016, 8, 20)},
follow=True)
msg = force_text(_('A data de encaminhamento deve ser ' +
msg = force_str(_('A data de encaminhamento deve ser ' +
'maior que a data de tramitação!'))
# Verifica se a data da encaminhamento é menor do que a data de tramitacao

54
sapl/protocoloadm/urls.py

@ -1,4 +1,4 @@
from django.conf.urls import include, url
from django.urls import include, path, re_path
from sapl.protocoloadm.views import (AcompanhamentoDocumentoView,
AcompanhamentoConfirmarView,
@ -35,24 +35,24 @@ from .apps import AppConfig
app_name = AppConfig.name
urlpatterns_documento_administrativo = [
url(r'^docadm/',
path('docadm/',
include(DocumentoAdministrativoCrud.get_urls() +
AnexadoCrud.get_urls() +
TramitacaoAdmCrud.get_urls() +
DocumentoAcessorioAdministrativoCrud.get_urls() +
VinculoDocAdminMateriaCrud.get_urls())),
url(r'^docadm/pesq-doc-adm',
re_path(r'^docadm/pesq-doc-adm',
PesquisarDocumentoAdministrativoView.as_view(), name='pesq_doc_adm'),
url(r'^docadm/texto_integral/(?P<pk>\d+)$', doc_texto_integral,
path('docadm/texto_integral/<int:pk>', doc_texto_integral,
name='doc_texto_integral'),
url(r'^docadm/(?P<pk>\d+)/anexado_em_lote', DocumentoAnexadoEmLoteView.as_view(),
re_path(r'^docadm/(?P<pk>\d+)/anexado_em_lote', DocumentoAnexadoEmLoteView.as_view(),
name='anexado_em_lote'),
url(r'^docadm/(?P<pk>\d+)/vinculo-em-lote', VinculoDocAdminMateriaEmLoteView.as_view(),
re_path(r'^docadm/(?P<pk>\d+)/vinculo-em-lote', VinculoDocAdminMateriaEmLoteView.as_view(),
name='vinculodocadminmateria_em_lote'),
url(r'^docadm/documentoacessorioadministrativo/pdf/(?P<pk>\d+)$', get_pdf_docacessorios,
path('docadm/documentoacessorioadministrativo/pdf/<int:pk>', get_pdf_docacessorios,
name='merge_docacessorios')
]
@ -65,67 +65,67 @@ urlpatterns_protocolo = [
# url(r'^protocoloadm/protocolo-list$',
# ProtocoloListView.as_view(), name='protocolo_list'),
url(r'^protocoloadm/$',
path('protocoloadm/',
ProtocoloPesquisaView.as_view(), name='protocolo'),
url(r'^protocoloadm/protocolar-doc',
re_path(r'^protocoloadm/protocolar-doc',
ProtocoloDocumentoView.as_view(), name='protocolar_doc'),
url(r'^protocoloadm/(?P<pk>\d+)/protocolo-mostrar$',
path('protocoloadm/<int:pk>/protocolo-mostrar',
ProtocoloMostrarView.as_view(), name='protocolo_mostrar'),
url(r'^docadm/(?P<pk>\d+)/acompanhar-documento/$',
path('docadm/<int:pk>/acompanhar-documento/',
AcompanhamentoDocumentoView.as_view(), name='acompanhar_documento'),
url(r'^docadm/(?P<pk>\d+)/acompanhar-confirmar$',
path('docadm/<int:pk>/acompanhar-confirmar',
AcompanhamentoConfirmarView.as_view(),
name='acompanhar_confirmar'),
url(r'^docadm/(?P<pk>\d+)/acompanhar-excluir$',
path('docadm/<int:pk>/acompanhar-excluir',
AcompanhamentoExcluirView.as_view(),
name='acompanhar_excluir'),
url(r'^protocoloadm/(?P<pk>\d+)/continuar$',
path('protocoloadm/<int:pk>/continuar',
ProtocoloMateriaTemplateView.as_view(), name='materia_continuar'),
url(r'^protocoloadm/anular-protocolo',
re_path(r'^protocoloadm/anular-protocolo',
AnularProtocoloAdmView.as_view(), name='anular_protocolo'),
url(r'^protocoloadm/desvincular-documento',
re_path(r'^protocoloadm/desvincular-documento',
DesvincularDocumentoView.as_view(), name='desvincular_documento'),
url(r'^protocoloadm/desvincular-materia',
re_path(r'^protocoloadm/desvincular-materia',
DesvincularMateriaView.as_view(), name='desvincular_materia'),
url(r'^protocoloadm/protocolar-mat',
re_path(r'^protocoloadm/protocolar-mat',
ProtocoloMateriaView.as_view(), name='protocolar_mat'),
url(r'^protocoloadm/(?P<pk>\d+)/comprovante$',
path('protocoloadm/<int:pk>/comprovante',
ComprovanteProtocoloView.as_view(), name='comprovante_protocolo'),
url(r'^protocoloadm/(?P<pk>\d+)/criar-documento$',
path('protocoloadm/<int:pk>/criar-documento',
CriarDocumentoProtocolo.as_view(), name='criar_documento'),
url(r'^protocoloadm/atualizar_numero_documento$',
path('protocoloadm/atualizar_numero_documento',
atualizar_numero_documento, name='atualizar_numero_documento'),
url(r'^protocoloadm/recuperar-materia',
re_path(r'^protocoloadm/recuperar-materia',
recuperar_materia_protocolo, name='recuperar_materia_protocolo'),
url(r'^protocoloadm/primeira-tramitacao-em-lote',
re_path(r'^protocoloadm/primeira-tramitacao-em-lote',
PrimeiraTramitacaoEmLoteAdmView.as_view(),
name='primeira_tramitacao_em_lote_docadm'),
url(r'^protocoloadm/tramitacao-em-lote', TramitacaoEmLoteAdmView.as_view(),
re_path(r'^protocoloadm/tramitacao-em-lote', TramitacaoEmLoteAdmView.as_view(),
name='tramitacao_em_lote_docadm'),
url(r'^protocoloadm/apaga_protocolos', apaga_protocolos_view,
re_path(r'^protocoloadm/apaga_protocolos', apaga_protocolos_view,
name='apaga_protocolos_view'),
]
urlpatterns_sistema = [
url(r'^sistema/tipo-documento-adm/',
path('sistema/tipo-documento-adm/',
include(TipoDocumentoAdministrativoCrud.get_urls())),
url(r'^sistema/status-tramitacao-adm/',
path('sistema/status-tramitacao-adm/',
include(StatusTramitacaoAdministrativoCrud.get_urls())),
]

6
sapl/protocoloadm/views.py

@ -24,7 +24,7 @@ from django.shortcuts import redirect, get_object_or_404
from django.shortcuts import render
from django.urls import reverse
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from django.views.generic import ListView, CreateView, UpdateView
from django.views.generic.base import RedirectView, TemplateView
from django.views.generic.edit import FormView
@ -275,7 +275,7 @@ class AcompanhamentoDocumentoView(CreateView):
if not google_recaptcha_configured():
self.logger.warning(_('Google Recaptcha não configurado!'))
messages.error(request, _('Google Recaptcha não configurado!'))
return redirect(request.META.get('HTTP_REFERER', '/'))
return redirect(request.headers.get('referer', '/'))
pk = self.kwargs['pk']
documento = DocumentoAdministrativo.objects.get(id=pk)
@ -294,7 +294,7 @@ class AcompanhamentoDocumentoView(CreateView):
if not google_recaptcha_configured():
self.logger.warning(_('Google Recaptcha não configurado!'))
messages.error(request, _('Google Recaptcha não configurado!'))
return redirect(request.META.get('HTTP_REFERER', '/'))
return redirect(request.headers.get('referer', '/'))
form = AcompanhamentoDocumentoForm(request.POST)
pk = self.kwargs['pk']

2
sapl/redireciona_urls/apps.py

@ -1,5 +1,5 @@
from django import apps
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig):

2
sapl/redireciona_urls/exceptions.py

@ -1,4 +1,4 @@
from django.utils.translation import ugettext as _
from django.utils.translation import gettext as _
class UnknownUrlNameError(Exception):

44
sapl/redireciona_urls/urls.py

@ -1,4 +1,4 @@
from django.conf.urls import url
from django.urls import path, re_path
from .apps import AppConfig
from .views import (RedirecionaAtasList, RedirecionaComissao,
@ -19,67 +19,67 @@ from .views import (RedirecionaAtasList, RedirecionaComissao,
app_name = AppConfig.name
urlpatterns = [
url(r'^default_index_html$',
path('default_index_html',
RedirecionaSAPLIndex.as_view(),
name='redireciona_sapl_index'),
url(r'^consultas/parlamentar/parlamentar_',
re_path(r'^consultas/parlamentar/parlamentar_',
RedirecionaParlamentar.as_view(),
name='redireciona_parlamentar'),
url(r'^consultas/comissao/comissao_',
re_path(r'^consultas/comissao/comissao_',
RedirecionaComissao.as_view(),
name='redireciona_comissao'),
url(r'^consultas/comissao/composicao/composicao_index_html',
re_path(r'^consultas/comissao/composicao/composicao_index_html',
RedirecionaComposicaoComissao.as_view(),
name='redireciona_composicaio_comissao'),
url(r'^consultas/pauta_sessao/pauta_sessao_',
re_path(r'^consultas/pauta_sessao/pauta_sessao_',
RedirecionaPautaSessao.as_view(),
name='redireciona_pauta_sessao_'),
url(r'^consultas/mesa_diretora/mesa_diretora_index_html',
re_path(r'^consultas/mesa_diretora/mesa_diretora_index_html',
RedirecionaMesaDiretoraView.as_view(),
name='redireciona_mesa_diretora'),
url(r'^consultas/mesa_diretora/parlamentar/parlamentar_',
re_path(r'^consultas/mesa_diretora/parlamentar/parlamentar_',
RedirecionaParlamentar.as_view(),
name='redireciona_mesa_diretora_parlamentar'),
url(r'^consultas/sessao_plenaria/',
re_path(r'^consultas/sessao_plenaria/',
RedirecionaSessaoPlenaria.as_view(),
name='redireciona_sessao_plenaria_'),
url(r'^generico/norma_juridica_pesquisar_',
re_path(r'^generico/norma_juridica_pesquisar_',
RedirecionaNormasJuridicasList.as_view(),
name='redireciona_norma_juridica_pesquisa'),
url(r'^consultas/norma_juridica/norma_juridica_mostrar_proc',
re_path(r'^consultas/norma_juridica/norma_juridica_mostrar_proc',
RedirecionaNormasJuridicasDetail.as_view(),
name='redireciona_norma_juridica_detail'),
url(r'^sapl_documentos/norma_juridica/(?P<norma_id>[0-9]+)_texto_integral',
re_path(r'^sapl_documentos/norma_juridica/(?P<norma_id>[0-9]+)_texto_integral',
RedirecionaNormasJuridicasTextoIntegral.as_view(),
name='redireciona_norma_juridica_texto_integral'),
url(r'^relatorios_administrativos/relatorios_administrativos_index_html$',
path('relatorios_administrativos/relatorios_administrativos_index_html',
RedirecionaRelatoriosList.as_view(),
name='redireciona_relatorios_list'),
url(r'tramitacaoMaterias/tramitacaoMaterias',
re_path(r'tramitacaoMaterias/tramitacaoMaterias',
RedirecionaRelatoriosMateriasEmTramitacaoList.as_view(),
name='redireciona_relatorio_materia_por_tramitacao'),
url(r'tramitacaoMaterias/materia_mostrar_proc$',
path('tramitacaoMaterias/materia_mostrar_proc',
RedirecionaMateriaLegislativaDetail.as_view(),
name='redireciona_materialegislativa_detail_tramitacao'),
url(r'consultas/materia/materia_mostrar_proc$',
path('consultas/materia/materia_mostrar_proc',
RedirecionaMateriaLegislativaDetail.as_view(),
name='redireciona_materialegislativa_detail'),
url(r'^generico/materia_pesquisar_',
re_path(r'^generico/materia_pesquisar_',
RedirecionaMateriaLegislativaList.as_view(),
name='redireciona_materialegislativa_list'),
url(r'historicoTramitacoes/historicoTramitacoes',
re_path(r'historicoTramitacoes/historicoTramitacoes',
RedirecionaHistoricoTramitacoesList.as_view(),
name='redireciona_historico_tramitacoes'),
url(r'atasSessao',
re_path(r'atasSessao',
RedirecionaAtasList.as_view(),
name='redireciona_atas_list'),
url(r'presencaSessao',
re_path(r'presencaSessao',
RedirecionaPresencaParlamentares.as_view(),
name='redireciona_presencaparlamentar_list'),
url(r'resumoPropositurasAutor',
re_path(r'resumoPropositurasAutor',
RedirecionaMateriasPorAutor.as_view(),
name='redireciona_materias_por_autor_list'),
url(r'propositurasAnoAutorTipo',
re_path(r'propositurasAnoAutorTipo',
RedirecionaMateriasPorAnoAutorTipo.as_view(),
name='redireciona_materia_por_ano_autor_tipo_list'),
]

1
sapl/relatorios/__init__.py

@ -1 +0,0 @@
default_app_config = 'relatorios.apps.AppConfig'

2
sapl/relatorios/apps.py

@ -1,5 +1,5 @@
from django import apps
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig):

2
sapl/relatorios/forms.py

@ -3,7 +3,7 @@ from crispy_forms.bootstrap import (FormActions)
from crispy_forms.layout import (HTML, Button, Fieldset,
Layout, Submit)
from django import forms
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from sapl.audiencia.models import AudienciaPublica
from sapl.base.models import Autor

60
sapl/relatorios/urls.py

@ -1,4 +1,4 @@
from django.conf.urls import url
from django.urls import path
from .apps import AppConfig
from .views import (relatorio_capa_processo,
@ -17,84 +17,84 @@ from ..base.views import EstatisticasAcessoNormas
app_name = AppConfig.name
urlpatterns = [
url(r'^relatorios/materia$', relatorio_materia, name='relatorio_materia'),
url(r'^relatorios/capa-processo$',
path('relatorios/materia', relatorio_materia, name='relatorio_materia'),
path('relatorios/capa-processo',
relatorio_capa_processo, name='relatorio_capa_processo'),
url(r'^relatorios/ordem-dia$', relatorio_ordem_dia,
path('relatorios/ordem-dia', relatorio_ordem_dia,
name='relatorio_ordem_dia'),
url(r'^relatorios/relatorio-documento-administrativo$',
path('relatorios/relatorio-documento-administrativo',
relatorio_documento_administrativo,
name='relatorio_documento_administrativo'),
url(r'^relatorios/espelho$', relatorio_espelho,
path('relatorios/espelho', relatorio_espelho,
name='relatorio_espelho'),
# Url utilizada no arquivo: templates/sessao/pauta_sessao_list.html
url(r'^relatorios/(?P<pk>\d+)/sessao-plenaria$',
path('relatorios/<int:pk>/sessao-plenaria',
relatorio_sessao_plenaria, name='relatorio_sessao_plenaria'),
url(r'^relatorios/protocolo$',
path('relatorios/protocolo',
relatorio_protocolo, name='relatorio_protocolo'),
url(r'^relatorios/(?P<nro>\d+)/(?P<ano>\d+)/etiqueta-protocolo$',
path('relatorios/<int:nro>/<int:ano>/etiqueta-protocolo',
relatorio_etiqueta_protocolo, name='relatorio_etiqueta_protocolo'),
# # Url utilizada no arquivo: templates/sessao/pauta_sessao_filter.html
# url(r'^relatorios/pauta-sessao/(?P<pk>\d+)/$',
# relatorio_pauta_sessao, name='relatorio_pauta_sessao'),
url(r'^relatorios/(?P<pk>\d+)/resumo_ata$',
path('relatorios/<int:pk>/resumo_ata',
resumo_ata_pdf, name='resumo_ata_pdf'),
url(r'^relatorios/(?P<pk>\d+)/sessao-plenaria-pdf$',
path('relatorios/<int:pk>/sessao-plenaria-pdf',
relatorio_sessao_plenaria_pdf, name='relatorio_sessao_plenaria_pdf'),
url(r'^relatorios/(?P<pk>\d+)/etiqueta-materia-legislativa$',
path('relatorios/<int:pk>/etiqueta-materia-legislativa',
etiqueta_materia_legislativa, name='etiqueta_materia_legislativa'),
url(r'^relatorios/(?P<pk>\d+)/materia-tramitacao$',
path('relatorios/<int:pk>/materia-tramitacao',
relatorio_materia_tramitacao, name='relatorio_materia_tramitacao'),
# TODO mover estas telas para a app 'relatorios'
url(r'^sistema/relatorios/$',
path('sistema/relatorios/',
RelatoriosListView.as_view(), name='relatorios_list'),
url(r'^sistema/relatorios/materia-por-autor$',
path('sistema/relatorios/materia-por-autor',
RelatorioMateriasPorAutorView.as_view(), name='materia_por_autor'),
url(r'^sistema/relatorios/relatorio-por-mes$',
path('sistema/relatorios/relatorio-por-mes',
RelatorioNormasPublicadasMesView.as_view(), name='normas_por_mes'),
url(r'^sistema/relatorios/relatorio-por-vigencia$',
path('sistema/relatorios/relatorio-por-vigencia',
RelatorioNormasVigenciaView.as_view(), name='normas_por_vigencia'),
url(r'^sistema/relatorios/estatisticas-acesso$',
path('sistema/relatorios/estatisticas-acesso',
EstatisticasAcessoNormas.as_view(), name='estatisticas_acesso'),
url(r'^sistema/relatorios/materia-por-ano-autor-tipo$',
path('sistema/relatorios/materia-por-ano-autor-tipo',
RelatorioMateriasPorAnoAutorTipoView.as_view(),
name='materia_por_ano_autor_tipo'),
url(r'^sistema/relatorios/materia-por-tramitacao$',
path('sistema/relatorios/materia-por-tramitacao',
RelatorioMateriasTramitacaoView.as_view(),
name='materia_por_tramitacao'),
url(r'^sistema/relatorios/materia-por-assunto$',
path('sistema/relatorios/materia-por-assunto',
RelatorioMateriaAnoAssuntoView.as_view(),
name='materia_por_ano_assunto'),
url(r'^sistema/relatorios/historico-tramitacoes$',
path('sistema/relatorios/historico-tramitacoes',
RelatorioHistoricoTramitacaoView.as_view(),
name='historico_tramitacoes'),
url(r'^sistema/relatorios/data-fim-prazo-tramitacoes$',
path('sistema/relatorios/data-fim-prazo-tramitacoes',
RelatorioDataFimPrazoTramitacaoView.as_view(),
name='data_fim_prazo_tramitacoes'),
url(r'^sistema/relatorios/presenca$',
path('sistema/relatorios/presenca',
RelatorioPresencaSessaoView.as_view(),
name='presenca_sessao'),
url(r'^sistema/relatorios/atas$',
path('sistema/relatorios/atas',
RelatorioAtasView.as_view(),
name='atas'),
url(r'^sistema/relatorios/reuniao$',
path('sistema/relatorios/reuniao',
RelatorioReuniaoView.as_view(),
name='reuniao'),
url(r'^sistema/relatorios/audiencia$',
path('sistema/relatorios/audiencia',
RelatorioAudienciaView.as_view(),
name='audiencia'),
url(r'^sistema/relatorios/historico-tramitacoesadm$',
path('sistema/relatorios/historico-tramitacoesadm',
RelatorioHistoricoTramitacaoAdmView.as_view(),
name='historico_tramitacoes_adm'),
url(r'^sistema/relatorios/documentos_acessorios$',
path('sistema/relatorios/documentos_acessorios',
RelatorioDocumentosAcessoriosView.as_view(),
name='relatorio_documentos_acessorios'),
url(r'^sistema/relatorios/normas-por-autor$',
path('sistema/relatorios/normas-por-autor',
RelatorioNormasPorAutorView.as_view(), name='normas_por_autor'),
]

2
sapl/relatorios/views.py

@ -10,7 +10,7 @@ from django.db.models import Count, Q, F
from django.http import Http404, HttpResponse
from django.template.loader import render_to_string
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from django.views.generic import TemplateView, ListView
from django_filters.views import FilterView
from weasyprint import HTML, CSS

3
sapl/rules/__init__.py

@ -1,6 +1,5 @@
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
default_app_config = 'sapl.rules.apps.AppConfig'
"""
Todas as permissões do django framework seguem o padrão

2
sapl/rules/apps.py

@ -8,7 +8,7 @@ from django.contrib.auth.management import _get_all_permissions
from django.core import exceptions
from django.db import models, router
from django.db.utils import DEFAULT_DB_ALIAS
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from sapl.rules import (SAPL_GROUP_ADMINISTRATIVO, SAPL_GROUP_COMISSOES,
SAPL_GROUP_GERAL, SAPL_GROUP_MATERIA, SAPL_GROUP_NORMA,

4
sapl/rules/tests/test_rules.py

@ -2,8 +2,8 @@ from django.apps import apps
from django.conf import settings
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
from django.utils import six
from django.utils.translation import ugettext_lazy as _
import six
from django.utils.translation import gettext_lazy as _
import pytest
from sapl.base.models import CasaLegislativa

1
sapl/sessao/__init__.py

@ -1 +0,0 @@
default_app_config = 'sapl.sessao.apps.AppConfig'

2
sapl/sessao/apps.py

@ -1,5 +1,5 @@
from django import apps
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig):

2
sapl/sessao/forms.py

@ -10,7 +10,7 @@ from django.db import transaction
from django.db.models import Q
from django.forms import ModelForm
from django.forms.widgets import CheckboxSelectMultiple
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
import django_filters
from sapl.base.models import Autor, TipoAutor

2
sapl/sessao/models.py

@ -4,7 +4,7 @@ from django.core.exceptions import ValidationError
from django.db import models
from django.db.models import Q, F
from django.utils import timezone, formats
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from model_utils import Choices
from sapl.base.models import Autor

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save