Browse Source

Faz o merge com o master

pull/268/head
Eduardo Calil 9 years ago
parent
commit
a527605626
  1. 10
      base/forms.py
  2. 3
      base/urls.py
  3. 20
      comissoes/urls.py
  4. 18
      comissoes/views.py
  5. 12
      compilacao/urls.py
  6. 15
      compilacao/views.py
  7. 0
      crud/__init__.py
  8. 124
      crud/base.py
  9. 0
      crud/tests/__init__.py
  10. 15
      crud/tests/settings.py
  11. 0
      crud/tests/stub_app/layouts.yaml
  12. 0
      crud/tests/stub_app/models.py
  13. 0
      crud/tests/stub_app/templates/base.html
  14. 7
      crud/tests/stub_app/urls.py
  15. 11
      crud/tests/stub_app/views.py
  16. 12
      crud/tests/test_base.py
  17. 7
      crud_tests/urls.py
  18. 13
      crud_tests/views.py
  19. 8
      lexml/urls.py
  20. 6
      lexml/views.py
  21. 19
      materia/forms.py
  22. 62
      materia/urls.py
  23. 43
      materia/views.py
  24. 20
      norma/forms.py
  25. 30
      norma/urls.py
  26. 34
      norma/views.py
  27. 4
      painel/urls.py
  28. 4
      painel/views.py
  29. 35
      parlamentares/urls.py
  30. 28
      parlamentares/views.py
  31. 6
      protocoloadm/forms.py
  32. 37
      protocoloadm/urls.py
  33. 19
      protocoloadm/views.py
  34. 2
      pytest.ini
  35. 1
      relatorios/views.py
  36. 19
      sessao/forms.py
  37. 28
      sessao/urls.py
  38. 74
      sessao/views.py
  39. 2
      test_and_check_qa.sh

10
base/forms.py

