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.config import AppConfig
from django.apps.registry import apps from django.apps.registry import apps
from django.conf import settings 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.base import ModelBase
from django.db.models.fields import TextField, CharField from django.db.models.fields import TextField, CharField
from django.db.models.fields.files import FileField from django.db.models.fields.files import FileField
from django.template.defaultfilters import capfirst 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 import django_filters
from django_filters.constants import ALL_FIELDS, EMPTY_VALUES from django_filters.constants import ALL_FIELDS, EMPTY_VALUES
from django_filters.filters import CharFilter from django_filters.filters import CharFilter

65
requirements/requirements.txt

@ -1,43 +1,56 @@
django==2.2.28 # Core
django-haystack==3.1.1 Django==3.2.25
django-filter==2.4.0 gunicorn==23.0.0
# Search / indexing
django-haystack==3.2.1
pysolr==3.6.0
# DRF & filtering
djangorestframework==3.12.4 djangorestframework==3.12.4
django-braces==1.14.0 django-filter==2.4.0
django-crispy-forms==1.7.2 drf-spectacular==0.18.2
django-contrib-postgres==0.0.1
django-extra-views==0.12.0 # DB & config
django-model-utils==3.1.2 dj-database-url==0.5.0
django-extensions==2.1.4 psycopg2-binary==2.9.9
django-image-cropping==1.2 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-waffle==3.0.0
django-webpack-loader==1.6.0 django-webpack-loader==1.6.0
drf-spectacular==0.18.2
django-ratelimit==3.0.1 django-ratelimit==3.0.1
whitenoise==5.1.0
django-prometheus==2.2.0
# Images / files / PDFs
easy-thumbnails==2.8.5 easy-thumbnails==2.8.5
python-decouple==3.1 django-image-cropping==1.7
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
Pillow==10.3.0 Pillow==10.3.0
rlPyCairo==0.3.0 rlPyCairo==0.3.0
reportlab==4.2.0 reportlab==4.2.0
WeasyPrint==66 WeasyPrint==66
trml2pdf==0.6 trml2pdf==0.6
gunicorn==23.0.0
more-itertools==8.2.0
pysolr==3.6.0
PyPDF4==1.27.0 PyPDF4==1.27.0
#pyoai==2.5.1 python-magic==0.4.15
git+https://github.com/infrae/pyoai@5ff2f15e869869e70d8139e4c37b7832854d7049
# Other libs
pyyaml==6.0.1
pytz==2024.1
Unidecode==1.1.1 Unidecode==1.1.1
whitenoise==5.1.0 unipath==1.1
kazoo==2.8.0 kazoo==2.8.0
django-prometheus==2.2.0
asn1crypto==1.5.1 asn1crypto==1.5.1
XlsxWriter==3.2.0 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 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 import apps
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig): class AppConfig(apps.AppConfig):

2
sapl/api/forms.py

@ -2,7 +2,7 @@ import logging
from django.db.models import Q from django.db.models import Q
from django.utils import timezone 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.filters import CharFilter, DateFilter, ModelChoiceFilter
from django_filters.filterset import FilterSet from django_filters.filterset import FilterSet
from rest_framework import serializers 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, \ from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView, \
SpectacularRedocView SpectacularRedocView
from rest_framework.authtoken.views import obtain_auth_token from rest_framework.authtoken.views import obtain_auth_token
@ -25,20 +25,20 @@ router.register(r'sessao-plenaria', SessaoPlenariaViewSet,
urlpatterns_router = router.urls urlpatterns_router = router.urls
urlpatterns_api_doc = [ urlpatterns_api_doc = [
url('^schema/swagger-ui/', re_path('^schema/swagger-ui/',
SpectacularSwaggerView.as_view(url_name='sapl.api:schema_api'), SpectacularSwaggerView.as_view(url_name='sapl.api:schema_api'),
name='swagger_ui_schema_api'), name='swagger_ui_schema_api'),
url('^schema/redoc/', re_path('^schema/redoc/',
SpectacularRedocView.as_view(url_name='sapl.api:schema_api'), SpectacularRedocView.as_view(url_name='sapl.api:schema_api'),
name='redoc_schema_api'), name='redoc_schema_api'),
url('^schema/', SpectacularAPIView.as_view(), name='schema_api'), re_path('^schema/', SpectacularAPIView.as_view(), name='schema_api'),
] ]
urlpatterns = [ urlpatterns = [
url(r'^api/', include(urlpatterns_api_doc)), path('api/', include(urlpatterns_api_doc)),
url(r'^api/', include(urlpatterns_router)), path('api/', include(urlpatterns_router)),
url(r'^api/version', AppVersionView.as_view()), re_path(r'^api/version', AppVersionView.as_view()),
url(r'^api/auth/token$', obtain_auth_token), path('api/auth/token', obtain_auth_token),
url(r'^api/recriar-token/(?P<pk>\d*)$', recria_token, name="recria_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 import apps
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig): class AppConfig(apps.AppConfig):

2
sapl/audiencia/forms.py

@ -5,7 +5,7 @@ from datetime import datetime
from django import forms from django import forms
from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.db import transaction 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 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.db import models
from django.utils import timezone 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 model_utils import Choices
from sapl.materia.models import MateriaLegislativa from sapl.materia.models import MateriaLegislativa
from sapl.parlamentares.models import (CargoMesa, Parlamentar) from sapl.parlamentares.models import (CargoMesa, Parlamentar)

2
sapl/audiencia/tests/test_audiencia.py

@ -1,7 +1,7 @@
import pytest import pytest
import datetime import datetime
from model_bakery import baker 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 import forms
from sapl.audiencia.models import AnexoAudienciaPublica 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 sapl.audiencia.views import (index, AudienciaCrud, AnexoAudienciaPublicaCrud)
from .apps import AppConfig from .apps import AppConfig
@ -6,5 +6,5 @@ from .apps import AppConfig
app_name = AppConfig.name app_name = AppConfig.name
urlpatterns = [ 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.contrib import admin
from django.shortcuts import redirect 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.base.models import AuditLog
from sapl.utils import register_all_models_in_admin from sapl.utils import register_all_models_in_admin

2
sapl/base/apps.py

@ -1,6 +1,6 @@
import django import django
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
class AppConfig(django.apps.AppConfig): 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.protocoloadm.models import AcompanhamentoDocumento
from sapl.settings import EMAIL_SEND_USER from sapl.settings import EMAIL_SEND_USER
from sapl.utils import mail_service_configured 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={}): 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.forms import Form, ModelForm
from django.utils import timezone from django.utils import timezone
from django.utils.safestring import mark_safe 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 import django_filters
from haystack.forms import ModelSearchForm 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.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType 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.cache import cache
from django.core.serializers.json import DjangoJSONEncoder from django.core.serializers.json import DjangoJSONEncoder
from django.db import models from django.db import models
from django.db.models.deletion import CASCADE from django.db.models.deletion import CASCADE
from django.db.models.signals import post_migrate from django.db.models.signals import post_migrate
from django.db.utils import DEFAULT_DB_ALIAS 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, from sapl.utils import (LISTA_DE_UFS, YES_NO_CHOICES,
get_settings_auth_user_model, models_with_gr_for_model) 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.db.utils import DEFAULT_DB_ALIAS
from django.dispatch import receiver from django.dispatch import receiver
from django.utils import timezone 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.email_utils import do_envia_email_tramitacao
from sapl.base.models import AuditLog, TipoAutor, Autor, Metadata 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 import template
from django.urls import reverse from django.urls import reverse
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
import yaml import yaml

2
sapl/base/tests/test_form.py

@ -1,5 +1,5 @@
import pytest import pytest
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
from sapl.base.forms import CasaLegislativaForm 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 from model_bakery import baker
import datetime import datetime
from django.urls import reverse 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 model_bakery import baker
from sapl.base.models import Autor, TipoAutor 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 django.views.generic.base import TemplateView
from sapl.urls import urlpatterns as original_patterns from sapl.urls import urlpatterns as original_patterns
ptrn = [url(r'^zzzz$', ptrn = [path('zzzz',
TemplateView.as_view( TemplateView.as_view(
template_name='index.html'), name='zzzz')] template_name='index.html'), name='zzzz')]
urlpatterns = original_patterns + ptrn urlpatterns = original_patterns + ptrn

76
sapl/base/urls.py

@ -1,6 +1,6 @@
import os 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 import views
from django.contrib.auth.decorators import permission_required from django.contrib.auth.decorators import permission_required
from django.views.generic.base import RedirectView, TemplateView from django.views.generic.base import RedirectView, TemplateView
@ -23,114 +23,114 @@ from .views import (LoginSapl, AlterarSenha, AppConfigCrud, CasaLegislativaCrud,
app_name = AppConfig.name app_name = AppConfig.name
admin_user = [ admin_user = [
url(r'^sistema/usuario/', include(UserCrud.get_urls())), path('sistema/usuario/', include(UserCrud.get_urls())),
] ]
alterar_senha = [ alterar_senha = [
url(r'^sistema/alterar-senha/$', path('sistema/alterar-senha/',
AlterarSenha.as_view(), AlterarSenha.as_view(),
name='alterar_senha'), name='alterar_senha'),
] ]
recuperar_senha = [ recuperar_senha = [
url(r'^recuperar-senha/email/$', RecuperarSenhaEmailView.as_view(), path('recuperar-senha/email/', RecuperarSenhaEmailView.as_view(),
name='recuperar_senha_email'), name='recuperar_senha_email'),
url(r'^recuperar-senha/finalizado/$', path('recuperar-senha/finalizado/',
RecuperarSenhaFinalizadoView.as_view(), name='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'), name='recuperar_senha_confirma'),
url(r'^recuperar-senha/completo/$', path('recuperar-senha/completo/',
RecuperarSenhaCompletoView.as_view(), name='recuperar_senha_completo'), RecuperarSenhaCompletoView.as_view(), name='recuperar_senha_completo'),
] ]
urlpatterns = [ 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())), path('sistema/autor/tipo/', include(TipoAutorCrud.get_urls())),
url(r'^sistema/autor/', include(AutorCrud.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'), 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'), name='help'),
url(r'^sistema/casa-legislativa/', include(CasaLegislativaCrud.get_urls()), path('sistema/casa-legislativa/', include(CasaLegislativaCrud.get_urls()),
name="casa_legislativa"), 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})$', '(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})$',
ConfirmarEmailView.as_view(), name='confirmar_email'), ConfirmarEmailView.as_view(), name='confirmar_email'),
url(r'^sistema/inconsistencias/$', path('sistema/inconsistencias/',
ListarInconsistenciasView.as_view(), ListarInconsistenciasView.as_view(),
name='lista_inconsistencias'), name='lista_inconsistencias'),
url(r'^sistema/inconsistencias/protocolos_duplicados$', path('sistema/inconsistencias/protocolos_duplicados',
ListarProtocolosDuplicadosView.as_view(), ListarProtocolosDuplicadosView.as_view(),
name='lista_protocolos_duplicados'), name='lista_protocolos_duplicados'),
url(r'^sistema/inconsistencias/protocolos_com_materias$', path('sistema/inconsistencias/protocolos_com_materias',
ListarProtocolosComMateriasView.as_view(), ListarProtocolosComMateriasView.as_view(),
name='lista_protocolos_com_materias'), name='lista_protocolos_com_materias'),
url(r'^sistema/inconsistencias/materias_protocolo_inexistente$', path('sistema/inconsistencias/materias_protocolo_inexistente',
ListarMatProtocoloInexistenteView.as_view(), ListarMatProtocoloInexistenteView.as_view(),
name='lista_materias_protocolo_inexistente'), name='lista_materias_protocolo_inexistente'),
url(r'^sistema/inconsistencias/filiacoes_sem_data_filiacao$', path('sistema/inconsistencias/filiacoes_sem_data_filiacao',
ListarFiliacoesSemDataFiliacaoView.as_view(), ListarFiliacoesSemDataFiliacaoView.as_view(),
name='lista_filiacoes_sem_data_filiacao'), 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(), ListarMandatoSemDataInicioView.as_view(),
name='lista_mandato_sem_data_inicio'), name='lista_mandato_sem_data_inicio'),
url(r'^sistema/inconsistencias/parlamentares_duplicados$', path('sistema/inconsistencias/parlamentares_duplicados',
ListarParlamentaresDuplicadosView.as_view(), ListarParlamentaresDuplicadosView.as_view(),
name='lista_parlamentares_duplicados'), name='lista_parlamentares_duplicados'),
url(r'^sistema/inconsistencias/parlamentares_mandatos_intersecao$', path('sistema/inconsistencias/parlamentares_mandatos_intersecao',
ListarParlMandatosIntersecaoView.as_view(), ListarParlMandatosIntersecaoView.as_view(),
name='lista_parlamentares_mandatos_intersecao'), name='lista_parlamentares_mandatos_intersecao'),
url(r'^sistema/inconsistencias/parlamentares_filiacoes_intersecao$', path('sistema/inconsistencias/parlamentares_filiacoes_intersecao',
ListarParlFiliacoesIntersecaoView.as_view(), ListarParlFiliacoesIntersecaoView.as_view(),
name='lista_parlamentares_filiacoes_intersecao'), name='lista_parlamentares_filiacoes_intersecao'),
url(r'^sistema/inconsistencias/autores_duplicados$', path('sistema/inconsistencias/autores_duplicados',
ListarAutoresDuplicadosView.as_view(), ListarAutoresDuplicadosView.as_view(),
name='lista_autores_duplicados'), name='lista_autores_duplicados'),
url(r'^sistema/inconsistencias/bancada_comissao_autor_externo$', path('sistema/inconsistencias/bancada_comissao_autor_externo',
ListarBancadaComissaoAutorExternoView.as_view(), ListarBancadaComissaoAutorExternoView.as_view(),
name='lista_bancada_comissao_autor_externo'), name='lista_bancada_comissao_autor_externo'),
url(r'^sistema/inconsistencias/legislatura_infindavel$', path('sistema/inconsistencias/legislatura_infindavel',
ListarLegislaturaInfindavelView.as_view(), ListarLegislaturaInfindavelView.as_view(),
name='lista_legislatura_infindavel'), name='lista_legislatura_infindavel'),
url(r'sistema/inconsistencias/anexadas_ciclicas$', path('sistema/inconsistencias/anexadas_ciclicas',
ListarAnexadasCiclicasView.as_view(), ListarAnexadasCiclicasView.as_view(),
name='lista_anexadas_ciclicas'), name='lista_anexadas_ciclicas'),
url(r'sistema/inconsistencias/anexados_ciclicos$', path('sistema/inconsistencias/anexados_ciclicos',
ListarAnexadosCiclicosView.as_view(), ListarAnexadosCiclicosView.as_view(),
name='lista_anexados_ciclicos'), name='lista_anexados_ciclicos'),
url(r'^sistema/pesquisa-textual', re_path(r'^sistema/pesquisa-textual',
pesquisa_textual, pesquisa_textual,
name='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 # 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')), (TemplateView.as_view(template_name='sistema.html')),
name='sistema'), name='sistema'),
url(r'^login/$', LoginSapl.as_view(), name='login'), path('login/', LoginSapl.as_view(), name='login'),
url(r'^logout/$', views.LogoutView.as_view(), path('logout/', views.LogoutView.as_view(),
{'next_page': LOGOUT_REDIRECT_URL}, name='logout'), {'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 # 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'), url=os.path.join(MEDIA_URL, 'sapl/public/XSLT/HTML/%(path)s'),
permanent=False)), permanent=False)),
# url do logotipo usada em documentos migrados do sapl 2.5 # 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'), 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.decorators import method_decorator
from django.utils.encoding import force_bytes from django.utils.encoding import force_bytes
from django.utils.http import urlsafe_base64_decode, urlsafe_base64_encode 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 import (FormView, ListView)
from django.views.generic.base import RedirectView, TemplateView from django.views.generic.base import RedirectView, TemplateView
from django_filters.views import FilterView from django_filters.views import FilterView
@ -118,7 +118,7 @@ class RecuperarSenhaEmailView(PasswordResetView):
if not google_recaptcha_configured(): if not google_recaptcha_configured():
self.logger.warning(_('Google Recaptcha não configurado!')) self.logger.warning(_('Google Recaptcha não configurado!'))
messages.error(request, _('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) return PasswordResetView.get(self, request, *args, **kwargs)
@ -127,7 +127,7 @@ class RecuperarSenhaEmailView(PasswordResetView):
if not google_recaptcha_configured(): if not google_recaptcha_configured():
self.logger.warning(_('Google Recaptcha não configurado!')) self.logger.warning(_('Google Recaptcha não configurado!'))
messages.error(request, _('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) 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 import apps
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig): 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 import transaction
from django.db.models import Q from django.db.models import Q
from django.forms import ModelForm 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 django.utils import timezone
from sapl.base.models import Autor, TipoAutor from sapl.base.models import Autor, TipoAutor

2
sapl/comissoes/models.py

@ -1,5 +1,5 @@
from django.db import models 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 model_utils import Choices
from sapl.base.models import Autor from sapl.base.models import Autor

2
sapl/comissoes/tests/test_comissoes.py

@ -1,6 +1,6 @@
import pytest import pytest
from django.urls import reverse 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 model_bakery import baker
from sapl.comissoes.models import Comissao, Composicao, Periodo 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, from sapl.comissoes.views import (AdicionaPautaView, CargoComissaoCrud, ComissaoCrud,
ComposicaoCrud, DocumentoAcessorioCrud, ComposicaoCrud, DocumentoAcessorioCrud,
MateriasTramitacaoListView, ParticipacaoCrud, MateriasTramitacaoListView, ParticipacaoCrud,
@ -10,21 +10,21 @@ from .apps import AppConfig
app_name = AppConfig.name app_name = AppConfig.name
urlpatterns = [ urlpatterns = [
url(r'^comissao/', include(ComissaoCrud.get_urls() + path('comissao/', include(ComissaoCrud.get_urls() +
ComposicaoCrud.get_urls() + ComposicaoCrud.get_urls() +
ReuniaoCrud.get_urls() + ReuniaoCrud.get_urls() +
ParticipacaoCrud.get_urls() + ParticipacaoCrud.get_urls() +
DocumentoAcessorioCrud.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'), MateriasTramitacaoListView.as_view(), name='materias_em_tramitacao'),
url(r'^comissao/(?P<pk>\d+)/pauta/add', AdicionaPautaView.as_view(), name='pauta_add'), re_path(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/remove', RemovePautaView.as_view(), name='pauta_remove'),
url(r'^sistema/comissao/cargo/', include(CargoComissaoCrud.get_urls())), path('sistema/comissao/cargo/', include(CargoComissaoCrud.get_urls())),
url(r'^sistema/comissao/periodo-composicao/', path('sistema/comissao/periodo-composicao/',
include(PeriodoComposicaoCrud.get_urls())), include(PeriodoComposicaoCrud.get_urls())),
url(r'^sistema/comissao/tipo/', include(TipoComissaoCrud.get_urls())), path('sistema/comissao/tipo/', include(TipoComissaoCrud.get_urls())),
url(r'^sistema/comissao/recupera-participacoes', get_participacoes_comissao), 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.base import RedirectView
from django.views.generic.detail import DetailView from django.views.generic.detail import DetailView
from django.views.generic.edit import FormMixin, UpdateView 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 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.conf import settings
from django.db import connection, models from django.db import connection, models
from django.db.utils import DEFAULT_DB_ALIAS, IntegrityError 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): 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.forms import Form
from django.forms.models import ModelForm from django.forms.models import ModelForm
from django.template import defaultfilters 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 image_cropping.widgets import CropWidget, ImageCropWidget
from model_utils.choices import Choices 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.template import defaultfilters
from django.utils import timezone from django.utils import timezone
from django.utils.decorators import classonlymethod from django.utils.decorators import classonlymethod
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
from image_cropping.fields import ImageCropField, ImageRatioField from image_cropping.fields import ImageCropField, ImageRatioField
from sapl.compilacao.utils import (get_integrations_view_names, int_to_letter, 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): class Dispositivo(BaseModel, TimestampedMixin):
TEXTO_PADRAO_DISPOSITIVO_REVOGADO = force_text(_('(Revogado)')) TEXTO_PADRAO_DISPOSITIVO_REVOGADO = force_str(_('(Revogado)'))
INTERVALO_ORDEM = 1000 INTERVALO_ORDEM = 1000
ordem = models.PositiveIntegerField( 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.core.signing import Signer
from django.db.models import Q from django.db.models import Q
from django.utils.safestring import mark_safe 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 from sapl.compilacao.models import Dispositivo

2
sapl/compilacao/tests/test_tipo_texto_articulado_form.py

@ -1,5 +1,5 @@
import pytest import pytest
from django.utils.translation import ugettext as _ from django.utils.translation import gettext as _
from model_bakery import baker from model_bakery import baker
from sapl.compilacao import forms 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 import views
from sapl.compilacao.views import (TipoDispositivoCrud, TipoNotaCrud, from sapl.compilacao.views import (TipoDispositivoCrud, TipoNotaCrud,
@ -11,92 +11,86 @@ from .apps import AppConfig
app_name = AppConfig.name app_name = AppConfig.name
urlpatterns_compilacao = [ urlpatterns_compilacao = [
url(r'^$', views.TaListView.as_view(), name='ta_list'), path('', views.TaListView.as_view(), name='ta_list'),
url(r'^create$', views.TaCreateView.as_view(), name='ta_create'), path('create', views.TaCreateView.as_view(), name='ta_create'),
url(r'^(?P<pk>[0-9]+)$', views.TaDetailView.as_view(), name='ta_detail'), path('<int:pk>', views.TaDetailView.as_view(), name='ta_detail'),
url(r'^(?P<pk>[0-9]+)/edit$', path('<int:pk>/edit',
views.TaUpdateView.as_view(), name='ta_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'), 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'), 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'), 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'), 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'), 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'), 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(), views.DispositivoDinamicEditView.as_view(),
name='dispositivo_refresh'), 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'), 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(), views.DispositivoEdicaoVigenciaView.as_view(),
name='dispositivo_edit_vigencia'), 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(), views.DispositivoEdicaoAlteracaoView.as_view(),
name='dispositivo_edit_alteracao'), 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(), views.DispositivoDefinidorVigenciaView.as_view(),
name='dispositivo_edit_definidor_vigencia'), name='dispositivo_edit_definidor_vigencia'),
url(r'^(?P<ta_id>[0-9]+)/text/' path('<int:ta_id>/text/<int:dispositivo_id>/nota/create',
'(?P<dispositivo_id>[0-9]+)/nota/create$',
views.NotasCreateView.as_view(), name='nota_create'), views.NotasCreateView.as_view(), name='nota_create'),
url(r'^(?P<ta_id>[0-9]+)/text/' path('<int:ta_id>/text/<int:dispositivo_id>/nota/<int:pk>/edit',
'(?P<dispositivo_id>[0-9]+)/nota/(?P<pk>[0-9]+)/edit$',
views.NotasEditView.as_view(), name='nota_edit'), views.NotasEditView.as_view(), name='nota_edit'),
url(r'^(?P<ta_id>[0-9]+)/text/' path('<int:ta_id>/text/<int:dispositivo_id>/nota/<int:pk>/delete',
'(?P<dispositivo_id>[0-9]+)/nota/(?P<pk>[0-9]+)/delete$',
views.NotasDeleteView.as_view(), name='nota_delete'), views.NotasDeleteView.as_view(), name='nota_delete'),
url(r'^(?P<ta_id>[0-9]+)/text/' path('<int:ta_id>/text/<int:dispositivo_id>/vide/create',
'(?P<dispositivo_id>[0-9]+)/vide/create$',
views.VideCreateView.as_view(), name='vide_create'), views.VideCreateView.as_view(), name='vide_create'),
url(r'^(?P<ta_id>[0-9]+)/text/' path('<int:ta_id>/text/<int:dispositivo_id>/vide/<int:pk>/edit',
'(?P<dispositivo_id>[0-9]+)/vide/(?P<pk>[0-9]+)/edit$',
views.VideEditView.as_view(), name='vide_edit'), views.VideEditView.as_view(), name='vide_edit'),
url(r'^(?P<ta_id>[0-9]+)/text/' path('<int:ta_id>/text/<int:dispositivo_id>/vide/<int:pk>/delete',
'(?P<dispositivo_id>[0-9]+)/vide/(?P<pk>[0-9]+)/delete$',
views.VideDeleteView.as_view(), name='vide_delete'), views.VideDeleteView.as_view(), name='vide_delete'),
url(r'^search_fragment_form$', path('search_fragment_form',
views.DispositivoSearchFragmentFormView.as_view(), views.DispositivoSearchFragmentFormView.as_view(),
name='dispositivo_fragment_form'), name='dispositivo_fragment_form'),
url(r'^search_form$', path('search_form',
views.DispositivoSearchModalView.as_view(), views.DispositivoSearchModalView.as_view(),
name='dispositivo_search_form'), 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'), 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'), 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'), 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'), 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'), views.PublicacaoDeleteView.as_view(), name='ta_pub_delete'),
@ -104,19 +98,19 @@ urlpatterns_compilacao = [
] ]
urlpatterns = [ 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())), include(TipoNotaCrud.get_urls())),
url(r'^sistema/ta/config/tipo-vide/', path('sistema/ta/config/tipo-vide/',
include(TipoVideCrud.get_urls())), include(TipoVideCrud.get_urls())),
url(r'^sistema/ta/config/tipo-publicacao/', path('sistema/ta/config/tipo-publicacao/',
include(TipoPublicacaoCrud.get_urls())), include(TipoPublicacaoCrud.get_urls())),
url(r'^sistema/ta/config/veiculo-publicacao/', path('sistema/ta/config/veiculo-publicacao/',
include(VeiculoPublicacaoCrud.get_urls())), include(VeiculoPublicacaoCrud.get_urls())),
url(r'^sistema/ta/config/tipo/', path('sistema/ta/config/tipo/',
include(TipoTextoArticuladoCrud.get_urls())), include(TipoTextoArticuladoCrud.get_urls())),
url(r'^sistema/ta/config/tipodispositivo/', path('sistema/ta/config/tipodispositivo/',
include(TipoDispositivoCrud.get_urls())), 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.shortcuts import get_object_or_404, redirect
from django.urls import reverse, reverse_lazy from django.urls import reverse, reverse_lazy
from django.utils.dateparse import parse_date from django.utils.dateparse import parse_date
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.views.generic.base import TemplateView from django.views.generic.base import TemplateView
from django.views.generic.detail import DetailView from django.views.generic.detail import DetailView
from django.views.generic.edit import (CreateView, DeleteView, FormView, from django.views.generic.edit import (CreateView, DeleteView, FormView,
@ -1975,18 +1975,18 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
result = [ 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;', 'icone': '&#8631;&nbsp;',
'action': 'json_add_next', 'action': 'json_add_next',
'itens': []}, '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;', 'icone': '&#8690;&nbsp;',
'action': 'json_add_in', 'action': 'json_add_in',
'itens': [] 'itens': []
}, },
{ {
'tipo_insert': force_text(_('Inserir Antes')), 'tipo_insert': force_str(_('Inserir Antes')),
'icone': '&#8630;&nbsp;', 'icone': '&#8630;&nbsp;',
'action': 'json_add_prior', 'action': 'json_add_prior',
'itens': [] 'itens': []

2
sapl/context_processors.py

@ -1,6 +1,6 @@
import logging 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 \ from sapl.utils import google_recaptcha_configured as \
google_recaptcha_configured_utils, sapn_is_enabled, cached_call, get_base_url 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.contrib.contenttypes.models import ContentType
from django.urls import reverse, reverse_lazy from django.urls import reverse, reverse_lazy
from django.utils import formats from django.utils import formats
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.utils.translation import ugettext as _ from django.utils.translation import gettext as _
import yaml import yaml
@ -40,7 +40,7 @@ def form_actions(more=[Div(css_class='clearfix')],
label=_('Salvar'), name='salvar', label=_('Salvar'), name='salvar',
css_class='float-right', disabled=True): 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;' doubleclick = 'this.form.submit();this.disabled=true;'
else: else:
doubleclick = 'return true;' 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 crispy_forms.layout import Field, Layout
from django import forms from django import forms
from django.conf import settings 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 import messages
from django.contrib.auth.mixins import PermissionRequiredMixin from django.contrib.auth.mixins import PermissionRequiredMixin
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
@ -15,8 +15,8 @@ from django.http.response import Http404
from django.shortcuts import redirect from django.shortcuts import redirect
from django.urls import reverse from django.urls import reverse
from django.utils.decorators import classonlymethod from django.utils.decorators import classonlymethod
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.views.generic import (CreateView, DeleteView, DetailView, ListView, from django.views.generic import (CreateView, DeleteView, DetailView, ListView,
UpdateView) UpdateView)
from django.views.generic.base import ContextMixin from django.views.generic.base import ContextMixin
@ -433,9 +433,9 @@ class CrudListView(PermissionRequiredContainerCrudMixin, ListView):
hook = 'hook_header_{}'.format(''.join(fn)) hook = 'hook_header_{}'.format(''.join(fn))
if hasattr(self, hook): if hasattr(self, hook):
header = getattr(self, hook)() header = getattr(self, hook)()
s.append(force_text(header)) s.append(force_str(header))
else: else:
s.append(force_text(f.verbose_name)) s.append(force_str(f.verbose_name))
else: else:
hook = 'hook_header_{}'.format(''.join(fn)) hook = 'hook_header_{}'.format(''.join(fn))
if hasattr(self, hook): if hasattr(self, hook):
@ -1029,7 +1029,7 @@ class Crud:
if crud[0]: if crud[0]:
cruds.append(crud) 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] for regex, view, suffix in cruds]
@classonlymethod @classonlymethod

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

@ -10,7 +10,7 @@ class Continent(models.Model):
class Country(models.Model): class Country(models.Model):
name = models.CharField(max_length=50) 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')]) is_cold = models.BooleanField(choices=[(True, 'Yes'), (False, 'No')])
population = models.PositiveIntegerField(blank=True, null=True) population = models.PositiveIntegerField(blank=True, null=True)
description = models.TextField(blank=True) description = models.TextField(blank=True)
@ -25,4 +25,4 @@ class Country(models.Model):
class City(models.Model): class City(models.Model):
name = models.CharField(max_length=50) 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 from .views import CityCrud, CountryCrud
urlpatterns = [ urlpatterns = [
url(r'^country/', include( path('country/', include(
CountryCrud.get_urls() + CityCrud.get_urls(), 'stub_app')), 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 = [ 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 functools import wraps
from django.utils import timezone 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): 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 import apps
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig): class AppConfig(apps.AppConfig):

2
sapl/lexml/forms.py

@ -1,7 +1,7 @@
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.forms import ModelForm from django.forms import ModelForm
from sapl.settings import PROJECT_DIR 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 io import StringIO
from lxml import etree from lxml import etree

2
sapl/lexml/models.py

@ -1,5 +1,5 @@
from django.db import models 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 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 from sapl.lexml.views import LexmlProvedorCrud, LexmlPublicadorCrud, lexml_request, request_search
@ -7,11 +7,11 @@ from .apps import AppConfig
app_name = AppConfig.name app_name = AppConfig.name
urlpatterns = [ urlpatterns = [
url(r'^sistema/lexml/provedor/', path('sistema/lexml/provedor/',
include(LexmlProvedorCrud.get_urls())), include(LexmlProvedorCrud.get_urls())),
url(r'^sistema/lexml/publicador/', path('sistema/lexml/publicador/',
include(LexmlPublicadorCrud.get_urls())), include(LexmlPublicadorCrud.get_urls())),
url(r'^sistema/lexml/request_search/(?P<keyword>[\w\-]+)/', request_search, name='lexml_search'), re_path(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/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 import apps
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig): 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.forms.widgets import CheckboxSelectMultiple, HiddenInput, Select
from django.urls import reverse from django.urls import reverse
from django.utils import timezone from django.utils import timezone
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
import django_filters import django_filters
from sapl.base.models import AppConfig as BaseAppConfig, Autor, TipoAutor 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.db.models.functions import Concat
from django.template import defaultfilters from django.template import defaultfilters
from django.utils import formats, timezone 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 model_utils import Choices
from sapl.base.models import SEQUENCIA_NUMERACAO_PROTOCOLO, Autor from sapl.base.models import SEQUENCIA_NUMERACAO_PROTOCOLO, Autor

2
sapl/materia/tests/test_materia_form.py

@ -1,5 +1,5 @@
import pytest import pytest
from django.utils.translation import ugettext as _ from django.utils.translation import gettext as _
from model_bakery import baker from model_bakery import baker
from sapl.comissoes.models import Comissao, TipoComissao 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, from sapl.materia.views import (AcompanhamentoConfirmarView,
AcompanhamentoExcluirView, AcompanhamentoExcluirView,
@ -42,28 +42,28 @@ from .apps import AppConfig
app_name = AppConfig.name app_name = AppConfig.name
urlpatterns_impressos = [ urlpatterns_impressos = [
url(r'^materia/impressos/$', path('materia/impressos/',
ImpressosView.as_view(), ImpressosView.as_view(),
name='impressos'), name='impressos'),
url(r'^materia/impressos/etiqueta-pesquisa/$', path('materia/impressos/etiqueta-pesquisa/',
EtiquetaPesquisaView.as_view(), EtiquetaPesquisaView.as_view(),
name='impressos_etiqueta'), name='impressos_etiqueta'),
url(r'^materia/impressos/ficha-pesquisa/$', path('materia/impressos/ficha-pesquisa/',
FichaPesquisaView.as_view(), FichaPesquisaView.as_view(),
name='impressos_ficha_pesquisa'), name='impressos_ficha_pesquisa'),
url(r'^materia/impressos/ficha-seleciona/$', path('materia/impressos/ficha-seleciona/',
FichaSelecionaView.as_view(), FichaSelecionaView.as_view(),
name='impressos_ficha_seleciona'), name='impressos_ficha_seleciona'),
url(r'^materia/impressos/norma-pesquisa/$', path('materia/impressos/norma-pesquisa/',
NormaPesquisaSimplesView.as_view(), NormaPesquisaSimplesView.as_view(),
name='impressos_norma_pesquisa'), name='impressos_norma_pesquisa'),
url(r'^materia/impressos/materia-pesquisa/$', path('materia/impressos/materia-pesquisa/',
MateriaPesquisaSimplesView.as_view(), MateriaPesquisaSimplesView.as_view(),
name='impressos_materia_pesquisa'), name='impressos_materia_pesquisa'),
url(r'^materia/impressos/ficha-pesquisa-adm/$', path('materia/impressos/ficha-pesquisa-adm/',
FichaPesquisaAdmView.as_view(), FichaPesquisaAdmView.as_view(),
name='impressos_ficha_pesquisa_adm'), name='impressos_ficha_pesquisa_adm'),
url(r'^materia/impressos/ficha-seleciona-adm/$', path('materia/impressos/ficha-seleciona-adm/',
FichaSelecionaAdmView.as_view(), FichaSelecionaAdmView.as_view(),
name='impressos_ficha_seleciona_adm'), 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 # Esta customização substitui a url do crud desque que ela permaneça antes
# da inclusão das urls de DespachoInicialCrud # 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(), DespachoInicialMultiCreateView.as_view(),
name='despacho-inicial-multi'), name='despacho-inicial-multi'),
url(r'^materia/', include(MateriaLegislativaCrud.get_urls() + path('materia/', include(MateriaLegislativaCrud.get_urls() +
AnexadaCrud.get_urls() + AnexadaCrud.get_urls() +
AutoriaCrud.get_urls() + AutoriaCrud.get_urls() +
DespachoInicialCrud.get_urls() + DespachoInicialCrud.get_urls() +
@ -87,107 +87,107 @@ urlpatterns_materia = [
RelatoriaCrud.get_urls() + RelatoriaCrud.get_urls() +
DocumentoAcessorioCrud.get_urls())), DocumentoAcessorioCrud.get_urls())),
url(r'^materia/(?P<pk>[0-9]+)/create_simplificado$', path('materia/<int:pk>/create_simplificado',
CriarProtocoloMateriaView.as_view(), CriarProtocoloMateriaView.as_view(),
name='materia_create_simplificado'), name='materia_create_simplificado'),
url(r'^materia/recuperar-materia', re_path(r'^materia/recuperar-materia',
recuperar_materia, name='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'), MateriaTaView.as_view(), name='materia_ta'),
url(r'^materia/pesquisar-materia$', path('materia/pesquisar-materia',
MateriaLegislativaPesquisaView.as_view(), name='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'), AcompanhamentoMateriaView.as_view(), name='acompanhar_materia'),
url(r'^materia/(?P<pk>\d+)/acompanhar-confirmar$', path('materia/<int:pk>/acompanhar-confirmar',
AcompanhamentoConfirmarView.as_view(), AcompanhamentoConfirmarView.as_view(),
name='acompanhar_confirmar'), name='acompanhar_confirmar'),
url(r'^materia/(?P<pk>\d+)/acompanhar-excluir$', path('materia/<int:pk>/acompanhar-excluir',
AcompanhamentoExcluirView.as_view(), AcompanhamentoExcluirView.as_view(),
name='acompanhar_excluir'), name='acompanhar_excluir'),
url(r'^materia/(?P<pk>\d+)/autoria/multicreate', re_path(r'^materia/(?P<pk>\d+)/autoria/multicreate',
AutoriaMultiCreateView.as_view(), AutoriaMultiCreateView.as_view(),
name='autoria_multicreate'), 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'), 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'), name='anexada_em_lote'),
url(r'^materia/primeira-tramitacao-em-lote', re_path(r'^materia/primeira-tramitacao-em-lote',
PrimeiraTramitacaoEmLoteView.as_view(), PrimeiraTramitacaoEmLoteView.as_view(),
name='primeira_tramitacao_em_lote'), 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'), 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'), 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'), 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') name='merge_docacessorios')
] ]
urlpatterns_proposicao = [ urlpatterns_proposicao = [
url(r'^proposicao/', include(ProposicaoCrud.get_urls())), path('proposicao/', include(ProposicaoCrud.get_urls())),
url(r'^proposicao/recibo/(?P<pk>\d+)', ReciboProposicaoView.as_view(), re_path(r'^proposicao/recibo/(?P<pk>\d+)', ReciboProposicaoView.as_view(),
name='recibo-proposicao'), name='recibo-proposicao'),
url(r'^proposicao/receber/', ReceberProposicao.as_view(), re_path(r'^proposicao/receber/', ReceberProposicao.as_view(),
name='receber-proposicao'), name='receber-proposicao'),
url(r'^proposicao/pendente/', ProposicaoPendente.as_view(), re_path(r'^proposicao/pendente/', ProposicaoPendente.as_view(),
name='proposicao-pendente'), name='proposicao-pendente'),
url(r'^proposicao/recebida/', ProposicaoRecebida.as_view(), re_path(r'^proposicao/recebida/', ProposicaoRecebida.as_view(),
name='proposicao-recebida'), name='proposicao-recebida'),
url(r'^proposicao/devolvida/', ProposicaoDevolvida.as_view(), re_path(r'^proposicao/devolvida/', ProposicaoDevolvida.as_view(),
name='proposicao-devolvida'), name='proposicao-devolvida'),
url(r'^proposicao/confirmar/P(?P<hash>[0-9A-Fa-f]+)/' re_path(r'^proposicao/confirmar/P(?P<hash>[0-9A-Fa-f]+)/'
r'(?P<pk>\d+)', ConfirmarProposicao.as_view(), '(?P<pk>\d+)', ConfirmarProposicao.as_view(),
name='proposicao-confirmar'), name='proposicao-confirmar'),
url(r'^sistema/proposicao/tipo/', path('sistema/proposicao/tipo/',
include(TipoProposicaoCrud.get_urls())), include(TipoProposicaoCrud.get_urls())),
url(r'^proposicao/(?P<pk>[0-9]+)/ta$', path('proposicao/<int:pk>/ta',
ProposicaoTaView.as_view(), name='proposicao_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'), 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'), name='retornar-proposicao'),
url(r'^proposicao/historico', HistoricoProposicaoView.as_view(), re_path(r'^proposicao/historico', HistoricoProposicaoView.as_view(),
name='historico-proposicao'), name='historico-proposicao'),
] ]
urlpatterns_sistema = [ urlpatterns_sistema = [
url(r'^sistema/assunto-materia/', path('sistema/assunto-materia/',
include(AssuntoMateriaCrud.get_urls())), include(AssuntoMateriaCrud.get_urls())),
url(r'^sistema/proposicao/tipo/', path('sistema/proposicao/tipo/',
include(TipoProposicaoCrud.get_urls())), include(TipoProposicaoCrud.get_urls())),
url(r'^sistema/materia/tipo/', include(TipoMateriaCrud.get_urls())), path('sistema/materia/tipo/', include(TipoMateriaCrud.get_urls())),
url(r'^sistema/materia/regime-tramitacao/', path('sistema/materia/regime-tramitacao/',
include(RegimeTramitacaoCrud.get_urls())), include(RegimeTramitacaoCrud.get_urls())),
url(r'^sistema/materia/tipo-documento/', path('sistema/materia/tipo-documento/',
include(TipoDocumentoCrud.get_urls())), include(TipoDocumentoCrud.get_urls())),
url(r'^sistema/materia/tipo-fim-relatoria/', path('sistema/materia/tipo-fim-relatoria/',
include(TipoFimRelatoriaCrud.get_urls())), include(TipoFimRelatoriaCrud.get_urls())),
url(r'^sistema/materia/unidade-tramitacao/', path('sistema/materia/unidade-tramitacao/',
include(UnidadeTramitacaoCrud.get_urls())), 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() StatusTramitacaoCrud.get_urls()
)), )),
url( re_path(
r'^sistema/materia/pesquisar-status-tramitacao/', r'^sistema/materia/pesquisar-status-tramitacao/',
PesquisarStatusTramitacaoView.as_view(), PesquisarStatusTramitacaoView.as_view(),
name="pesquisar_statustramitacao" name="pesquisar_statustramitacao"
), ),
url(r'^sistema/materia/orgao/', include(OrgaoCrud.get_urls())), path('sistema/materia/orgao/', include(OrgaoCrud.get_urls())),
url(r'^sistema/materia/config-etiqueta-materia-legislativas/',configEtiquetaMateriaLegislativaCrud, name="configEtiquetaMateriaLegislativaCrud"), re_path(r'^sistema/materia/config-etiqueta-materia-legislativas/',configEtiquetaMateriaLegislativaCrud, name="configEtiquetaMateriaLegislativaCrud"),
] ]
urlpatterns = urlpatterns_impressos + urlpatterns_materia + \ 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.template import loader
from django.urls import reverse from django.urls import reverse
from django.utils import formats, timezone from django.utils import formats, timezone
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.views.generic import CreateView, ListView, TemplateView, UpdateView from django.views.generic import CreateView, ListView, TemplateView, UpdateView
from django.views.generic.base import RedirectView from django.views.generic.base import RedirectView
from django.views.generic.edit import FormView from django.views.generic.edit import FormView
@ -2173,7 +2173,7 @@ class AcompanhamentoMateriaView(CreateView):
if not google_recaptcha_configured(): if not google_recaptcha_configured():
self.logger.warning(_('Google Recaptcha não configurado!')) self.logger.warning(_('Google Recaptcha não configurado!'))
messages.error(request, _('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'] pk = self.kwargs['pk']
materia = MateriaLegislativa.objects.get(id=pk) materia = MateriaLegislativa.objects.get(id=pk)
@ -2193,7 +2193,7 @@ class AcompanhamentoMateriaView(CreateView):
if not google_recaptcha_configured(): if not google_recaptcha_configured():
self.logger.warning(_('Google Recaptcha não configurado!')) self.logger.warning(_('Google Recaptcha não configurado!'))
messages.error(request, _('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) form = AcompanhamentoMateriaForm(request.POST)
pk = self.kwargs['pk'] 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 import apps
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig): 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.db.models import Q, F, Func, Value
from django.forms import ModelChoiceField, ModelForm, widgets from django.forms import ModelChoiceField, ModelForm, widgets
from django.utils import timezone from django.utils import timezone
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
import django_filters import django_filters
from sapl.base.models import TipoAutor 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.db import models
from django.template import defaultfilters from django.template import defaultfilters
from django.utils import timezone 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 model_utils import Choices
from sapl.base.models import Autor from sapl.base.models import Autor

2
sapl/norma/tests/test_norma.py

@ -1,5 +1,5 @@
from django.urls import reverse 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 model_bakery import baker
import pytest import pytest

20
sapl/norma/urls.py

@ -1,5 +1,5 @@
from django.conf import settings 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, from sapl.norma.views import (AnexoNormaJuridicaCrud, AssuntoNormaCrud,
NormaCrud, NormaPesquisaView, NormaCrud, NormaPesquisaView,
@ -16,28 +16,28 @@ app_name = AppConfig.name
urlpatterns = [ urlpatterns = [
url(r'^norma/', include(NormaCrud.get_urls() + path('norma/', include(NormaCrud.get_urls() +
NormaRelacionadaCrud.get_urls() + NormaRelacionadaCrud.get_urls() +
AnexoNormaJuridicaCrud.get_urls() + AnexoNormaJuridicaCrud.get_urls() +
AutoriaNormaCrud.get_urls())), AutoriaNormaCrud.get_urls())),
# Integração com Compilação # Integração com Compilação
url(r'^norma/(?P<pk>[0-9]+)/ta$', NormaTaView.as_view(), name='norma_ta'), path('norma/<int:pk>/ta', NormaTaView.as_view(), name='norma_ta'),
url(r'^sistema/norma/tipo/', include(TipoNormaCrud.get_urls())), path('sistema/norma/tipo/', include(TipoNormaCrud.get_urls())),
url(r'^sistema/norma/assunto/', include(AssuntoNormaCrud.get_urls())), path('sistema/norma/assunto/', include(AssuntoNormaCrud.get_urls())),
url( re_path(
r'^sistema/norma/pesquisar-assunto-norma/', r'^sistema/norma/pesquisar-assunto-norma/',
PesquisarAssuntoNormaView.as_view(), name="pesquisar_assuntonorma" PesquisarAssuntoNormaView.as_view(), name="pesquisar_assuntonorma"
), ),
url(r'^sistema/norma/vinculo/', include( path('sistema/norma/vinculo/', include(
TipoVinculoNormaJuridicaCrud.get_urls())), TipoVinculoNormaJuridicaCrud.get_urls())),
url(r'^norma/pesquisar$', path('norma/pesquisar',
NormaPesquisaView.as_view(), name='norma_pesquisa'), NormaPesquisaView.as_view(), name='norma_pesquisa'),
url(r'^norma/recuperar-norma$', recuperar_norma, name="recuperar_norma"), path('norma/recuperar-norma', recuperar_norma, name="recuperar_norma"),
url(r'^norma/recuperar-numero-norma$', recuperar_numero_norma, path('norma/recuperar-numero-norma', recuperar_numero_norma,
name="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 import reverse
from django.urls.base import reverse_lazy from django.urls.base import reverse_lazy
from django.utils import timezone from django.utils import timezone
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.views.generic import TemplateView, UpdateView from django.views.generic import TemplateView, UpdateView
from django.views.generic.edit import FormView from django.views.generic.edit import FormView
from django_filters.views import FilterView from django_filters.views import FilterView
@ -353,7 +353,7 @@ class NormaCrud(Crud):
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
def hook_header_epigrafe(self, *args, **kwargs): def hook_header_epigrafe(self, *args, **kwargs):
return force_text(_('Epigrafe')) return force_str(_('Epigrafe'))
def hook_epigrafe(self, obj, ss, url): 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 import apps
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig): class AppConfig(apps.AppConfig):

2
sapl/painel/models.py

@ -1,5 +1,5 @@
from django.db import models 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): 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 .apps import AppConfig
from .views import (cronometro_painel, get_dados_painel, painel_mensagem_view, 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 app_name = AppConfig.name
urlpatterns = [ urlpatterns = [
url(r'^painel-principal/(?P<pk>\d+)$', painel_view, path('painel-principal/<int:pk>', painel_view,
name="painel_principal"), name="painel_principal"),
url(r'^painel/(?P<pk>\d+)/dados$', get_dados_painel, name='dados_painel'), path('painel/<int:pk>/dados', get_dados_painel, name='dados_painel'),
url(r'^painel/mensagem$', painel_mensagem_view, name="painel_mensagem"), path('painel/mensagem', painel_mensagem_view, name="painel_mensagem"),
url(r'^painel/parlamentar$', painel_parlamentar_view, path('painel/parlamentar', painel_parlamentar_view,
name='painel_parlamentar'), name='painel_parlamentar'),
url(r'^painel/switch-painel$', switch_painel, path('painel/switch-painel', switch_painel,
name="switch_painel"), name="switch_painel"),
url(r'^painel/votacao$', painel_votacao_view, name='painel_votacao'), path('painel/votacao', painel_votacao_view, name='painel_votacao'),
url(r'^painel/verifica-painel$', verifica_painel, path('painel/verifica-painel', verifica_painel,
name="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'^painel/cronometro$', include(CronometroPainelCrud.get_urls())),
url(r'^voto-individual/$', votante_view, path('voto-individual/', votante_view,
name='voto_individual'), 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.http.response import Http404, HttpResponseRedirect
from django.shortcuts import render from django.shortcuts import render
from django.utils import timezone 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 AppConfig as ConfiguracoesAplicacao
from sapl.base.models import CasaLegislativa 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 import apps
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig): 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.db.models import Q
from django.forms import ModelForm from django.forms import ModelForm
from django.utils import timezone from django.utils import timezone
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
import django_filters import django_filters
from image_cropping.widgets import CropWidget, ImageCropWidget from image_cropping.widgets import CropWidget, ImageCropWidget

2
sapl/parlamentares/models.py

@ -1,7 +1,7 @@
from django.db import models from django.db import models
from django.utils import timezone 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 image_cropping.fields import ImageCropField, ImageRatioField
from model_utils import Choices from model_utils import Choices
from prompt_toolkit.key_binding.bindings.named_commands import self_insert from prompt_toolkit.key_binding.bindings.named_commands import self_insert

2
sapl/parlamentares/tests/test_parlamentares.py

@ -1,6 +1,6 @@
import pytest import pytest
from django.urls import reverse 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 model_bakery import baker
from sapl.parlamentares.forms import FrenteForm, LegislaturaForm, MandatoForm 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, from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud,
coligacao_legislatura, coligacao_legislatura,
@ -30,7 +30,7 @@ from .apps import AppConfig
app_name = AppConfig.name app_name = AppConfig.name
urlpatterns = [ urlpatterns = [
url(r'^parlamentar/', include( path('parlamentar/', include(
ParlamentarCrud.get_urls() + DependenteCrud.get_urls() + ParlamentarCrud.get_urls() + DependenteCrud.get_urls() +
FiliacaoCrud.get_urls() + MandatoCrud.get_urls() + FiliacaoCrud.get_urls() + MandatoCrud.get_urls() +
ParticipacaoParlamentarCrud.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'), PesquisarParlamentarView.as_view(), name='pesquisar_parlamentar'),
url(r'^parlamentar/(?P<pk>\d+)/materias$', path('parlamentar/<int:pk>/materias',
ParlamentarMateriasView.as_view(), name='parlamentar_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'), ParlamentarNormasView.as_view(), name='parlamentar_normas'),
url(r'^parlamentar/(?P<pk>\d+)/frentes/$', path('parlamentar/<int:pk>/frentes/',
get_parlamentar_frentes, name='parlamentar_frentes'), get_parlamentar_frentes, name='parlamentar_frentes'),
url(r'^parlamentar/vincular-parlamentar/$', path('parlamentar/vincular-parlamentar/',
VincularParlamentarView.as_view(), name='vincular_parlamentar'), VincularParlamentarView.as_view(), name='vincular_parlamentar'),
url(r'^parlamentar/coligacao-legislatura/', re_path(r'^parlamentar/coligacao-legislatura/',
coligacao_legislatura, name="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())), ComposicaoColigacaoCrud.get_urls())),
url(r'^sistema/pesquisar-coligacao/', re_path(r'^sistema/pesquisar-coligacao/',
PesquisarColigacaoView.as_view(), name='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())), ComposicaoColigacaoCrud.get_urls())),
url(r'^sistema/bloco/', include(BlocoCrud.get_urls())), path('sistema/bloco/', include(BlocoCrud.get_urls())),
url(r'^sistema/bloco-cargo/', include(BlocoCargoCrud.get_urls())), path('sistema/bloco-cargo/', include(BlocoCargoCrud.get_urls())),
url(r'^sistema/bloco-membros/', include(BlocoMembroCrud.get_urls())), path('sistema/bloco-membros/', include(BlocoMembroCrud.get_urls())),
url(r'^sistema/frente/', include(FrenteCrud.get_urls())), path('sistema/frente/', include(FrenteCrud.get_urls())),
url(r'^sistema/frente-cargo/', include(FrenteCargoCrud.get_urls())), path('sistema/frente-cargo/', include(FrenteCargoCrud.get_urls())),
url(r'^sistema/frente-parlamentares/', path('sistema/frente-parlamentares/',
include(FrenteParlamentarCrud.get_urls())), include(FrenteParlamentarCrud.get_urls())),
url(r'^sistema/frente/atualiza-lista-parlamentares', re_path(r'^sistema/frente/atualiza-lista-parlamentares',
frente_atualiza_lista_parlamentares, frente_atualiza_lista_parlamentares,
name='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, parlamentares_frente_selected,
name='parlamentares_frente_selected'), name='parlamentares_frente_selected'),
url(r'^sistema/parlamentar/legislatura/', path('sistema/parlamentar/legislatura/',
include(LegislaturaCrud.get_urls())), include(LegislaturaCrud.get_urls())),
url(r'^sistema/parlamentar/tipo-dependente/', path('sistema/parlamentar/tipo-dependente/',
include(TipoDependenteCrud.get_urls())), include(TipoDependenteCrud.get_urls())),
url(r'^sistema/parlamentar/nivel-instrucao/', path('sistema/parlamentar/nivel-instrucao/',
include(NivelInstrucaoCrud.get_urls())), include(NivelInstrucaoCrud.get_urls())),
url(r'^sistema/parlamentar/tipo-afastamento/', path('sistema/parlamentar/tipo-afastamento/',
include(TipoAfastamentoCrud.get_urls())), include(TipoAfastamentoCrud.get_urls())),
url(r'^sistema/parlamentar/tipo-militar/', path('sistema/parlamentar/tipo-militar/',
include(TipoMilitarCrud.get_urls())), include(TipoMilitarCrud.get_urls())),
url(r'^sistema/parlamentar/partido/', include(PartidoCrud.get_urls())), path('sistema/parlamentar/partido/', include(PartidoCrud.get_urls())),
url(r'^sistema/parlamentar/pesquisar-partido/', re_path(r'^sistema/parlamentar/pesquisar-partido/',
PesquisarPartidoView.as_view(), name='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'), parlamentares_filiados, name='parlamentares_filiados'),
url(r'^sistema/mesa-diretora/sessao-legislativa/', path('sistema/mesa-diretora/sessao-legislativa/',
include(SessaoLegislativaCrud.get_urls())), include(SessaoLegislativaCrud.get_urls())),
url(r'^sistema/mesa-diretora/cargo-mesa/', path('sistema/mesa-diretora/cargo-mesa/',
include(CargoMesaCrud.get_urls())), include(CargoMesaCrud.get_urls())),
url(r'^mesa-diretora/$', path('mesa-diretora/',
MesaDiretoraView.as_view(), name='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'), 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'), 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'), 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'), 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'), 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.urls import reverse, reverse_lazy
from django.utils import timezone from django.utils import timezone
from django.utils.datastructures import MultiValueDictKeyError 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.decorators.clickjacking import xframe_options_exempt
from django.views.generic import FormView from django.views.generic import FormView
from django.views.generic.edit import UpdateView 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 import apps
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig): 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.db.models import Max
from django.forms import ModelForm from django.forms import ModelForm
from django.utils import timezone from django.utils import timezone
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
import django_filters import django_filters
from sapl.base.models import Autor, TipoAutor, AppConfig 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.db import models
from django.utils import timezone from django.utils import timezone
from django.utils.functional import cached_property 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 model_utils import Choices
from sapl.base.models import Autor, AppConfig as SaplAppConfig 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.urls import reverse
from django.utils import timezone from django.utils import timezone
from django.utils.encoding import force_text from django.utils.encoding import force_str
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
from model_bakery import baker from model_bakery import baker
from urllib.parse import urlencode from urllib.parse import urlencode
import pytest import pytest
@ -168,7 +168,7 @@ def test_create_tramitacao(admin_client):
'data_tramitacao': date(2016, 8, 21)}, 'data_tramitacao': date(2016, 8, 21)},
follow=True) 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!')) 'destino da última adicionada!'))
# Verifica se a origem da nova tramitacao é igual ao destino da última # Verifica se a origem da nova tramitacao é igual ao destino da última
@ -209,7 +209,7 @@ def test_create_tramitacao(admin_client):
days=1)}, days=1)},
follow=True) 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!')) 'menor ou igual a data de hoje!'))
# Verifica se a data da tramitação é menor do que 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)}, 'data_encaminhamento': date(2016, 8, 20)},
follow=True) 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!')) 'maior que a data de tramitação!'))
# Verifica se a data da encaminhamento é menor do que a data de tramitacao # 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, from sapl.protocoloadm.views import (AcompanhamentoDocumentoView,
AcompanhamentoConfirmarView, AcompanhamentoConfirmarView,
@ -35,24 +35,24 @@ from .apps import AppConfig
app_name = AppConfig.name app_name = AppConfig.name
urlpatterns_documento_administrativo = [ urlpatterns_documento_administrativo = [
url(r'^docadm/', path('docadm/',
include(DocumentoAdministrativoCrud.get_urls() + include(DocumentoAdministrativoCrud.get_urls() +
AnexadoCrud.get_urls() + AnexadoCrud.get_urls() +
TramitacaoAdmCrud.get_urls() + TramitacaoAdmCrud.get_urls() +
DocumentoAcessorioAdministrativoCrud.get_urls() + DocumentoAcessorioAdministrativoCrud.get_urls() +
VinculoDocAdminMateriaCrud.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'), 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'), 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'), 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'), 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') name='merge_docacessorios')
] ]
@ -65,67 +65,67 @@ urlpatterns_protocolo = [
# url(r'^protocoloadm/protocolo-list$', # url(r'^protocoloadm/protocolo-list$',
# ProtocoloListView.as_view(), name='protocolo_list'), # ProtocoloListView.as_view(), name='protocolo_list'),
url(r'^protocoloadm/$', path('protocoloadm/',
ProtocoloPesquisaView.as_view(), name='protocolo'), ProtocoloPesquisaView.as_view(), name='protocolo'),
url(r'^protocoloadm/protocolar-doc', re_path(r'^protocoloadm/protocolar-doc',
ProtocoloDocumentoView.as_view(), name='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'), 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'), AcompanhamentoDocumentoView.as_view(), name='acompanhar_documento'),
url(r'^docadm/(?P<pk>\d+)/acompanhar-confirmar$', path('docadm/<int:pk>/acompanhar-confirmar',
AcompanhamentoConfirmarView.as_view(), AcompanhamentoConfirmarView.as_view(),
name='acompanhar_confirmar'), name='acompanhar_confirmar'),
url(r'^docadm/(?P<pk>\d+)/acompanhar-excluir$', path('docadm/<int:pk>/acompanhar-excluir',
AcompanhamentoExcluirView.as_view(), AcompanhamentoExcluirView.as_view(),
name='acompanhar_excluir'), name='acompanhar_excluir'),
url(r'^protocoloadm/(?P<pk>\d+)/continuar$', path('protocoloadm/<int:pk>/continuar',
ProtocoloMateriaTemplateView.as_view(), name='materia_continuar'), ProtocoloMateriaTemplateView.as_view(), name='materia_continuar'),
url(r'^protocoloadm/anular-protocolo', re_path(r'^protocoloadm/anular-protocolo',
AnularProtocoloAdmView.as_view(), name='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'), DesvincularDocumentoView.as_view(), name='desvincular_documento'),
url(r'^protocoloadm/desvincular-materia', re_path(r'^protocoloadm/desvincular-materia',
DesvincularMateriaView.as_view(), name='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'), ProtocoloMateriaView.as_view(), name='protocolar_mat'),
url(r'^protocoloadm/(?P<pk>\d+)/comprovante$', path('protocoloadm/<int:pk>/comprovante',
ComprovanteProtocoloView.as_view(), name='comprovante_protocolo'), 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'), CriarDocumentoProtocolo.as_view(), name='criar_documento'),
url(r'^protocoloadm/atualizar_numero_documento$', path('protocoloadm/atualizar_numero_documento',
atualizar_numero_documento, name='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'), 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(), PrimeiraTramitacaoEmLoteAdmView.as_view(),
name='primeira_tramitacao_em_lote_docadm'), 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'), 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'), name='apaga_protocolos_view'),
] ]
urlpatterns_sistema = [ urlpatterns_sistema = [
url(r'^sistema/tipo-documento-adm/', path('sistema/tipo-documento-adm/',
include(TipoDocumentoAdministrativoCrud.get_urls())), include(TipoDocumentoAdministrativoCrud.get_urls())),
url(r'^sistema/status-tramitacao-adm/', path('sistema/status-tramitacao-adm/',
include(StatusTramitacaoAdministrativoCrud.get_urls())), 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.shortcuts import render
from django.urls import reverse from django.urls import reverse
from django.utils import timezone 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 import ListView, CreateView, UpdateView
from django.views.generic.base import RedirectView, TemplateView from django.views.generic.base import RedirectView, TemplateView
from django.views.generic.edit import FormView from django.views.generic.edit import FormView
@ -275,7 +275,7 @@ class AcompanhamentoDocumentoView(CreateView):
if not google_recaptcha_configured(): if not google_recaptcha_configured():
self.logger.warning(_('Google Recaptcha não configurado!')) self.logger.warning(_('Google Recaptcha não configurado!'))
messages.error(request, _('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'] pk = self.kwargs['pk']
documento = DocumentoAdministrativo.objects.get(id=pk) documento = DocumentoAdministrativo.objects.get(id=pk)
@ -294,7 +294,7 @@ class AcompanhamentoDocumentoView(CreateView):
if not google_recaptcha_configured(): if not google_recaptcha_configured():
self.logger.warning(_('Google Recaptcha não configurado!')) self.logger.warning(_('Google Recaptcha não configurado!'))
messages.error(request, _('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) form = AcompanhamentoDocumentoForm(request.POST)
pk = self.kwargs['pk'] pk = self.kwargs['pk']

2
sapl/redireciona_urls/apps.py

@ -1,5 +1,5 @@
from django import apps from django import apps
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig): 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): 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 .apps import AppConfig
from .views import (RedirecionaAtasList, RedirecionaComissao, from .views import (RedirecionaAtasList, RedirecionaComissao,
@ -19,67 +19,67 @@ from .views import (RedirecionaAtasList, RedirecionaComissao,
app_name = AppConfig.name app_name = AppConfig.name
urlpatterns = [ urlpatterns = [
url(r'^default_index_html$', path('default_index_html',
RedirecionaSAPLIndex.as_view(), RedirecionaSAPLIndex.as_view(),
name='redireciona_sapl_index'), name='redireciona_sapl_index'),
url(r'^consultas/parlamentar/parlamentar_', re_path(r'^consultas/parlamentar/parlamentar_',
RedirecionaParlamentar.as_view(), RedirecionaParlamentar.as_view(),
name='redireciona_parlamentar'), name='redireciona_parlamentar'),
url(r'^consultas/comissao/comissao_', re_path(r'^consultas/comissao/comissao_',
RedirecionaComissao.as_view(), RedirecionaComissao.as_view(),
name='redireciona_comissao'), name='redireciona_comissao'),
url(r'^consultas/comissao/composicao/composicao_index_html', re_path(r'^consultas/comissao/composicao/composicao_index_html',
RedirecionaComposicaoComissao.as_view(), RedirecionaComposicaoComissao.as_view(),
name='redireciona_composicaio_comissao'), name='redireciona_composicaio_comissao'),
url(r'^consultas/pauta_sessao/pauta_sessao_', re_path(r'^consultas/pauta_sessao/pauta_sessao_',
RedirecionaPautaSessao.as_view(), RedirecionaPautaSessao.as_view(),
name='redireciona_pauta_sessao_'), 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(), RedirecionaMesaDiretoraView.as_view(),
name='redireciona_mesa_diretora'), name='redireciona_mesa_diretora'),
url(r'^consultas/mesa_diretora/parlamentar/parlamentar_', re_path(r'^consultas/mesa_diretora/parlamentar/parlamentar_',
RedirecionaParlamentar.as_view(), RedirecionaParlamentar.as_view(),
name='redireciona_mesa_diretora_parlamentar'), name='redireciona_mesa_diretora_parlamentar'),
url(r'^consultas/sessao_plenaria/', re_path(r'^consultas/sessao_plenaria/',
RedirecionaSessaoPlenaria.as_view(), RedirecionaSessaoPlenaria.as_view(),
name='redireciona_sessao_plenaria_'), name='redireciona_sessao_plenaria_'),
url(r'^generico/norma_juridica_pesquisar_', re_path(r'^generico/norma_juridica_pesquisar_',
RedirecionaNormasJuridicasList.as_view(), RedirecionaNormasJuridicasList.as_view(),
name='redireciona_norma_juridica_pesquisa'), 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(), RedirecionaNormasJuridicasDetail.as_view(),
name='redireciona_norma_juridica_detail'), 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(), RedirecionaNormasJuridicasTextoIntegral.as_view(),
name='redireciona_norma_juridica_texto_integral'), name='redireciona_norma_juridica_texto_integral'),
url(r'^relatorios_administrativos/relatorios_administrativos_index_html$', path('relatorios_administrativos/relatorios_administrativos_index_html',
RedirecionaRelatoriosList.as_view(), RedirecionaRelatoriosList.as_view(),
name='redireciona_relatorios_list'), name='redireciona_relatorios_list'),
url(r'tramitacaoMaterias/tramitacaoMaterias', re_path(r'tramitacaoMaterias/tramitacaoMaterias',
RedirecionaRelatoriosMateriasEmTramitacaoList.as_view(), RedirecionaRelatoriosMateriasEmTramitacaoList.as_view(),
name='redireciona_relatorio_materia_por_tramitacao'), name='redireciona_relatorio_materia_por_tramitacao'),
url(r'tramitacaoMaterias/materia_mostrar_proc$', path('tramitacaoMaterias/materia_mostrar_proc',
RedirecionaMateriaLegislativaDetail.as_view(), RedirecionaMateriaLegislativaDetail.as_view(),
name='redireciona_materialegislativa_detail_tramitacao'), name='redireciona_materialegislativa_detail_tramitacao'),
url(r'consultas/materia/materia_mostrar_proc$', path('consultas/materia/materia_mostrar_proc',
RedirecionaMateriaLegislativaDetail.as_view(), RedirecionaMateriaLegislativaDetail.as_view(),
name='redireciona_materialegislativa_detail'), name='redireciona_materialegislativa_detail'),
url(r'^generico/materia_pesquisar_', re_path(r'^generico/materia_pesquisar_',
RedirecionaMateriaLegislativaList.as_view(), RedirecionaMateriaLegislativaList.as_view(),
name='redireciona_materialegislativa_list'), name='redireciona_materialegislativa_list'),
url(r'historicoTramitacoes/historicoTramitacoes', re_path(r'historicoTramitacoes/historicoTramitacoes',
RedirecionaHistoricoTramitacoesList.as_view(), RedirecionaHistoricoTramitacoesList.as_view(),
name='redireciona_historico_tramitacoes'), name='redireciona_historico_tramitacoes'),
url(r'atasSessao', re_path(r'atasSessao',
RedirecionaAtasList.as_view(), RedirecionaAtasList.as_view(),
name='redireciona_atas_list'), name='redireciona_atas_list'),
url(r'presencaSessao', re_path(r'presencaSessao',
RedirecionaPresencaParlamentares.as_view(), RedirecionaPresencaParlamentares.as_view(),
name='redireciona_presencaparlamentar_list'), name='redireciona_presencaparlamentar_list'),
url(r'resumoPropositurasAutor', re_path(r'resumoPropositurasAutor',
RedirecionaMateriasPorAutor.as_view(), RedirecionaMateriasPorAutor.as_view(),
name='redireciona_materias_por_autor_list'), name='redireciona_materias_por_autor_list'),
url(r'propositurasAnoAutorTipo', re_path(r'propositurasAnoAutorTipo',
RedirecionaMateriasPorAnoAutorTipo.as_view(), RedirecionaMateriasPorAnoAutorTipo.as_view(),
name='redireciona_materia_por_ano_autor_tipo_list'), 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 import apps
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig): 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, from crispy_forms.layout import (HTML, Button, Fieldset,
Layout, Submit) Layout, Submit)
from django import forms 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.audiencia.models import AudienciaPublica
from sapl.base.models import Autor 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 .apps import AppConfig
from .views import (relatorio_capa_processo, from .views import (relatorio_capa_processo,
@ -17,84 +17,84 @@ from ..base.views import EstatisticasAcessoNormas
app_name = AppConfig.name app_name = AppConfig.name
urlpatterns = [ urlpatterns = [
url(r'^relatorios/materia$', relatorio_materia, name='relatorio_materia'), path('relatorios/materia', relatorio_materia, name='relatorio_materia'),
url(r'^relatorios/capa-processo$', path('relatorios/capa-processo',
relatorio_capa_processo, name='relatorio_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'), name='relatorio_ordem_dia'),
url(r'^relatorios/relatorio-documento-administrativo$', path('relatorios/relatorio-documento-administrativo',
relatorio_documento_administrativo, relatorio_documento_administrativo,
name='relatorio_documento_administrativo'), name='relatorio_documento_administrativo'),
url(r'^relatorios/espelho$', relatorio_espelho, path('relatorios/espelho', relatorio_espelho,
name='relatorio_espelho'), name='relatorio_espelho'),
# Url utilizada no arquivo: templates/sessao/pauta_sessao_list.html # 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'), relatorio_sessao_plenaria, name='relatorio_sessao_plenaria'),
url(r'^relatorios/protocolo$', path('relatorios/protocolo',
relatorio_protocolo, name='relatorio_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'), relatorio_etiqueta_protocolo, name='relatorio_etiqueta_protocolo'),
# # Url utilizada no arquivo: templates/sessao/pauta_sessao_filter.html # # Url utilizada no arquivo: templates/sessao/pauta_sessao_filter.html
# url(r'^relatorios/pauta-sessao/(?P<pk>\d+)/$', # url(r'^relatorios/pauta-sessao/(?P<pk>\d+)/$',
# relatorio_pauta_sessao, name='relatorio_pauta_sessao'), # 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'), 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'), 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'), 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'), relatorio_materia_tramitacao, name='relatorio_materia_tramitacao'),
# TODO mover estas telas para a app 'relatorios' # TODO mover estas telas para a app 'relatorios'
url(r'^sistema/relatorios/$', path('sistema/relatorios/',
RelatoriosListView.as_view(), name='relatorios_list'), 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'), 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'), 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'), RelatorioNormasVigenciaView.as_view(), name='normas_por_vigencia'),
url(r'^sistema/relatorios/estatisticas-acesso$', path('sistema/relatorios/estatisticas-acesso',
EstatisticasAcessoNormas.as_view(), name='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(), RelatorioMateriasPorAnoAutorTipoView.as_view(),
name='materia_por_ano_autor_tipo'), name='materia_por_ano_autor_tipo'),
url(r'^sistema/relatorios/materia-por-tramitacao$', path('sistema/relatorios/materia-por-tramitacao',
RelatorioMateriasTramitacaoView.as_view(), RelatorioMateriasTramitacaoView.as_view(),
name='materia_por_tramitacao'), name='materia_por_tramitacao'),
url(r'^sistema/relatorios/materia-por-assunto$', path('sistema/relatorios/materia-por-assunto',
RelatorioMateriaAnoAssuntoView.as_view(), RelatorioMateriaAnoAssuntoView.as_view(),
name='materia_por_ano_assunto'), name='materia_por_ano_assunto'),
url(r'^sistema/relatorios/historico-tramitacoes$', path('sistema/relatorios/historico-tramitacoes',
RelatorioHistoricoTramitacaoView.as_view(), RelatorioHistoricoTramitacaoView.as_view(),
name='historico_tramitacoes'), name='historico_tramitacoes'),
url(r'^sistema/relatorios/data-fim-prazo-tramitacoes$', path('sistema/relatorios/data-fim-prazo-tramitacoes',
RelatorioDataFimPrazoTramitacaoView.as_view(), RelatorioDataFimPrazoTramitacaoView.as_view(),
name='data_fim_prazo_tramitacoes'), name='data_fim_prazo_tramitacoes'),
url(r'^sistema/relatorios/presenca$', path('sistema/relatorios/presenca',
RelatorioPresencaSessaoView.as_view(), RelatorioPresencaSessaoView.as_view(),
name='presenca_sessao'), name='presenca_sessao'),
url(r'^sistema/relatorios/atas$', path('sistema/relatorios/atas',
RelatorioAtasView.as_view(), RelatorioAtasView.as_view(),
name='atas'), name='atas'),
url(r'^sistema/relatorios/reuniao$', path('sistema/relatorios/reuniao',
RelatorioReuniaoView.as_view(), RelatorioReuniaoView.as_view(),
name='reuniao'), name='reuniao'),
url(r'^sistema/relatorios/audiencia$', path('sistema/relatorios/audiencia',
RelatorioAudienciaView.as_view(), RelatorioAudienciaView.as_view(),
name='audiencia'), name='audiencia'),
url(r'^sistema/relatorios/historico-tramitacoesadm$', path('sistema/relatorios/historico-tramitacoesadm',
RelatorioHistoricoTramitacaoAdmView.as_view(), RelatorioHistoricoTramitacaoAdmView.as_view(),
name='historico_tramitacoes_adm'), name='historico_tramitacoes_adm'),
url(r'^sistema/relatorios/documentos_acessorios$', path('sistema/relatorios/documentos_acessorios',
RelatorioDocumentosAcessoriosView.as_view(), RelatorioDocumentosAcessoriosView.as_view(),
name='relatorio_documentos_acessorios'), name='relatorio_documentos_acessorios'),
url(r'^sistema/relatorios/normas-por-autor$', path('sistema/relatorios/normas-por-autor',
RelatorioNormasPorAutorView.as_view(), name='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.http import Http404, HttpResponse
from django.template.loader import render_to_string from django.template.loader import render_to_string
from django.utils import timezone 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.views.generic import TemplateView, ListView
from django_filters.views import FilterView from django_filters.views import FilterView
from weasyprint import HTML, CSS 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 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.core import exceptions
from django.db import models, router from django.db import models, router
from django.db.utils import DEFAULT_DB_ALIAS 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, from sapl.rules import (SAPL_GROUP_ADMINISTRATIVO, SAPL_GROUP_COMISSOES,
SAPL_GROUP_GERAL, SAPL_GROUP_MATERIA, SAPL_GROUP_NORMA, 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.conf import settings
from django.contrib.auth.models import Permission from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.utils import six import six
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
import pytest import pytest
from sapl.base.models import CasaLegislativa 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 import apps
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
class AppConfig(apps.AppConfig): 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.db.models import Q
from django.forms import ModelForm from django.forms import ModelForm
from django.forms.widgets import CheckboxSelectMultiple 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 import django_filters
from sapl.base.models import Autor, TipoAutor 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 import models
from django.db.models import Q, F from django.db.models import Q, F
from django.utils import timezone, formats 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 model_utils import Choices
from sapl.base.models import Autor from sapl.base.models import Autor

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

Loading…
Cancel
Save