@ -1,6 +1,7 @@
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Fieldset, Layout from crispy_forms.layout import HTML, Fieldset, Layout
from django import forms from django import forms
from django.core.exceptions import ValidationError
from django.forms import ModelForm from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
@ -38,6 +39,15 @@ class CasaLegislativaTabelaAuxForm(ModelForm):
attrs={'id': 'casa-informacoes'}) attrs={'id': 'casa-informacoes'})
} }
def clean_logotipo(self):
logotipo = self.cleaned_data.get('logotipo', False)
if logotipo:
if logotipo.size > 2*1024*1024:
raise ValidationError("Imagem muito grande. ( > 2mb )")
return logotipo
else:
raise ValidationError("Não foi possível salvar a imagem.")
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
row1 = crispy_layout_mixin.to_row( row1 = crispy_layout_mixin.to_row(

3
base/urls.py

@ -1,7 +1,6 @@
from django.conf.urls import url from django.conf.urls import url
from django.views.generic.base import TemplateView
from django.contrib.staticfiles.urls import staticfiles_urlpatterns from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.views.generic.base import TemplateView
from .views import CasaLegislativaTableAuxView, HelpView from .views import CasaLegislativaTableAuxView, HelpView

20
comissoes/urls.py

@ -1,13 +1,15 @@
from django.conf.urls import include, url from django.conf.urls import include, url
from comissoes.views import (CadastrarComissaoView, from comissoes.views import (CadastrarComissaoView, CargoCrud, ComissaoCrud,
ComissaoParlamentarEditView, ComissaoParlamentarEditView,
ComissaoParlamentarIncluirView, ComposicaoView, ComissaoParlamentarIncluirView, ComposicaoView,
MateriasTramitacaoListView, MateriasView, MateriasTramitacaoListView, MateriasView,
ReunioesView, cargo_crud, comissao_crud, PeriodoComposicaoCrud, ReunioesView,
periodo_composicao_crud, tipo_comissao_crud) TipoComissaoCrud)
comissao_url_patterns = comissao_crud.urlpatterns + [ comissao_url_patterns, namespace = ComissaoCrud.get_urls()
comissao_url_patterns = comissao_url_patterns + [
url(r'^(?P<pk>\d+)/composicao$', url(r'^(?P<pk>\d+)/composicao$',
ComposicaoView.as_view(), name='composicao'), ComposicaoView.as_view(), name='composicao'),
url(r'^(?P<pk>\d+)/materias-em-tramitacao$', url(r'^(?P<pk>\d+)/materias-em-tramitacao$',
@ -27,12 +29,10 @@ comissao_url_patterns = comissao_crud.urlpatterns + [
] ]
urlpatterns = [ urlpatterns = [
url(r'^comissoes/', include(comissao_url_patterns, url(r'^comissoes/', include(comissao_url_patterns, namespace)),
comissao_crud.namespace,
comissao_crud.namespace)),
url(r'^sistema/comissoes/cargo/', include(cargo_crud.urls)), url(r'^sistema/comissoes/cargo/', include(CargoCrud.get_urls())),
url(r'^sistema/comissoes/periodo-composicao/', url(r'^sistema/comissoes/periodo-composicao/',
include(periodo_composicao_crud.urls)), include(PeriodoComposicaoCrud.get_urls())),
url(r'^sistema/comissoes/tipo/', include(tipo_comissao_crud.urls)), url(r'^sistema/comissoes/tipo/', include(TipoComissaoCrud.get_urls())),
] ]

18
comissoes/views.py

@ -3,7 +3,7 @@ from django.core.urlresolvers import reverse, reverse_lazy
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.views.generic import CreateView, FormView, ListView from django.views.generic import CreateView, FormView, ListView
from crud import Crud from crud.base import Crud
from materia.models import Tramitacao from materia.models import Tramitacao
from parlamentares.models import Filiacao from parlamentares.models import Filiacao
@ -12,10 +12,10 @@ from .forms import (CadastrarComissaoForm, ComposicaoForm,
from .models import (CargoComissao, Comissao, Composicao, Participacao, from .models import (CargoComissao, Comissao, Composicao, Participacao,
Periodo, TipoComissao) Periodo, TipoComissao)
cargo_crud = Crud(CargoComissao, 'cargo_comissao') CargoCrud = Crud.build(CargoComissao, 'cargo_comissao')
periodo_composicao_crud = Crud(Periodo, 'periodo_composicao_comissao') PeriodoComposicaoCrud = Crud.build(Periodo, 'periodo_composicao_comissao')
tipo_comissao_crud = Crud(TipoComissao, 'tipo_comissao') TipoComissaoCrud = Crud.build(TipoComissao, 'tipo_comissao')
comissao_crud = Crud(Comissao, 'modulo_comissoes') ComissaoCrud = Crud.build(Comissao, 'modulo_comissoes')
class CadastrarComissaoView(CreateView): class CadastrarComissaoView(CreateView):
@ -66,11 +66,11 @@ class ComposicaoView(FormView):
'object': Comissao.objects.get(id=self.kwargs['pk'])}) 'object': Comissao.objects.get(id=self.kwargs['pk'])})
class MateriasView(comissao_crud.CrudDetailView): class MateriasView(ComissaoCrud.CrudDetailView):
template_name = 'comissoes/materias.html' template_name = 'comissoes/materias.html'
class ReunioesView(comissao_crud.CrudDetailView): class ReunioesView(ComissaoCrud.CrudDetailView):
template_name = 'comissoes/reunioes.html' template_name = 'comissoes/reunioes.html'
@ -135,7 +135,7 @@ class ComissaoParlamentarEditView(FormView):
participacao = Participacao.objects.get(id=participacao_id) participacao = Participacao.objects.get(id=participacao_id)
comissao = Comissao.objects.get(id=self.kwargs['pk']) comissao = Comissao.objects.get(id=self.kwargs['pk'])
id_parlamentar = Filiacao.objects.filter( id_parlamentar = Filiacao.objects.filter(
parlamentar__id=participacao.parlamentar.id).order_by('data') parlamentar__id=participacao.parlamentar.id).order_by('data')
id_parlamentar = id_parlamentar.last().id id_parlamentar = id_parlamentar.last().id
form = ParticipacaoCadastroForm( form = ParticipacaoCadastroForm(
initial={'parlamentar_id': id_parlamentar}, initial={'parlamentar_id': id_parlamentar},
@ -151,7 +151,7 @@ class ComissaoParlamentarEditView(FormView):
request.POST, request.POST,
request.FILES, request.FILES,
instance=Participacao.objects.get(id=kwargs['id']) instance=Participacao.objects.get(id=kwargs['id'])
).save(commit=False) ).save(commit=False)
participacao.composicao = Composicao.objects.get( participacao.composicao = Composicao.objects.get(
id=kwargs['cd']) id=kwargs['cd'])

12
compilacao/urls.py

@ -1,8 +1,8 @@
from django.conf.urls import include, url from django.conf.urls import include, url
from compilacao import views from compilacao import views
from compilacao.views import (tipo_nota_crud, tipo_publicacao_crud, from compilacao.views import (TipoNotaCrud, TipoPublicacaoCrud, TipoVideCrud,
tipo_vide_crud, veiculo_publicacao_crud) VeiculoPublicacaoCrud)
urlpatterns_compilacao = [ urlpatterns_compilacao = [
url(r'^$', views.TaListView.as_view(), name='ta_list'), url(r'^$', views.TaListView.as_view(), name='ta_list'),
@ -93,12 +93,12 @@ urlpatterns = [
url(r'^ta/', include(urlpatterns_compilacao, 'compilacao', 'compilacao')), url(r'^ta/', include(urlpatterns_compilacao, 'compilacao', 'compilacao')),
url(r'^ta/config/tipo-nota/', url(r'^ta/config/tipo-nota/',
include(tipo_nota_crud.urls)), include(TipoNotaCrud.get_urls())),
url(r'^ta/config/tipo-vide/', url(r'^ta/config/tipo-vide/',
include(tipo_vide_crud.urls)), include(TipoVideCrud.get_urls())),
url(r'^ta/config/tipo-publicacao/', url(r'^ta/config/tipo-publicacao/',
include(tipo_publicacao_crud.urls)), include(TipoPublicacaoCrud.get_urls())),
url(r'^ta/config/veiculo-publicacao/', url(r'^ta/config/veiculo-publicacao/',
include(veiculo_publicacao_crud.urls)), include(VeiculoPublicacaoCrud.get_urls())),
] ]

15
compilacao/views.py

@ -27,7 +27,7 @@ from compilacao.models import (Dispositivo, Nota,
TextoArticulado, TipoDispositivo, TipoNota, TextoArticulado, TipoDispositivo, TipoNota,
TipoPublicacao, TipoTextoArticulado, TipoVide, TipoPublicacao, TipoTextoArticulado, TipoVide,
VeiculoPublicacao, Vide) VeiculoPublicacao, Vide)
from crud import Crud, CrudListMixin, make_pagination from crud.base import Crud, CrudListView, make_pagination
DISPOSITIVO_SELECT_RELATED = ( DISPOSITIVO_SELECT_RELATED = (
'tipo_dispositivo', 'tipo_dispositivo',
@ -42,13 +42,10 @@ DISPOSITIVO_SELECT_RELATED = (
'ta_publicado', 'ta_publicado',
'ta',) 'ta',)
tipo_nota_crud = Crud(TipoNota, 'tipo_nota') TipoNotaCrud = Crud.build(TipoNota, 'tipo_nota')
tipo_vide_crud = Crud(TipoVide, 'tipo_vide') TipoVideCrud = Crud.build(TipoVide, 'tipo_vide')
tipo_publicacao_crud = Crud(TipoPublicacao, 'tipo_publicacao') TipoPublicacaoCrud = Crud.build(TipoPublicacao, 'tipo_publicacao')
veiculo_publicacao_crud = Crud(VeiculoPublicacao, 'veiculo_publicacao') VeiculoPublicacaoCrud = Crud.build(VeiculoPublicacao, 'veiculo_publicacao')
perfil_estr_txt_norm = Crud(PerfilEstruturalTextoArticulado,
'perfil_estrutural')
tipo_dispositivo_crud = Crud(TipoDispositivo, 'tipo_dispositivo')
class IntegracaoTaView(TemplateView): class IntegracaoTaView(TemplateView):
@ -1667,7 +1664,7 @@ class PublicacaoListView(ListView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(PublicacaoListView, self).get_context_data(**kwargs) context = super(PublicacaoListView, self).get_context_data(**kwargs)
context['NO_ENTRIES_MSG'] = CrudListMixin.no_entries_msg context['NO_ENTRIES_MSG'] = CrudListView.no_entries_msg
return context return context

0
crud_tests/__init__.py → crud/__init__.py

124
crud.py → crud/base.py

@ -1,6 +1,7 @@
from braces.views import FormMessagesMixin from braces.views import FormMessagesMixin
from django.conf.urls import url from django.conf.urls import url
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.utils.decorators import classonlymethod
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.views.generic import (CreateView, DeleteView, DetailView, ListView, from django.views.generic import (CreateView, DeleteView, DetailView, ListView,
UpdateView) UpdateView)
@ -8,6 +9,19 @@ from django.views.generic import (CreateView, DeleteView, DetailView, ListView,
from crispy_layout_mixin import CrispyLayoutFormMixin, get_field_display from crispy_layout_mixin import CrispyLayoutFormMixin, get_field_display
def _form_invalid_message(msg):
return '%s %s' % (_('Formulário inválido.'), msg)
FORM_MESSAGES = {'create': (_('Registro criado com sucesso!'),
_('O registro não foi criado.')),
'update': (_('Registro alterado com sucesso!'),
_('Suas alterações não foram salvas.')),
'delete': (_('Registro excluído com sucesso!'),
_('O registro não foi excluído.'))}
FORM_MESSAGES = {k: (a, _form_invalid_message(b))
for k, (a, b) in FORM_MESSAGES.items()}
def from_to(start, end): def from_to(start, end):
return list(range(start, end + 1)) return list(range(start, end + 1))
@ -39,7 +53,7 @@ def make_pagination(index, num_pages):
return head + [None] + tail return head + [None] + tail
class BaseCrudMixin(CrispyLayoutFormMixin): class BaseMixin(CrispyLayoutFormMixin):
@property @property
def namespace(self): def namespace(self):
@ -69,7 +83,7 @@ class BaseCrudMixin(CrispyLayoutFormMixin):
return self.resolve_url('delete', args=(self.object.id,)) return self.resolve_url('delete', args=(self.object.id,))
def get_template_names(self): def get_template_names(self):
names = super(BaseCrudMixin, self).get_template_names() names = super(BaseMixin, self).get_template_names()
names.append("crud/%s.html" % names.append("crud/%s.html" %
self.template_name_suffix.lstrip('_')) self.template_name_suffix.lstrip('_'))
return names return names
@ -83,7 +97,7 @@ class BaseCrudMixin(CrispyLayoutFormMixin):
return self.model._meta.verbose_name_plural return self.model._meta.verbose_name_plural
class CrudListMixin(): class CrudListView(ListView):
paginate_by = 10 paginate_by = 10
no_entries_msg = _('Nenhum registro encontrado.') no_entries_msg = _('Nenhum registro encontrado.')
@ -94,7 +108,7 @@ class CrudListMixin():
for i, name in enumerate(self.list_field_names)] for i, name in enumerate(self.list_field_names)]
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(CrudListMixin, self).get_context_data(**kwargs) context = super(CrudListView, self).get_context_data(**kwargs)
context.setdefault('title', self.verbose_name_plural) context.setdefault('title', self.verbose_name_plural)
# pagination # pagination
@ -115,15 +129,9 @@ class CrudListMixin():
return context return context
def make_form_invalid_message(msg): class CrudCreateView(FormMessagesMixin, CreateView):
return '%s %s' % (_('Formulário inválido.'), msg)
class CrudCreateMixin(FormMessagesMixin):
form_valid_message = _('Registro criado com sucesso!') form_valid_message, form_invalid_message = FORM_MESSAGES['create']
form_invalid_message = make_form_invalid_message(
_('O registro não foi criado.'))
@property @property
def cancel_url(self): def cancel_url(self):
@ -135,18 +143,12 @@ class CrudCreateMixin(FormMessagesMixin):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
kwargs.setdefault('title', _('Adicionar %(verbose_name)s') % { kwargs.setdefault('title', _('Adicionar %(verbose_name)s') % {
'verbose_name': self.verbose_name}) 'verbose_name': self.verbose_name})
return super(CrudCreateMixin, self).get_context_data(**kwargs) return super(CrudCreateView, self).get_context_data(**kwargs)
class CrudDetailMixin():
pass
class CrudUpdateView(FormMessagesMixin, UpdateView):
class CrudUpdateMixin(FormMessagesMixin): form_valid_message, form_invalid_message = FORM_MESSAGES['update']
form_valid_message = _('Registro alterado com sucesso!')
form_invalid_message = make_form_invalid_message(
_('Suas alterações não foram salvas.'))
@property @property
def cancel_url(self): def cancel_url(self):
@ -156,11 +158,9 @@ class CrudUpdateMixin(FormMessagesMixin):
return self.detail_url return self.detail_url
class CrudDeleteMixin(FormMessagesMixin): class CrudDeleteView(FormMessagesMixin, DeleteView):
form_valid_message = _('Registro excluído com sucesso!') form_valid_message, form_invalid_message = FORM_MESSAGES['delete']
form_invalid_message = make_form_invalid_message(
_('O registro não foi excluído.'))
@property @property
def cancel_url(self): def cancel_url(self):
@ -171,36 +171,31 @@ class CrudDeleteMixin(FormMessagesMixin):
class Crud: class Crud:
BaseMixin = BaseMixin
def __init__(self, model, help_path, ListView = CrudListView
base_mixin=BaseCrudMixin, CreateView = CrudCreateView
list_mixin=CrudListMixin, DetailView = DetailView
create_mixin=CrudCreateMixin, UpdateView = CrudUpdateView
detail_mixin=CrudDetailMixin, DeleteView = CrudDeleteView
update_mixin=CrudUpdateMixin, help_path = ''
delete_mixin=CrudDeleteMixin):
@classonlymethod
class CrudMixin(base_mixin): def get_urls(cls):
pass
CrudMixin.model = model def _add_base(view):
CrudMixin.help_path = help_path class CrudViewWithBase(cls.BaseMixin, view):
model = cls.model
class CrudListView(CrudMixin, list_mixin, ListView): help_path = cls.help_path
pass CrudViewWithBase.__name__ = view.__name__
return CrudViewWithBase
class CrudCreateView(CrudMixin, create_mixin, CreateView):
pass CrudListView = _add_base(cls.ListView)
CrudCreateView = _add_base(cls.CreateView)
class CrudDetailView(CrudMixin, detail_mixin, DetailView): CrudDetailView = _add_base(cls.DetailView)
pass CrudUpdateView = _add_base(cls.UpdateView)
CrudDeleteView = _add_base(cls.DeleteView)
class CrudUpdateView(CrudMixin, update_mixin, UpdateView):
pass urlpatterns = [
class CrudDeleteView(CrudMixin, delete_mixin, DeleteView):
pass
self.urlpatterns = [
url(r'^$', CrudListView.as_view(), name='list'), url(r'^$', CrudListView.as_view(), name='list'),
url(r'^create$', CrudCreateView.as_view(), name='create'), url(r'^create$', CrudCreateView.as_view(), name='create'),
url(r'^(?P<pk>\d+)$', CrudDetailView.as_view(), name='detail'), url(r'^(?P<pk>\d+)$', CrudDetailView.as_view(), name='detail'),
@ -210,8 +205,19 @@ class Crud:
CrudDeleteView.as_view(), name='delete'), CrudDeleteView.as_view(), name='delete'),
] ]
self.namespace = CrudMixin().namespace return urlpatterns, _add_base(object)().namespace
self.urls = self.urlpatterns, self.namespace, self.namespace
@classonlymethod
def build(cls, _model, _help_path):
class ModelCrud(cls):
model = _model
help_path = _help_path
# FIXME!!!! corrigir referencias no codigo e remover isso!!!!!
# fazer com #230
class CrudDetailView(cls.BaseMixin, cls.DetailView):
model = _model
help_path = _help_path
# FIXME Refatorar código que precisa desse atributo e remover ModelCrud.__name__ = '%sCrud' % _model.__name__
self.CrudDetailView = CrudDetailView return ModelCrud

0
crud/tests/__init__.py

15
crud_tests/settings.py → crud/tests/settings.py

@ -1,12 +1,11 @@
import os from os.path import dirname, join
BASE_DIR = os.path.dirname(os.path.dirname(__file__)) BASE_DIR = dirname(dirname(dirname(__file__)))
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.sqlite3', 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': ':memory:', 'NAME': ':memory:',
'NAME': '/tmp/db',
}, },
} }
@ -15,11 +14,11 @@ INSTALLED_APPS = (
'django.contrib.auth', 'django.contrib.auth',
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.sessions', 'django.contrib.sessions',
'crud_tests', 'crud.tests.stub_app',
'crispy_forms', 'crispy_forms',
) )
ROOT_URLCONF = 'crud_tests.urls' ROOT_URLCONF = 'crud.tests.stub_app.urls'
USE_TZ = True USE_TZ = True
@ -27,8 +26,8 @@ SECRET_KEY = 'zzz...'
TEMPLATES = [{ TEMPLATES = [{
'BACKEND': 'django.template.backends.django.DjangoTemplates', 'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'crud_tests/templates'), 'DIRS': [join(BASE_DIR, 'crud/tests/stub_app/templates'),
os.path.join(BASE_DIR, 'templates')], join(BASE_DIR, 'templates')],
'APP_DIRS': True, 'APP_DIRS': True,
'OPTIONS': { 'OPTIONS': {
'context_processors': [ 'context_processors': [

0
crud_tests/layouts.yaml → crud/tests/stub_app/layouts.yaml

0
crud_tests/models.py → crud/tests/stub_app/models.py

0
crud_tests/templates/base.html → crud/tests/stub_app/templates/base.html

7
crud/tests/stub_app/urls.py

@ -0,0 +1,7 @@
from django.conf.urls import include, url
from .views import CountryCrud
urlpatterns = [
url(r'^countries/', include(CountryCrud.get_urls())),
]

11
crud/tests/stub_app/views.py

@ -0,0 +1,11 @@
from crud.base import Crud, CrudListView
from .models import Country
class CountryCrud(Crud):
model = Country
help_path = 'help_path',
class ListView(CrudListView):
paginate_by = 10

12
crud_tests/test_flux.py → crud/tests/test_base.py

@ -2,11 +2,11 @@ import pytest
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from model_mommy import mommy from model_mommy import mommy
from crud import (CrispyLayoutFormMixin, CrudListMixin, from_to, from crud.base import (CrispyLayoutFormMixin, CrudListView, from_to,
get_field_display, make_pagination) get_field_display, make_pagination)
from .models import Continent, Country from .stub_app.models import Continent, Country
from .views import CountryCrudListMixin from .stub_app.views import CountryCrud
pytestmark = pytest.mark.django_db pytestmark = pytest.mark.django_db
@ -151,7 +151,7 @@ def assert_h1(res, title):
assert res.html.find('main').find('h1').text.strip() == title assert res.html.find('main').find('h1').text.strip() == title
NO_ENTRIES_MSG = str(CrudListMixin.no_entries_msg) # "unlazy" NO_ENTRIES_MSG = str(CrudListView.no_entries_msg) # "unlazy"
def assert_on_list_page(res): def assert_on_list_page(res):
@ -196,7 +196,7 @@ def test_flux_list_paginate_detail(
population=population, population=population,
is_cold=is_cold) is_cold=is_cold)
CountryCrudListMixin.paginate_by = page_size CountryCrud.ListView.paginate_by = page_size
res = app.get('/countries/') res = app.get('/countries/')

7
crud_tests/urls.py

@ -1,7 +0,0 @@
from django.conf.urls import include, url
from .views import country_crud
urlpatterns = [
url(r'^countries/', include(country_crud.urls)),
]

13
crud_tests/views.py

@ -1,13 +0,0 @@
from crud import Crud, CrudListMixin
from .models import Country
class CountryCrudListMixin(CrudListMixin):
paginate_by = 10
country_crud = Crud(
Country,
'help_path',
list_mixin=CountryCrudListMixin)

8
lexml/urls.py

@ -1,8 +1,10 @@
from django.conf.urls import include, url from django.conf.urls import include, url
from lexml.views import lexml_provedor_crud, lexml_publicador_crud from lexml.views import LexmlProvedorCrud, LexmlPublicadorCrud
urlpatterns = [ urlpatterns = [
url(r'^sistema/lexml/provedor/', include(lexml_provedor_crud.urls)), url(r'^sistema/lexml/provedor/',
url(r'^sistema/lexml/publicador/', include(lexml_publicador_crud.urls)), include(LexmlProvedorCrud.get_urls())),
url(r'^sistema/lexml/publicador/',
include(LexmlPublicadorCrud.get_urls())),
] ]

6
lexml/views.py

@ -1,6 +1,6 @@
from crud import Crud from crud.base import Crud
from .models import LexmlProvedor, LexmlPublicador from .models import LexmlProvedor, LexmlPublicador
lexml_provedor_crud = Crud(LexmlProvedor, 'lexml_provedor') LexmlProvedorCrud = Crud.build(LexmlProvedor, 'lexml_provedor')
lexml_publicador_crud = Crud(LexmlPublicador, 'lexml_publicador') LexmlPublicadorCrud = Crud.build(LexmlPublicador, 'lexml_publicador')

19
materia/forms.py

@ -1,6 +1,7 @@
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Button, Column, Fieldset, Layout, Submit from crispy_forms.layout import HTML, Button, Column, Fieldset, Layout, Submit
from django import forms from django import forms
from django.core.exceptions import ValidationError
from django.forms import ModelForm from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
@ -39,6 +40,15 @@ class ProposicaoForm(ModelForm):
ano_materia = forms.CharField( ano_materia = forms.CharField(
label='Ano', required=False) label='Ano', required=False)
def clean_texto_original(self):
texto_original = self.cleaned_data.get('texto_original', False)
if texto_original:
if texto_original.size > 5*1024*1024:
raise ValidationError("Arquivo muito grande. ( > 5mb )")
return texto_original
else:
raise ValidationError("Não foi possível salvar o arquivo.")
class Meta: class Meta:
model = Proposicao model = Proposicao
fields = ['tipo', 'data_envio', 'descricao', 'texto_original'] fields = ['tipo', 'data_envio', 'descricao', 'texto_original']
@ -409,6 +419,15 @@ class FormularioSimplificadoForm(ModelForm):
'data_apresentacao': forms.DateInput(attrs={'class': 'dateinput'}), 'data_apresentacao': forms.DateInput(attrs={'class': 'dateinput'}),
} }
def clean_texto_original(self):
texto_original = self.cleaned_data.get('texto_original', False)
if texto_original:
if texto_original.size > 5*1024*1024:
raise ValidationError("Arquivo muito grande. ( > 5mb )")
return texto_original
else:
raise ValidationError("Não foi possível salvar o arquivo.")
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
row1 = crispy_layout_mixin.to_row( row1 = crispy_layout_mixin.to_row(

62
materia/urls.py

@ -2,32 +2,31 @@ from django.conf.urls import include, url
from materia.views import (AcompanhamentoConfirmarView, from materia.views import (AcompanhamentoConfirmarView,
AcompanhamentoExcluirView, AcompanhamentoExcluirView,
AcompanhamentoMateriaView, AutoriaEditView, AcompanhamentoMateriaView, AutorCrud,
AutoriaView, DespachoInicialEditView, AutoriaEditView, AutoriaView,
DespachoInicialView, DocumentoAcessorioEditView, DespachoInicialEditView, DespachoInicialView,
DocumentoAcessorioView, FormularioCadastroView, DocumentoAcessorioEditView, DocumentoAcessorioView,
FormularioSimplificadoView, FormularioCadastroView, FormularioSimplificadoView,
LegislacaoCitadaEditView, LegislacaoCitadaView, LegislacaoCitadaEditView, LegislacaoCitadaView,
MateriaAnexadaEditView, MateriaAnexadaView, MateriaAnexadaEditView, MateriaAnexadaView,
MateriaLegislativaCrud,
MateriaLegislativaPesquisaView, MateriaTaView, MateriaLegislativaPesquisaView, MateriaTaView,
NumeracaoEditView, NumeracaoView, NumeracaoEditView, NumeracaoView, OrgaoCrud,
PesquisaMateriaListView, ProposicaoEditView, OrigemCrud, PesquisaMateriaListView,
ProposicaoListView, ProposicaoTaView, ProposicaoEditView, ProposicaoListView,
ProposicaoView, RelatoriaEditView, RelatoriaView, ProposicaoTaView, ProposicaoView,
TramitacaoEditView, TramitacaoView, autor_crud, RegimeTramitacaoCrud, RelatoriaEditView,
materia_legislativa_crud, orgao_crud, origem_crud, RelatoriaView, StatusTramitacaoCrud, TipoAutorCrud,
regime_tramitacao_crud, status_tramitacao_crud, TipoDocumentoCrud, TipoFimRelatoriaCrud,
tipo_autor_crud, tipo_documento_crud, TipoMateriaCrud, TipoProposicaoCrud,
tipo_fim_relatoria_crud, tipo_materia_crud, TramitacaoEditView, TramitacaoView,
tipo_proposicao_crud, unidade_tramitacao_crud) UnidadeTramitacaoCrud)
materia_legislativa_patterns = materia_legislativa_crud.urlpatterns materia_legislativa_patterns, namespace = MateriaLegislativaCrud.get_urls()
urlpatterns = [ urlpatterns = [
url(r'^materia/', include(materia_legislativa_patterns, url(r'^materia/', include(materia_legislativa_patterns, namespace)),
materia_legislativa_crud.namespace,
materia_legislativa_crud.namespace)),
url(r'^materia/(?P<pk>[0-9]+)/ta$', url(r'^materia/(?P<pk>[0-9]+)/ta$',
@ -36,23 +35,24 @@ urlpatterns = [
ProposicaoTaView.as_view(), name='proposicao_ta'), ProposicaoTaView.as_view(), name='proposicao_ta'),
url(r'^sistema/proposicoes/tipo/', include(tipo_proposicao_crud.urls)), url(r'^sistema/proposicoes/tipo/',
url(r'^sistema/proposicoes/autor/', include(autor_crud.urls)), include(TipoProposicaoCrud.get_urls())),
url(r'^sistema/materia/tipo/', include(tipo_materia_crud.urls)), url(r'^sistema/proposicoes/autor/', include(AutorCrud.get_urls())),
url(r'^sistema/materia/tipo/', include(TipoMateriaCrud.get_urls())),
url(r'^sistema/materia/regime-tramitacao/', url(r'^sistema/materia/regime-tramitacao/',
include(regime_tramitacao_crud.urls)), include(RegimeTramitacaoCrud.get_urls())),
url(r'^sistema/materia/tipo-autor/', include(tipo_autor_crud.urls)), url(r'^sistema/materia/tipo-autor/', include(TipoAutorCrud.get_urls())),
url(r'^sistema/materia/tipo-documento/', url(r'^sistema/materia/tipo-documento/',
include(tipo_documento_crud.urls)), include(TipoDocumentoCrud.get_urls())),
url(r'^sistema/materia/tipo-fim-relatoria/', url(r'^sistema/materia/tipo-fim-relatoria/',
include(tipo_fim_relatoria_crud.urls)), include(TipoFimRelatoriaCrud.get_urls())),
url(r'^sistema/materia/unidade-tramitacao/', url(r'^sistema/materia/unidade-tramitacao/',
include(unidade_tramitacao_crud.urls)), include(UnidadeTramitacaoCrud.get_urls())),
url(r'^sistema/materia/origem/', include(origem_crud.urls)), url(r'^sistema/materia/origem/', include(OrigemCrud.get_urls())),
url(r'^sistema/materia/autor/', include(autor_crud.urls)), url(r'^sistema/materia/autor/', include(AutorCrud.get_urls())),
url(r'^sistema/materia/status-tramitacao/', url(r'^sistema/materia/status-tramitacao/',
include(status_tramitacao_crud.urls)), include(StatusTramitacaoCrud.get_urls())),
url(r'^sistema/materia/orgao/', include(orgao_crud.urls)), url(r'^sistema/materia/orgao/', include(OrgaoCrud.get_urls())),
url(r'^materia/formulario-simplificado', url(r'^materia/formulario-simplificado',
FormularioSimplificadoView.as_view(), FormularioSimplificadoView.as_view(),
name='formulario_simplificado'), name='formulario_simplificado'),

43
materia/views.py

@ -17,7 +17,7 @@ from django.views.generic import CreateView, FormView, ListView, TemplateView
from base.models import CasaLegislativa from base.models import CasaLegislativa
from comissoes.models import Comissao, Composicao from comissoes.models import Comissao, Composicao
from compilacao.views import IntegracaoTaView from compilacao.views import IntegracaoTaView
from crud import Crud, make_pagination from crud.base import Crud, make_pagination
from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica
from parlamentares.models import Partido from parlamentares.models import Partido
from sapl.utils import get_base_url from sapl.utils import get_base_url
@ -35,25 +35,26 @@ from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria,
TipoFimRelatoria, TipoMateriaLegislativa, TipoProposicao, TipoFimRelatoria, TipoMateriaLegislativa, TipoProposicao,
Tramitacao, UnidadeTramitacao) Tramitacao, UnidadeTramitacao)
origem_crud = Crud(Origem, 'origem') OrigemCrud = Crud.build(Origem, 'origem')
tipo_materia_crud = Crud(TipoMateriaLegislativa, 'tipo_materia_legislativa') TipoMateriaCrud = Crud.build(TipoMateriaLegislativa,
regime_tramitacao_crud = Crud(RegimeTramitacao, 'regime_tramitacao') 'tipo_materia_legislativa')
tipo_documento_crud = Crud(TipoDocumento, 'tipo_documento') RegimeTramitacaoCrud = Crud.build(RegimeTramitacao, 'regime_tramitacao')
tipo_fim_relatoria_crud = Crud(TipoFimRelatoria, 'fim_relatoria') TipoDocumentoCrud = Crud.build(TipoDocumento, 'tipo_documento')
materia_legislativa_crud = Crud(MateriaLegislativa, '') TipoFimRelatoriaCrud = Crud.build(TipoFimRelatoria, 'fim_relatoria')
Anexada_crud = Crud(Anexada, '') MateriaLegislativaCrud = Crud.build(MateriaLegislativa, '')
tipo_autor_crud = Crud(TipoAutor, 'tipo_autor') AnexadaCrud = Crud.build(Anexada, '')
autor_crud = Crud(Autor, 'autor') TipoAutorCrud = Crud.build(TipoAutor, 'tipo_autor')
autoria_crud = Crud(Autoria, '') AutorCrud = Crud.build(Autor, 'autor')
documento_acessorio_crud = Crud(DocumentoAcessorio, '') AutoriaCrud = Crud.build(Autoria, '')
numeracao_crud = Crud(Numeracao, '') DocumentoAcessorioCrud = Crud.build(DocumentoAcessorio, '')
orgao_crud = Crud(Orgao, 'orgao') NumeracaoCrud = Crud.build(Numeracao, '')
relatoria_crud = Crud(Relatoria, '') OrgaoCrud = Crud.build(Orgao, 'orgao')
tipo_proposicao_crud = Crud(TipoProposicao, 'tipo_proposicao') RelatoriaCrud = Crud.build(Relatoria, '')
proposicao_crud = Crud(Proposicao, '') TipoProposicaoCrud = Crud.build(TipoProposicao, 'tipo_proposicao')
status_tramitacao_crud = Crud(StatusTramitacao, 'status_tramitacao') ProposicaoCrud = Crud.build(Proposicao, '')
unidade_tramitacao_crud = Crud(UnidadeTramitacao, 'unidade_tramitacao') StatusTramitacaoCrud = Crud.build(StatusTramitacao, 'status_tramitacao')
tramitacao_crud = Crud(Tramitacao, '') UnidadeTramitacaoCrud = Crud.build(UnidadeTramitacao, 'unidade_tramitacao')
TramitacaoCrud = Crud.build(Tramitacao, '')
class FormularioSimplificadoView(CreateView): class FormularioSimplificadoView(CreateView):
@ -1423,7 +1424,7 @@ class ProposicaoTaView(IntegracaoTaView):
model_type_foreignkey = TipoProposicao model_type_foreignkey = TipoProposicao
class AcompanhamentoMateriaView(materia_legislativa_crud.CrudDetailView): class AcompanhamentoMateriaView(MateriaLegislativaCrud.CrudDetailView):
template_name = "materia/acompanhamento_materia.html" template_name = "materia/acompanhamento_materia.html"
def get_random_chars(self): def get_random_chars(self):

20
norma/forms.py

@ -1,6 +1,7 @@
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import Fieldset, Layout from crispy_forms.layout import Fieldset, Layout
from django import forms from django import forms
from django.core.exceptions import ValidationError
from django.forms import ModelForm from django.forms import ModelForm
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
@ -39,14 +40,14 @@ class NormaJuridicaPesquisaForm(ModelForm):
format='%d/%m/%Y', format='%d/%m/%Y',
attrs={'class': 'dateinput'})) attrs={'class': 'dateinput'}))
publicação_inicial = forms.DateField(label=u'Publicação Inicial', publicacao_inicial = forms.DateField(label=u'Publicação Inicial',
input_formats=['%d/%m/%Y'], input_formats=['%d/%m/%Y'],
required=False, required=False,
widget=forms.DateInput( widget=forms.DateInput(
format='%d/%m/%Y', format='%d/%m/%Y',
attrs={'class': 'dateinput'})) attrs={'class': 'dateinput'}))
publicação_final = forms.DateField(label=u'Publicação Final', publicacao_final = forms.DateField(label=u'Publicação Final',
input_formats=['%d/%m/%Y'], input_formats=['%d/%m/%Y'],
required=False, required=False,
widget=forms.DateInput( widget=forms.DateInput(
@ -60,8 +61,8 @@ class NormaJuridicaPesquisaForm(ModelForm):
'ano', 'ano',
'periodo_inicial', 'periodo_inicial',
'periodo_final', 'periodo_final',
'publicação_inicial', 'publicacao_inicial',
'publicação_final'] 'publicacao_final']
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -75,7 +76,7 @@ class NormaJuridicaPesquisaForm(ModelForm):
[('periodo_inicial', 6), ('periodo_final', 6)]) [('periodo_inicial', 6), ('periodo_final', 6)])
row4 = crispy_layout_mixin.to_row( row4 = crispy_layout_mixin.to_row(
[('publicação_inicial', 6), ('publicação_final', 6)]) [('publicacao_inicial', 6), ('publicacao_final', 6)])
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
@ -99,6 +100,15 @@ class NormaJuridicaForm(ModelForm):
ano_materia = forms.CharField(label='Ano', required=False) ano_materia = forms.CharField(label='Ano', required=False)
def clean_texto_integral(self):
texto_integral = self.cleaned_data.get('texto_integral', False)
if texto_integral:
if texto_integral.size > 5*1024*1024:
raise ValidationError("Arquivo muito grande. ( > 5mb )")
return texto_integral
else:
raise ValidationError("Não foi possível salvar o arquivo.")
class Meta: class Meta:
model = NormaJuridica model = NormaJuridica
fields = ['tipo', fields = ['tipo',

30
norma/urls.py

@ -1,23 +1,31 @@
from django.conf.urls import include, url from django.conf.urls import include, url
from norma.views import (NormaEditView, NormaIncluirView, NormaPesquisaView, from norma.views import (AssuntoNormaCrud, NormaEditView, NormaIncluirView,
NormaTaView, PesquisaNormaListView, NormaPesquisaView, NormaTaView, NormaTemporarioCrud,
assunto_norma_crud, norma_temporario_crud, PesquisaNormaListView, TipoNormaCrud)
tipo_norma_crud)
# norma_url_patterns = norma_crud.urlpatterns + [] # @LeandroRoberto comentou em
norma_url_patterns = norma_temporario_crud.urlpatterns + [ # https://github.com/interlegis/sapl/pull/255#discussion_r55894269
#
# esse código só está assim de forma temporária, criado no início do
# projeto para apenas dar uma tela básica de listagem de normas para a app
# compilação... a implementação da app norma é independente e não sei em
# que estágio está... para a compilação é relevante apenas que se mantenha
# o código abaixo:
# url(r'^norma/(?P<pk>[0-9]+)/ta$', NormaTaView.as_view(), name='ta')
# bem como a classe NormaTaView que está em norma.views
norma_url_patterns, namespace = NormaTemporarioCrud.get_urls()
norma_url_patterns += [
url(r'^norma/(?P<pk>[0-9]+)/ta$', url(r'^norma/(?P<pk>[0-9]+)/ta$',
NormaTaView.as_view(), name='ta') NormaTaView.as_view(), name='ta')
] ]
urlpatterns = [ urlpatterns = [
url(r'^norma/', include(norma_url_patterns, url(r'^norma/', include(norma_url_patterns, namespace)),
norma_temporario_crud.namespace,
norma_temporario_crud.namespace)),
url(r'^sistema/norma/tipo/', include(tipo_norma_crud.urls)), url(r'^sistema/norma/tipo/', include(TipoNormaCrud.get_urls())),
url(r'^sistema/norma/assunto/', include(assunto_norma_crud.urls)), url(r'^sistema/norma/assunto/', include(AssuntoNormaCrud.get_urls())),
url(r'^norma/incluir$', NormaIncluirView.as_view(), name='norma_incluir'), url(r'^norma/incluir$', NormaIncluirView.as_view(), name='norma_incluir'),
url(r'^norma/(?P<pk>[0-9]+)/editar$', url(r'^norma/(?P<pk>[0-9]+)/editar$',

34
norma/views.py

@ -8,18 +8,18 @@ from django.shortcuts import redirect
from django.views.generic import CreateView, FormView, ListView from django.views.generic import CreateView, FormView, ListView
from compilacao.views import IntegracaoTaView from compilacao.views import IntegracaoTaView
from crud import Crud, make_pagination from crud.base import Crud, make_pagination
from materia.models import MateriaLegislativa from materia.models import MateriaLegislativa
from .forms import NormaJuridicaForm, NormaJuridicaPesquisaForm from .forms import NormaJuridicaForm, NormaJuridicaPesquisaForm
from .models import (AssuntoNorma, LegislacaoCitada, NormaJuridica, from .models import (AssuntoNorma, LegislacaoCitada, NormaJuridica,
TipoNormaJuridica) TipoNormaJuridica)
assunto_norma_crud = Crud(AssuntoNorma, 'assunto_norma_juridica') AssuntoNormaCrud = Crud.build(AssuntoNorma, 'assunto_norma_juridica')
tipo_norma_crud = Crud(TipoNormaJuridica, 'tipo_norma_juridica') TipoNormaCrud = Crud.build(TipoNormaJuridica, 'tipo_norma_juridica')
norma_crud = Crud(NormaJuridica, '') NormaCrud = Crud.build(NormaJuridica, '')
norma_temporario_crud = Crud(NormaJuridica, 'normajuridica') NormaTemporarioCrud = Crud.build(NormaJuridica, 'normajuridica')
legislacao_citada_crud = Crud(LegislacaoCitada, '') LegislacaoCitadaCrud = Crud.build(LegislacaoCitada, '')
class NormaPesquisaView(FormView): class NormaPesquisaView(FormView):
@ -44,9 +44,9 @@ class NormaPesquisaView(FormView):
if form.data['periodo_inicial'] and form.data['periodo_final']: if form.data['periodo_inicial'] and form.data['periodo_final']:
kwargs['periodo_inicial'] = form.data['periodo_inicial'] kwargs['periodo_inicial'] = form.data['periodo_inicial']
kwargs['periodo_final'] = form.data['periodo_final'] kwargs['periodo_final'] = form.data['periodo_final']
if form.data['publicação_inicial'] and form.data['publicação_final']: if form.data['publicacao_inicial'] and form.data['publicacao_final']:
kwargs['publicação_inicial'] = form.data['publicação_inicial'] kwargs['publicacao_inicial'] = form.data['publicacao_inicial']
kwargs['publicação_final'] = form.data['publicação_final'] kwargs['publicacao_final'] = form.data['publicacao_final']
request.session['kwargs'] = kwargs request.session['kwargs'] = kwargs
return redirect('list_pesquisa_norma') return redirect('list_pesquisa_norma')
@ -68,16 +68,16 @@ class PesquisaNormaListView(ListView):
periodo_final = datetime.strptime( periodo_final = datetime.strptime(
kwargs['periodo_final'], kwargs['periodo_final'],
'%d/%m/%Y').strftime('%Y-%m-%d') '%d/%m/%Y').strftime('%Y-%m-%d')
publicação_inicial = datetime.strptime( publicacao_inicial = datetime.strptime(
kwargs['publicação_inicial'], kwargs['publicacao_inicial'],
'%d/%m/%Y').strftime('%Y-%m-%d') '%d/%m/%Y').strftime('%Y-%m-%d')
publicação_final = datetime.strptime( publicacao_final = datetime.strptime(
kwargs['publicação_final'], kwargs['publicacao_final'],
'%d/%m/%Y').strftime('%Y-%m-%d') '%d/%m/%Y').strftime('%Y-%m-%d')
normas = normas.filter( normas = normas.filter(
data__range=(periodo_inicial, periodo_final), data__range=(periodo_inicial, periodo_final),
data_publicacao__range=(publicação_inicial, publicação_final)) data_publicacao__range=(publicacao_inicial, publicacao_final))
if 'periodo_inicial' in kwargs: if 'periodo_inicial' in kwargs:
inicial = datetime.strptime(kwargs['periodo_inicial'], inicial = datetime.strptime(kwargs['periodo_inicial'],
@ -87,10 +87,10 @@ class PesquisaNormaListView(ListView):
normas = normas.filter(data__range=(inicial, final)) normas = normas.filter(data__range=(inicial, final))
if 'publicação_inicial' in kwargs: if 'publicacao_inicial' in kwargs:
inicial = datetime.strptime(kwargs['publicação_inicial'], inicial = datetime.strptime(kwargs['publicacao_inicial'],
'%d/%m/%Y').strftime('%Y-%m-%d') '%d/%m/%Y').strftime('%Y-%m-%d')
final = datetime.strptime(kwargs['publicação_final'], final = datetime.strptime(kwargs['publicacao_final'],
'%d/%m/%Y').strftime('%Y-%m-%d') '%d/%m/%Y').strftime('%Y-%m-%d')
normas = normas.filter(data_publicacao__range=(inicial, final)) normas = normas.filter(data_publicacao__range=(inicial, final))

4
painel/urls.py

@ -1,6 +1,6 @@
from django.conf.urls import url from django.conf.urls import url
from .views import controlador_painel # cronometro_painel_crud, from .views import controlador_painel # CronometroPainelCrud,
from .views import (cronometro_painel, get_dados_painel, painel_mensagem_view, from .views import (cronometro_painel, get_dados_painel, painel_mensagem_view,
painel_parlamentares_view, painel_view, painel_parlamentares_view, painel_view,
painel_votacao_view) painel_votacao_view)
@ -15,5 +15,5 @@ urlpatterns = [
name='painel_parlamentares'), name='painel_parlamentares'),
url(r'^painel/votacao$', painel_votacao_view, name='painel_votacao'), url(r'^painel/votacao$', painel_votacao_view, name='painel_votacao'),
url(r'^painel/cronometro$', cronometro_painel, name='cronometro_painel'), url(r'^painel/cronometro$', cronometro_painel, name='cronometro_painel'),
# url(r'^painel/cronometro$', include(cronometro_painel_crud.urls)), # url(r'^painel/cronometro$', include(CronometroPainelCrud.get_urls())),
] ]

4
painel/views.py

@ -5,7 +5,7 @@ from django.http import HttpResponse, JsonResponse
from django.shortcuts import render from django.shortcuts import render
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from crud import Crud from crud.base import Crud
from painel.models import Painel from painel.models import Painel
from parlamentares.models import Filiacao from parlamentares.models import Filiacao
from sessao.models import (ExpedienteMateria, OrdemDia, PresencaOrdemDia, from sessao.models import (ExpedienteMateria, OrdemDia, PresencaOrdemDia,
@ -14,7 +14,7 @@ from sessao.models import (ExpedienteMateria, OrdemDia, PresencaOrdemDia,
from .models import Cronometro from .models import Cronometro
cronometro_painel_crud = Crud(Cronometro, '') CronometroPainelCrud = Crud.build(Cronometro, '')
def controlador_painel(request): def controlador_painel(request):

35
parlamentares/urls.py

@ -1,35 +1,36 @@
from django.conf.urls import include, url from django.conf.urls import include, url
from parlamentares.views import (FiliacaoEditView, FiliacaoView, from parlamentares.views import (CargoMesaCrud, ColigacaoCrud,
MandatoEditView, MandatoView, FiliacaoEditView, FiliacaoView,
MesaDiretoraView, ParlamentaresCadastroView, LegislaturaCrud, MandatoEditView, MandatoView,
MesaDiretoraView, NivelInstrucaoCrud,
ParlamentaresCadastroView,
ParlamentaresDependentesEditView, ParlamentaresDependentesEditView,
ParlamentaresDependentesView, ParlamentaresDependentesView,
ParlamentaresEditarView, ParlamentaresView, ParlamentaresEditarView, ParlamentaresView,
cargo_mesa_crud, coligacao_crud, PartidoCrud, SessaoLegislativaCrud,
legislatura_crud, nivel_instrucao_crud, TipoAfastamentoCrud, TipoDependenteCrud,
partido_crud, sessao_legislativa_crud, TipoMilitarCrud)
tipo_afastamento_crud, tipo_dependente_crud,
tipo_militar_crud)
urlpatterns = [ urlpatterns = [
url(r'^sistema/parlamentares/legislatura/', url(r'^sistema/parlamentares/legislatura/',
include(legislatura_crud.urls)), include(LegislaturaCrud.get_urls())),
url(r'^sistema/parlamentares/tipo-dependente/', url(r'^sistema/parlamentares/tipo-dependente/',
include(tipo_dependente_crud.urls)), include(TipoDependenteCrud.get_urls())),
url(r'^sistema/parlamentares/nivel-instrucao/', url(r'^sistema/parlamentares/nivel-instrucao/',
include(nivel_instrucao_crud.urls)), include(NivelInstrucaoCrud.get_urls())),
url(r'^sistema/parlamentares/coligacao/', include(coligacao_crud.urls)), url(r'^sistema/parlamentares/coligacao/',
include(ColigacaoCrud.get_urls())),
url(r'^sistema/parlamentares/tipo-afastamento/', url(r'^sistema/parlamentares/tipo-afastamento/',
include(tipo_afastamento_crud.urls)), include(TipoAfastamentoCrud.get_urls())),
url(r'^sistema/parlamentares/tipo-militar/', url(r'^sistema/parlamentares/tipo-militar/',
include(tipo_militar_crud.urls)), include(TipoMilitarCrud.get_urls())),
url(r'^sistema/parlamentares/partido/', include(partido_crud.urls)), url(r'^sistema/parlamentares/partido/', include(PartidoCrud.get_urls())),
url(r'^sistema/mesa-diretora/sessao-legislativa/', url(r'^sistema/mesa-diretora/sessao-legislativa/',
include(sessao_legislativa_crud.urls)), include(SessaoLegislativaCrud.get_urls())),
url(r'^sistema/mesa-diretora/cargo-mesa/', url(r'^sistema/mesa-diretora/cargo-mesa/',
include(cargo_mesa_crud.urls)), include(CargoMesaCrud.get_urls())),
url(r'^parlamentares/$', url(r'^parlamentares/$',
ParlamentaresView.as_view(), name='parlamentares'), ParlamentaresView.as_view(), name='parlamentares'),

28
parlamentares/views.py

@ -7,7 +7,7 @@ from django.http import HttpResponseRedirect
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.views.generic import CreateView, FormView, UpdateView from django.views.generic import CreateView, FormView, UpdateView
from crud import Crud from crud.base import Crud
from .forms import (DependenteEditForm, DependenteForm, FiliacaoEditForm, from .forms import (DependenteEditForm, DependenteForm, FiliacaoEditForm,
FiliacaoForm, MandatoEditForm, MandatoForm, FiliacaoForm, MandatoEditForm, MandatoForm,
@ -18,19 +18,19 @@ from .models import (CargoMesa, Coligacao, ComposicaoMesa, Dependente,
Parlamentar, Partido, SessaoLegislativa, SituacaoMilitar, Parlamentar, Partido, SessaoLegislativa, SituacaoMilitar,
TipoAfastamento, TipoDependente) TipoAfastamento, TipoDependente)
cargo_mesa_crud = Crud(CargoMesa, 'cargo_mesa') CargoMesaCrud = Crud.build(CargoMesa, 'cargo_mesa')
legislatura_crud = Crud(Legislatura, 'tabelas_auxiliares#legislatura') LegislaturaCrud = Crud.build(Legislatura, 'tabelas_auxiliares#legislatura')
coligacao_crud = Crud(Coligacao, 'coligacao') ColigacaoCrud = Crud.build(Coligacao, 'coligacao')
partido_crud = Crud(Partido, 'partidos') PartidoCrud = Crud.build(Partido, 'partidos')
dependente_crud = Crud(Dependente, '') DependenteCrud = Crud.build(Dependente, '')
sessao_legislativa_crud = Crud(SessaoLegislativa, 'sessao_legislativa') SessaoLegislativaCrud = Crud.build(SessaoLegislativa, 'sessao_legislativa')
parlamentar_crud = Crud(Parlamentar, '') ParlamentarCrud = Crud.build(Parlamentar, '')
filiacao_crud = Crud(Filiacao, '') FiliacaoCrud = Crud.build(Filiacao, '')
mandato_crud = Crud(Mandato, '') MandatoCrud = Crud.build(Mandato, '')
tipo_dependente_crud = Crud(TipoDependente, 'tipo_dependente') TipoDependenteCrud = Crud.build(TipoDependente, 'tipo_dependente')
nivel_instrucao_crud = Crud(NivelInstrucao, 'nivel_instrucao') NivelInstrucaoCrud = Crud.build(NivelInstrucao, 'nivel_instrucao')
tipo_afastamento_crud = Crud(TipoAfastamento, 'tipo_afastamento') TipoAfastamentoCrud = Crud.build(TipoAfastamento, 'tipo_afastamento')
tipo_militar_crud = Crud(SituacaoMilitar, 'tipo_situa_militar') TipoMilitarCrud = Crud.build(SituacaoMilitar, 'tipo_situa_militar')
class ParlamentaresView(FormView): class ParlamentaresView(FormView):

6
protocoloadm/forms.py

@ -14,9 +14,9 @@ from crispy_layout_mixin import form_actions
from materia.models import TipoMateriaLegislativa from materia.models import TipoMateriaLegislativa
from sapl.utils import RANGE_ANOS from sapl.utils import RANGE_ANOS
from .models import (Autor, DocumentoAcessorioAdministrativo, from .models import (DocumentoAcessorioAdministrativo, DocumentoAdministrativo,
DocumentoAdministrativo, Protocolo, Protocolo, TipoDocumentoAdministrativo,
TipoDocumentoAdministrativo, TramitacaoAdministrativo) TramitacaoAdministrativo)
TIPOS_PROTOCOLO = [('0', 'Enviado'), ('1', 'Recebido')] TIPOS_PROTOCOLO = [('0', 'Enviado'), ('1', 'Recebido')]

37
protocoloadm/urls.py

@ -4,40 +4,41 @@ from protocoloadm.views import (AnularProtocoloAdmView,
ComprovanteProtocoloView, ComprovanteProtocoloView,
CriarDocumentoProtocolo, CriarDocumentoProtocolo,
DetailDocumentoAdministrativo, DetailDocumentoAdministrativo,
DocumentoAcessorioAdministrativoCrud,
DocumentoAcessorioAdministrativoEditView, DocumentoAcessorioAdministrativoEditView,
DocumentoAcessorioAdministrativoView, DocumentoAcessorioAdministrativoView,
DocumentoAdministrativoCrud,
PesquisarDocumentoAdministrativo, PesquisarDocumentoAdministrativo,
ProposicaoDetailView, ProposicaoReceberView, ProposicaoDetailView, ProposicaoReceberView,
ProposicaoView, ProposicoesIncorporadasView, ProposicaoView, ProposicoesIncorporadasView,
ProposicoesNaoIncorporadasView, ProposicoesNaoIncorporadasView,
ProposicoesNaoRecebidasView, ProposicoesNaoRecebidasView,
ProtocoloDocumentoView, ProtocoloListView, ProtocoloDocumentoCrud, ProtocoloDocumentoView,
ProtocoloListView, ProtocoloMateriaCrud,
ProtocoloMateriaView, ProtocoloMostrarView, ProtocoloMateriaView, ProtocoloMostrarView,
ProtocoloPesquisaView, TramitacaoAdmDeleteView, ProtocoloPesquisaView,
TramitacaoAdmEditView, StatusTramitacaoAdministrativoCrud,
TramitacaoAdmIncluirView, TramitacaoAdmView, TipoDocumentoAdministrativoCrud,
documento_acessorio_administrativo_crud, TramitacaoAdmDeleteView, TramitacaoAdmEditView,
documento_administrativo_crud, TramitacaoAdmIncluirView,
pesquisa_autores, protocolo_documento_crud, TramitacaoAdministrativoCrud,
protocolo_materia_crud, TramitacaoAdmView, pesquisa_autores)
status_tramitacao_administrativo_crud,
tipo_documento_administrativo_crud,
tramitacao_administrativo_crud)
urlpatterns = [ urlpatterns = [
url(r'^protocoloadm/docadm/', include(documento_administrativo_crud.urls)), url(r'^protocoloadm/docadm/',
include(DocumentoAdministrativoCrud.get_urls())),
url(r'^protocoloadm/tipo-documento-adm/', url(r'^protocoloadm/tipo-documento-adm/',
include(tipo_documento_administrativo_crud.urls)), include(TipoDocumentoAdministrativoCrud.get_urls())),
url(r'^protocoloadm/doc-acessorio/', url(r'^protocoloadm/doc-acessorio/',
include(documento_acessorio_administrativo_crud.urls)), include(DocumentoAcessorioAdministrativoCrud.get_urls())),
url(r'^protocoloadm/status-tramitacao-adm/', url(r'^protocoloadm/status-tramitacao-adm/',
include(status_tramitacao_administrativo_crud.urls)), include(StatusTramitacaoAdministrativoCrud.get_urls())),
url(r'^protocoloadm/tramitacao-adm/', url(r'^protocoloadm/tramitacao-adm/',
include(tramitacao_administrativo_crud.urls)), include(TramitacaoAdministrativoCrud.get_urls())),
url(r'^protocoloadm/protocolo-doc/', url(r'^protocoloadm/protocolo-doc/',
include(protocolo_documento_crud.urls)), include(ProtocoloDocumentoCrud.get_urls())),
url(r'^protocoloadm/protocolo-mat/', url(r'^protocoloadm/protocolo-mat/',
include(protocolo_materia_crud.urls), name='protocolomat'), include(ProtocoloMateriaCrud.get_urls()), name='protocolomat'),
url(r'^protocoloadm/protocolo$', url(r'^protocoloadm/protocolo$',
ProtocoloPesquisaView.as_view(), name='protocolo'), ProtocoloPesquisaView.as_view(), name='protocolo'),
url(r'^protocoloadm/protocolo_list$', url(r'^protocoloadm/protocolo_list$',

19
protocoloadm/views.py

@ -12,7 +12,7 @@ from django.utils.translation import ugettext_lazy as _
from django.views.generic import CreateView, DetailView, FormView, ListView from django.views.generic import CreateView, DetailView, FormView, ListView
from django.views.generic.base import TemplateView from django.views.generic.base import TemplateView
from crud import Crud, make_pagination from crud.base import Crud, make_pagination
from materia.models import Proposicao, TipoMateriaLegislativa from materia.models import Proposicao, TipoMateriaLegislativa
from sapl.utils import create_barcode, get_client_ip from sapl.utils import create_barcode, get_client_ip
@ -25,17 +25,18 @@ from .models import (Autor, DocumentoAcessorioAdministrativo,
StatusTramitacaoAdministrativo, StatusTramitacaoAdministrativo,
TipoDocumentoAdministrativo, TramitacaoAdministrativo) TipoDocumentoAdministrativo, TramitacaoAdministrativo)
tipo_documento_administrativo_crud = Crud(TipoDocumentoAdministrativo, '') TipoDocumentoAdministrativoCrud = Crud.build(TipoDocumentoAdministrativo,
documento_administrativo_crud = Crud(DocumentoAdministrativo, '') '')
documento_acessorio_administrativo_crud = Crud( DocumentoAdministrativoCrud = Crud.build(DocumentoAdministrativo, '')
DocumentoAcessorioAdministrativoCrud = Crud.build(
DocumentoAcessorioAdministrativo, '') DocumentoAcessorioAdministrativo, '')
status_tramitacao_administrativo_crud = Crud( StatusTramitacaoAdministrativoCrud = Crud.build(
StatusTramitacaoAdministrativo, '') StatusTramitacaoAdministrativo, '')
tramitacao_administrativo_crud = Crud(TramitacaoAdministrativo, '') TramitacaoAdministrativoCrud = Crud.build(TramitacaoAdministrativo, '')
protocolo_documento_crud = Crud(Protocolo, '') ProtocoloDocumentoCrud = Crud.build(Protocolo, '')
# FIXME precisa de uma chave diferente para o layout # FIXME precisa de uma chave diferente para o layout
protocolo_materia_crud = Crud(Protocolo, '') ProtocoloMateriaCrud = Crud.build(Protocolo, '')
class ProtocoloPesquisaView(FormView): class ProtocoloPesquisaView(FormView):
@ -139,7 +140,7 @@ class AnularProtocoloAdmView(FormView):
protocolo = Protocolo.objects.get(numero=numero, ano=ano) protocolo = Protocolo.objects.get(numero=numero, ano=ano)
protocolo.anulado = True protocolo.anulado = True
protocolo.justificativa_anulacao = sub('&nbsp;', ' ', strip_tags( protocolo.justificativa_anulacao = sub('&nbsp;', ' ', strip_tags(
form.cleaned_data['justificativa_anulacao'])) form.cleaned_data['justificativa_anulacao']))
protocolo.user_anulacao = form.cleaned_data['user_anulacao'] protocolo.user_anulacao = form.cleaned_data['user_anulacao']
protocolo.ip_anulacao = form.cleaned_data['ip_anulacao'] protocolo.ip_anulacao = form.cleaned_data['ip_anulacao']
protocolo.save() protocolo.save()

2
pytest.ini

@ -1,6 +1,6 @@
[pytest] [pytest]
DJANGO_SETTINGS_MODULE=sapl.settings DJANGO_SETTINGS_MODULE=sapl.settings
norecursedirs = legacy crud_tests norecursedirs = legacy crud
# REUSING DATABASE BY DEFAULT (as a performance optimization) # REUSING DATABASE BY DEFAULT (as a performance optimization)
# http://pytest-django.readthedocs.org/en/latest/database.html#example-work-flow-with-reuse-db-and-create-db # http://pytest-django.readthedocs.org/en/latest/database.html#example-work-flow-with-reuse-db-and-create-db

1
relatorios/views.py

@ -26,6 +26,7 @@ from .templates import (pdf_capa_processo_gerar,
uf_dic = dict(UF) uf_dic = dict(UF)
def get_kwargs_params(request, fields): def get_kwargs_params(request, fields):
kwargs = {} kwargs = {}
for i in fields: for i in fields:

19
sessao/forms.py

@ -1,6 +1,7 @@
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import Fieldset, Layout from crispy_forms.layout import Fieldset, Layout
from django import forms from django import forms
from django.core.exceptions import ValidationError
from django.forms import ModelForm from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
@ -92,6 +93,24 @@ class SessaoForm(ModelForm):
'hora_fim': forms.TextInput(attrs={'class': 'hora'}), 'hora_fim': forms.TextInput(attrs={'class': 'hora'}),
} }
def clean_url_audio(self):
url_audio = self.cleaned_data.get('url_audio', False)
if url_audio:
if url_audio.size > 5*1024*1024:
raise ValidationError("Arquivo muito grande. ( > 5mb )")
return url_audio
else:
raise ValidationError("Não foi possível salvar o arquivo.")
def clean_url_video(self):
url_video = self.cleaned_data.get('url_video', False)
if url_video:
if url_video.size > 5*1024*1024:
raise ValidationError("Arquivo muito grande. ( > 5mb )")
return url_video
else:
raise ValidationError("Não foi possível salvar o arquivo.")
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
row1 = crispy_layout_mixin.to_row( row1 = crispy_layout_mixin.to_row(

28
sessao/urls.py

@ -12,16 +12,18 @@ from sessao.views import (EditExpedienteOrdemDiaView, EditMateriaOrdemDiaView,
PautaExpedienteDetail, PautaOrdemDetail, PautaExpedienteDetail, PautaOrdemDetail,
PautaSessaoDetailView, PautaSessaoListView, PautaSessaoDetailView, PautaSessaoListView,
PresencaOrdemDiaView, PresencaView, ResumoView, PresencaOrdemDiaView, PresencaView, ResumoView,
SessaoCadastroView, SessaoListView, SessaoCadastroView, SessaoCrud, SessaoListView,
SessaoPlenariaView, VotacaoEditView, SessaoPlenariaView, TipoExpedienteCrud,
VotacaoExpedienteEditView, VotacaoExpedienteView, TipoResultadoVotacaoCrud, TipoSessaoCrud,
VotacaoNominalEditView, VotacaoEditView, VotacaoExpedienteEditView,
VotacaoExpedienteView, VotacaoNominalEditView,
VotacaoNominalExpedienteEditView, VotacaoNominalExpedienteEditView,
VotacaoNominalExpedienteView, VotacaoNominalView, VotacaoNominalExpedienteView, VotacaoNominalView,
VotacaoView, sessao_crud, tipo_expediente_crud, VotacaoView)
tipo_resultado_votacao_crud, tipo_sessao_crud)
urlpatterns_sessao = sessao_crud.urlpatterns + [ urlpatterns_sessao, namespace = SessaoCrud.get_urls()
urlpatterns_sessao = urlpatterns_sessao + [
url(r'^(?P<pk>\d+)/expediente$', url(r'^(?P<pk>\d+)/expediente$',
ExpedienteView.as_view(), name='expediente'), ExpedienteView.as_view(), name='expediente'),
url(r'^(?P<pk>\d+)/presenca$', url(r'^(?P<pk>\d+)/presenca$',
@ -98,21 +100,19 @@ urlpatterns_sessao = sessao_crud.urlpatterns + [
PautaOrdemDetail.as_view(), name='pauta_ordem_detail'), PautaOrdemDetail.as_view(), name='pauta_ordem_detail'),
] ]
sessao_urls = urlpatterns_sessao, sessao_crud.namespace, sessao_crud.namespace
sessao_rest = [ sessao_rest = [
url(r'^sessao$', SessaoPlenariaView.as_view(), name='sessao_rest') url(r'^sessao$', SessaoPlenariaView.as_view(), name='sessao_rest')
] ]
urlpatterns = [ urlpatterns = [
url(r'^sessao/', include(urlpatterns_sessao, url(r'^sessao/', include(urlpatterns_sessao, namespace)),
sessao_crud.namespace, sessao_crud.namespace)),
url(r'^media/(?P<path>.*)$', serve, url(r'^media/(?P<path>.*)$', serve,
{'document_root': settings.MEDIA_ROOT}), {'document_root': settings.MEDIA_ROOT}),
url(r'^rest/', include(sessao_rest)), url(r'^rest/', include(sessao_rest)),
url(r'^sistema/sessao-plenaria/tipo/', include(tipo_sessao_crud.urls)), url(r'^sistema/sessao-plenaria/tipo/',
include(TipoSessaoCrud.get_urls())),
url(r'^sistema/sessao-plenaria/tipo-resultado-votacao/', url(r'^sistema/sessao-plenaria/tipo-resultado-votacao/',
include(tipo_resultado_votacao_crud.urls)), include(TipoResultadoVotacaoCrud.get_urls())),
url(r'^sistema/sessao-plenaria/tipo-expediente/', url(r'^sistema/sessao-plenaria/tipo-expediente/',
include(tipo_expediente_crud.urls)) include(TipoExpedienteCrud.get_urls()))
] ]

74
sessao/views.py

@ -11,7 +11,7 @@ from django.views.generic import CreateView, ListView
from django.views.generic.edit import FormMixin from django.views.generic.edit import FormMixin
from rest_framework import generics from rest_framework import generics
from crud import Crud, make_pagination from crud.base import Crud, make_pagination
from materia.models import (Autoria, DocumentoAcessorio, from materia.models import (Autoria, DocumentoAcessorio,
TipoMateriaLegislativa, Tramitacao) TipoMateriaLegislativa, Tramitacao)
from norma.models import NormaJuridica from norma.models import NormaJuridica
@ -29,14 +29,14 @@ from .models import (CargoMesa, ExpedienteMateria, ExpedienteSessao,
TipoExpediente, TipoResultadoVotacao, TipoSessaoPlenaria, TipoExpediente, TipoResultadoVotacao, TipoSessaoPlenaria,
VotoParlamentar) VotoParlamentar)
tipo_sessao_crud = Crud(TipoSessaoPlenaria, 'tipo_sessao_plenaria') TipoSessaoCrud = Crud.build(TipoSessaoPlenaria, 'tipo_sessao_plenaria')
sessao_crud = Crud(SessaoPlenaria, '') SessaoCrud = Crud.build(SessaoPlenaria, '')
expediente_materia_crud = Crud(ExpedienteMateria, '') ExpedienteMateriaCrud = Crud.build(ExpedienteMateria, '')
ordem_dia_crud = Crud(OrdemDia, '') OrdemDiaCrud = Crud.build(OrdemDia, '')
tipo_resultado_votacao_crud = Crud( TipoResultadoVotacaoCrud = Crud.build(
TipoResultadoVotacao, 'tipo_resultado_votacao') TipoResultadoVotacao, 'tipo_resultado_votacao')
tipo_expediente_crud = Crud(TipoExpediente, 'tipo_expediente') TipoExpedienteCrud = Crud.build(TipoExpediente, 'tipo_expediente')
registro_votacao_crud = Crud(RegistroVotacao, '') RegistroVotacaoCrud = Crud.build(RegistroVotacao, '')
class PresencaMixin: class PresencaMixin:
@ -56,7 +56,7 @@ class PresencaMixin:
yield (parlamentar, False) yield (parlamentar, False)
class PresencaView(FormMixin, PresencaMixin, sessao_crud.CrudDetailView): class PresencaView(FormMixin, PresencaMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/presenca.html' template_name = 'sessao/presenca.html'
form_class = PresencaForm form_class = PresencaForm
@ -96,13 +96,13 @@ class PresencaView(FormMixin, PresencaMixin, sessao_crud.CrudDetailView):
return reverse('sessaoplenaria:presenca', kwargs={'pk': pk}) return reverse('sessaoplenaria:presenca', kwargs={'pk': pk})
class PainelView(sessao_crud.CrudDetailView): class PainelView(SessaoCrud.CrudDetailView):
template_name = 'sessao/painel.html' template_name = 'sessao/painel.html'
class PresencaOrdemDiaView(FormMixin, class PresencaOrdemDiaView(FormMixin,
PresencaMixin, PresencaMixin,
sessao_crud.CrudDetailView): SessaoCrud.CrudDetailView):
template_name = 'sessao/presenca_ordemdia.html' template_name = 'sessao/presenca_ordemdia.html'
form_class = PresencaForm form_class = PresencaForm
@ -145,7 +145,7 @@ class PresencaOrdemDiaView(FormMixin,
return reverse('sessaoplenaria:presencaordemdia', kwargs={'pk': pk}) return reverse('sessaoplenaria:presencaordemdia', kwargs={'pk': pk})
class ListMateriaOrdemDiaView(FormMixin, sessao_crud.CrudDetailView): class ListMateriaOrdemDiaView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/materia_ordemdia_list.html' template_name = 'sessao/materia_ordemdia_list.html'
form_class = ListMateriaForm form_class = ListMateriaForm
@ -248,7 +248,7 @@ class ListMateriaOrdemDiaView(FormMixin, sessao_crud.CrudDetailView):
return self.get(self, request, args, kwargs) return self.get(self, request, args, kwargs)
class ListExpedienteOrdemDiaView(FormMixin, sessao_crud.CrudDetailView): class ListExpedienteOrdemDiaView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/expediente_ordemdia_list.html' template_name = 'sessao/expediente_ordemdia_list.html'
form_class = ListMateriaForm form_class = ListMateriaForm
@ -349,7 +349,7 @@ class ListExpedienteOrdemDiaView(FormMixin, sessao_crud.CrudDetailView):
return self.get(self, request, args, kwargs) return self.get(self, request, args, kwargs)
class MateriaOrdemDiaView(FormMixin, sessao_crud.CrudDetailView): class MateriaOrdemDiaView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/materia_ordemdia.html' template_name = 'sessao/materia_ordemdia.html'
form_class = MateriaOrdemDiaForm form_class = MateriaOrdemDiaForm
@ -413,7 +413,7 @@ class MateriaOrdemDiaView(FormMixin, sessao_crud.CrudDetailView):
kwargs={'pk': pk}) kwargs={'pk': pk})
class EditMateriaOrdemDiaView(FormMixin, sessao_crud.CrudDetailView): class EditMateriaOrdemDiaView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/materia_ordemdia_edit.html' template_name = 'sessao/materia_ordemdia_edit.html'
form_class = MateriaOrdemDiaForm form_class = MateriaOrdemDiaForm
@ -524,7 +524,7 @@ class EditMateriaOrdemDiaView(FormMixin, sessao_crud.CrudDetailView):
kwargs={'pk': pk}) kwargs={'pk': pk})
class ExpedienteOrdemDiaView(FormMixin, sessao_crud.CrudDetailView): class ExpedienteOrdemDiaView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/materia_ordemdia.html' template_name = 'sessao/materia_ordemdia.html'
form_class = MateriaOrdemDiaForm form_class = MateriaOrdemDiaForm
@ -590,7 +590,7 @@ class ExpedienteOrdemDiaView(FormMixin, sessao_crud.CrudDetailView):
kwargs={'pk': pk}) kwargs={'pk': pk})
class EditExpedienteOrdemDiaView(FormMixin, sessao_crud.CrudDetailView): class EditExpedienteOrdemDiaView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/materia_ordemdia_edit.html' template_name = 'sessao/materia_ordemdia_edit.html'
form_class = MateriaOrdemDiaForm form_class = MateriaOrdemDiaForm
@ -673,7 +673,7 @@ class EditExpedienteOrdemDiaView(FormMixin, sessao_crud.CrudDetailView):
kwargs={'pk': pk}) kwargs={'pk': pk})
class OradorExpedienteDelete(FormMixin, sessao_crud.CrudDetailView): class OradorExpedienteDelete(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/delete_orador.html' template_name = 'sessao/delete_orador.html'
form_class = OradorDeleteForm form_class = OradorDeleteForm
@ -698,7 +698,7 @@ class OradorExpedienteDelete(FormMixin, sessao_crud.CrudDetailView):
return reverse('sessaoplenaria:oradorexpediente', kwargs={'pk': pk}) return reverse('sessaoplenaria:oradorexpediente', kwargs={'pk': pk})
class OradorExpedienteEdit(FormMixin, sessao_crud.CrudDetailView): class OradorExpedienteEdit(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/edit_orador.html' template_name = 'sessao/edit_orador.html'
form_class = OradorForm form_class = OradorForm
@ -758,7 +758,7 @@ class OradorExpedienteEdit(FormMixin, sessao_crud.CrudDetailView):
return reverse('sessaoplenaria:oradorexpediente', kwargs={'pk': pk}) return reverse('sessaoplenaria:oradorexpediente', kwargs={'pk': pk})
class OradorExpedienteView(FormMixin, sessao_crud.CrudDetailView): class OradorExpedienteView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/orador_expediente.html' template_name = 'sessao/orador_expediente.html'
form_class = OradorForm form_class = OradorForm
@ -828,7 +828,7 @@ class OradorExpedienteView(FormMixin, sessao_crud.CrudDetailView):
return reverse('sessaoplenaria:oradorexpediente', kwargs={'pk': pk}) return reverse('sessaoplenaria:oradorexpediente', kwargs={'pk': pk})
class MesaView(FormMixin, sessao_crud.CrudDetailView): class MesaView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/mesa.html' template_name = 'sessao/mesa.html'
form_class = MesaForm form_class = MesaForm
@ -922,7 +922,7 @@ class MesaView(FormMixin, sessao_crud.CrudDetailView):
return reverse('sessaoplenaria:mesa', kwargs={'pk': pk}) return reverse('sessaoplenaria:mesa', kwargs={'pk': pk})
class ResumoView(sessao_crud.CrudDetailView): class ResumoView(SessaoCrud.CrudDetailView):
template_name = 'sessao/resumo.html' template_name = 'sessao/resumo.html'
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
@ -1098,7 +1098,7 @@ class ResumoView(sessao_crud.CrudDetailView):
return self.render_to_response(context) return self.render_to_response(context)
class ExpedienteView(FormMixin, sessao_crud.CrudDetailView): class ExpedienteView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/expediente.html' template_name = 'sessao/expediente.html'
form_class = ExpedienteForm form_class = ExpedienteForm
@ -1162,7 +1162,7 @@ class ExpedienteView(FormMixin, sessao_crud.CrudDetailView):
return reverse('sessaoplenaria:expediente', kwargs={'pk': pk}) return reverse('sessaoplenaria:expediente', kwargs={'pk': pk})
class ExplicacaoView(FormMixin, sessao_crud.CrudDetailView): class ExplicacaoView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/explicacao.html' template_name = 'sessao/explicacao.html'
form_class = OradorForm form_class = OradorForm
@ -1232,7 +1232,7 @@ class ExplicacaoView(FormMixin, sessao_crud.CrudDetailView):
return reverse('sessaoplenaria:explicacao', kwargs={'pk': pk}) return reverse('sessaoplenaria:explicacao', kwargs={'pk': pk})
class ExplicacaoDelete(FormMixin, sessao_crud.CrudDetailView): class ExplicacaoDelete(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/delete_explicacao.html' template_name = 'sessao/delete_explicacao.html'
form_class = OradorDeleteForm form_class = OradorDeleteForm
@ -1255,7 +1255,7 @@ class ExplicacaoDelete(FormMixin, sessao_crud.CrudDetailView):
return reverse('sessaoplenaria:explicacao', kwargs={'pk': pk}) return reverse('sessaoplenaria:explicacao', kwargs={'pk': pk})
class ExplicacaoEdit(FormMixin, sessao_crud.CrudDetailView): class ExplicacaoEdit(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/edit_explicacao.html' template_name = 'sessao/edit_explicacao.html'
form_class = OradorForm form_class = OradorForm
@ -1315,7 +1315,7 @@ class ExplicacaoEdit(FormMixin, sessao_crud.CrudDetailView):
return reverse('sessaoplenaria:explicacao', kwargs={'pk': pk}) return reverse('sessaoplenaria:explicacao', kwargs={'pk': pk})
class VotacaoEditView(FormMixin, sessao_crud.CrudDetailView): class VotacaoEditView(FormMixin, SessaoCrud.CrudDetailView):
''' '''
Votação Simbólica e Secreta Votação Simbólica e Secreta
@ -1388,7 +1388,7 @@ class VotacaoEditView(FormMixin, sessao_crud.CrudDetailView):
kwargs={'pk': pk}) kwargs={'pk': pk})
class VotacaoView(FormMixin, sessao_crud.CrudDetailView): class VotacaoView(FormMixin, SessaoCrud.CrudDetailView):
''' '''
Votação Simbólica e Secreta Votação Simbólica e Secreta
@ -1507,7 +1507,7 @@ class VotacaoView(FormMixin, sessao_crud.CrudDetailView):
kwargs={'pk': pk}) kwargs={'pk': pk})
class VotacaoNominalView(FormMixin, sessao_crud.CrudDetailView): class VotacaoNominalView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/votacao/nominal.html' template_name = 'sessao/votacao/nominal.html'
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
@ -1634,7 +1634,7 @@ class VotacaoNominalView(FormMixin, sessao_crud.CrudDetailView):
kwargs={'pk': pk}) kwargs={'pk': pk})
class VotacaoNominalEditView(FormMixin, sessao_crud.CrudDetailView): class VotacaoNominalEditView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/votacao/nominal_edit.html' template_name = 'sessao/votacao/nominal_edit.html'
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
@ -1711,7 +1711,7 @@ class VotacaoNominalEditView(FormMixin, sessao_crud.CrudDetailView):
kwargs={'pk': pk}) kwargs={'pk': pk})
class VotacaoNominalExpedienteView(FormMixin, sessao_crud.CrudDetailView): class VotacaoNominalExpedienteView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/votacao/nominal.html' template_name = 'sessao/votacao/nominal.html'
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
@ -1836,7 +1836,7 @@ class VotacaoNominalExpedienteView(FormMixin, sessao_crud.CrudDetailView):
kwargs={'pk': pk}) kwargs={'pk': pk})
class VotacaoNominalExpedienteEditView(FormMixin, sessao_crud.CrudDetailView): class VotacaoNominalExpedienteEditView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/votacao/nominal_edit.html' template_name = 'sessao/votacao/nominal_edit.html'
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
@ -1913,7 +1913,7 @@ class VotacaoNominalExpedienteEditView(FormMixin, sessao_crud.CrudDetailView):
kwargs={'pk': pk}) kwargs={'pk': pk})
class VotacaoExpedienteView(FormMixin, sessao_crud.CrudDetailView): class VotacaoExpedienteView(FormMixin, SessaoCrud.CrudDetailView):
''' '''
Votação Simbólica e Secreta Votação Simbólica e Secreta
@ -2034,7 +2034,7 @@ class VotacaoExpedienteView(FormMixin, sessao_crud.CrudDetailView):
kwargs={'pk': pk}) kwargs={'pk': pk})
class VotacaoExpedienteEditView(FormMixin, sessao_crud.CrudDetailView): class VotacaoExpedienteEditView(FormMixin, SessaoCrud.CrudDetailView):
''' '''
Votação Simbólica e Secreta Votação Simbólica e Secreta
@ -2133,7 +2133,7 @@ class PautaSessaoListView(SessaoListView):
template_name = "sessao/pauta_sessao_list.html" template_name = "sessao/pauta_sessao_list.html"
class PautaSessaoDetailView(sessao_crud.CrudDetailView): class PautaSessaoDetailView(SessaoCrud.CrudDetailView):
template_name = "sessao/pauta_sessao_detail.html" template_name = "sessao/pauta_sessao_detail.html"
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
@ -2245,7 +2245,7 @@ class SessaoPlenariaView(generics.ListAPIView):
serializer_class = SessaoPlenariaSerializer serializer_class = SessaoPlenariaSerializer
class PautaExpedienteDetail(sessao_crud.CrudDetailView): class PautaExpedienteDetail(SessaoCrud.CrudDetailView):
template_name = "sessao/pauta/expediente.html" template_name = "sessao/pauta/expediente.html"
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
@ -2263,7 +2263,7 @@ class PautaExpedienteDetail(sessao_crud.CrudDetailView):
'tramitacao': tramitacao}) 'tramitacao': tramitacao})
class PautaOrdemDetail(sessao_crud.CrudDetailView): class PautaOrdemDetail(SessaoCrud.CrudDetailView):
template_name = "sessao/pauta/ordem.html" template_name = "sessao/pauta/ordem.html"
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):

2
test_and_check_qa.sh

@ -3,5 +3,5 @@
# QA checks: run this before every commit # QA checks: run this before every commit
py.test py.test
py.test --ds=crud_tests.settings crud_tests py.test --ds=crud.tests.settings crud/tests
./check_qa.sh ./check_qa.sh

Loading…
Cancel
Save