diff --git a/base/forms.py b/base/forms.py index 598221b99..b5ce250ea 100644 --- a/base/forms.py +++ b/base/forms.py @@ -3,8 +3,8 @@ from crispy_forms.layout import HTML, Fieldset, Layout from django import forms from django.forms import ModelForm -import sapl -from sapl.layout import form_actions +import crispy_layout_mixin +from crispy_layout_mixin import form_actions from .models import CasaLegislativa @@ -89,33 +89,33 @@ class CasaLegislativaTabelaAuxForm(ModelForm): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('codigo', 2), ('nome', 5), ('sigla', 5)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('endereco', 8), ('cep', 4)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('municipio', 10), ('uf', 2)]) - row4 = sapl.layout.to_row( + row4 = crispy_layout_mixin.to_row( [('telefone', 6), ('fax', 6)]) - row5 = sapl.layout.to_row( + row5 = crispy_layout_mixin.to_row( [('logotipo', 12)]) - row6 = sapl.layout.to_row( + row6 = crispy_layout_mixin.to_row( [('endereco_web', 12)]) - row7 = sapl.layout.to_row( + row7 = crispy_layout_mixin.to_row( [('email', 12)]) - row8 = sapl.layout.to_row( + row8 = crispy_layout_mixin.to_row( [('informacao_geral', 12)]) self.helper = FormHelper() diff --git a/base/layouts.yaml b/base/layouts.yaml new file mode 100644 index 000000000..e69de29bb diff --git a/comissoes/forms.py b/comissoes/forms.py index effa09a0a..c2239332f 100644 --- a/comissoes/forms.py +++ b/comissoes/forms.py @@ -3,9 +3,9 @@ from crispy_forms.layout import Fieldset, Layout from django import forms from django.forms import ModelForm -import sapl +import crispy_layout_mixin +from crispy_layout_mixin import form_actions from parlamentares.models import Filiacao -from sapl.layout import form_actions from .models import Comissao, Participacao @@ -40,38 +40,38 @@ class CadastrarComissaoForm(ModelForm): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('nome', 8), ('sigla', 4)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('tipo', 3), ('data_criacao', 3), ('unidade_deliberativa', 3), ('data_extincao', 3)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('local_reuniao', 4), ('agenda_reuniao', 4), ('telefone_reuniao', 4)]) - row4 = sapl.layout.to_row( + row4 = crispy_layout_mixin.to_row( [('endereco_secretaria', 4), ('telefone_secretaria', 4), ('fax_secretaria', 4)]) - row5 = sapl.layout.to_row( + row5 = crispy_layout_mixin.to_row( [('secretario', 6), ('email', 6)]) - row6 = sapl.layout.to_row( + row6 = crispy_layout_mixin.to_row( [('finalidade', 12)]) - row7 = sapl.layout.to_row( + row7 = crispy_layout_mixin.to_row( [('apelido_temp', 9), ('data_instalacao_temp', 3)]) - row8 = sapl.layout.to_row( + row8 = crispy_layout_mixin.to_row( [('data_final_prevista_temp', 4), ('data_prorrogada_temp', 4), ('data_fim_comissao', 4)]) @@ -148,19 +148,19 @@ class ParticipacaoCadastroForm(ModelForm): def __init__(self, *args, **kwargs): self.helper = FormHelper() - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('parlamentar_id', 4), ('cargo', 4), ('titular', 4)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('data_designacao', 6), ('data_desligamento', 6)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('motivo_desligamento', 12)]) - row4 = sapl.layout.to_row( + row4 = crispy_layout_mixin.to_row( [('observacao', 12)]) self.helper.layout = Layout( diff --git a/comissoes/layouts.yaml b/comissoes/layouts.yaml new file mode 100644 index 000000000..43d9b0068 --- /dev/null +++ b/comissoes/layouts.yaml @@ -0,0 +1,26 @@ + +CargoComissao: + Período de composição de Comissão: + - nome:10 unico + +Periodo: + Cargo de Comissão: + - data_inicio data_fim + +TipoComissao: + Tipo Comissão: + - nome:9 sigla + - dispositivo_regimental:9 natureza + +Comissao: + Dados Básicos: + - nome:9 sigla + - tipo data_criacao unidade_deliberativa data_extincao + Dados Complementares: + - local_reuniao agenda_reuniao telefone_reuniao + - endereco_secretaria telefone_secretaria fax_secretaria + - secretario:4 email + - finalidade + Temporária: + - apelido_temp:8 data_instalacao_temp + - data_final_prevista_temp data_prorrogada_temp data_fim_comissao diff --git a/comissoes/views.py b/comissoes/views.py index 4ba30b38a..b39f3a8f9 100644 --- a/comissoes/views.py +++ b/comissoes/views.py @@ -14,54 +14,10 @@ from .forms import (CadastrarComissaoForm, ComposicaoForm, from .models import (CargoComissao, Comissao, Composicao, Participacao, Periodo, TipoComissao) -cargo_crud = Crud( - CargoComissao, 'cargo_comissao', [ - - [_('Período de composição de Comissão'), - [('nome', 10), ('unico', 2)]], - ]) - -periodo_composicao_crud = Crud( - Periodo, 'periodo_composicao_comissao', [ - - [_('Cargo de Comissão'), - [('data_inicio', 6), ('data_fim', 6)]], - ]) - -tipo_comissao_crud = Crud( - TipoComissao, 'tipo_comissao', [ - - [_('Tipo Comissão'), - [('nome', 9), ('sigla', 3)], - [('dispositivo_regimental', 9), ('natureza', 3)]], - ]) -comissao_crud = Crud( - Comissao, 'modulo_comissoes', [ - - [_('Dados Básicos'), - [('nome', 9), ('sigla', 3)], - [('tipo', 3), - ('data_criacao', 3), - ('unidade_deliberativa', 3), - ('data_extincao', 3)]], - - [_('Dados Complementares'), - [('local_reuniao', 4), - ('agenda_reuniao', 4), - ('telefone_reuniao', 4)], - [('endereco_secretaria', 4), - ('telefone_secretaria', 4), - ('fax_secretaria', 4)], - [('secretario', 4), ('email', 8)], - [('finalidade', 12)]], - - [_('Temporária'), - [('apelido_temp', 8), - ('data_instalacao_temp', 4)], - [('data_final_prevista_temp', 4), - ('data_prorrogada_temp', 4), - ('data_fim_comissao', 4)]], - ]) +cargo_crud = Crud(CargoComissao, 'cargo_comissao') +periodo_composicao_crud = Crud(Periodo, 'periodo_composicao_comissao') +tipo_comissao_crud = Crud(TipoComissao, 'tipo_comissao') +comissao_crud = Crud(Comissao, 'modulo_comissoes') class CadastrarComissaoView(FormMixin, GenericView): diff --git a/compilacao/forms.py b/compilacao/forms.py index 498da9edd..68d74191e 100644 --- a/compilacao/forms.py +++ b/compilacao/forms.py @@ -12,7 +12,7 @@ from compilacao.models import (NOTAS_PUBLICIDADE_CHOICES, Publicacao, TextoArticulado, TipoNota, TipoPublicacao, TipoTextoArticulado, TipoVide, VeiculoPublicacao, Vide) -from sapl.layout import SaplFormLayout, to_column, to_row +from crispy_layout_mixin import SaplFormLayout, to_column, to_row from sapl.utils import YES_NO_CHOICES error_messages = { diff --git a/compilacao/layouts.yaml b/compilacao/layouts.yaml new file mode 100644 index 000000000..d512d7615 --- /dev/null +++ b/compilacao/layouts.yaml @@ -0,0 +1,39 @@ + +TipoNota: + Tipo da Nota: + - sigla:2 nome + - modelo + +TipoVide: + Tipo de Vide: + - sigla:2 nome + +TipoPublicacao: + Tipo de Publicação: + - sigla:2 nome + +VeiculoPublicacao: + Veículo de Publicação: + - sigla:2 nome + +PerfilEstruturalTextoArticulado: + Perfil Estrutural de Textos Articulados: + - sigla:2 nome + +TipoDispositivo: + Dados Básicos: + - nome:8 class_css + Configurações para Edição do Rótulo: + - rotulo_prefixo_texto rotulo_sufixo_texto rotulo_ordinal contagem_continua + Configurações para Renderização de Rótulo e Texto: + - rotulo_prefixo_html rotulo_sufixo_html + - texto_prefixo_html dispositivo_de_articulacao texto_sufixo_html + Configurações para Nota Automática: + - nota_automatica_prefixo_html nota_automatica_sufixo_html + Configurações para Variações Numéricas: + - formato_variacao0 + - rotulo_separador_variacao01:5 formato_variacao1 + - rotulo_separador_variacao12:5 formato_variacao2 + - rotulo_separador_variacao23:5 formato_variacao3 + - rotulo_separador_variacao34:5 formato_variacao4 + - rotulo_separador_variacao45:5 formato_variacao5 diff --git a/compilacao/views.py b/compilacao/views.py index 371696288..127d8a1ca 100644 --- a/compilacao/views.py +++ b/compilacao/views.py @@ -42,86 +42,13 @@ DISPOSITIVO_SELECT_RELATED = ( 'ta_publicado', 'ta',) -tipo_nota_crud = Crud( - TipoNota, 'tipo_nota', [ - - [_('Tipo da Nota'), - [('sigla', 2), ('nome', 10)], - [('modelo', 12)]], - ]) - -tipo_vide_crud = Crud( - TipoVide, 'tipo_vide', [ - - [_('Tipo de Vide'), - [('sigla', 2), ('nome', 10)]], - ]) - -tipo_publicacao_crud = Crud( - TipoPublicacao, 'tipo_publicacao', [ - - [_('Tipo de Publicação'), - [('sigla', 2), ('nome', 10)]], - ]) - - -veiculo_publicacao_crud = Crud( - VeiculoPublicacao, 'veiculo_publicacao', [ - - [_('Veículo de Publicação'), - [('sigla', 2), ('nome', 10)]], - ]) - - -perfil_estr_txt_norm = Crud( - PerfilEstruturalTextoArticulado, 'perfil_estrutural', [ - - [_('Perfil Estrutural de Textos Articulados'), - [('sigla', 2), ('nome', 10)]], - ]) - - -tipo_dispositivo_crud = Crud( - TipoDispositivo, 'tipo_dispositivo', [ - - [_('Dados Básicos'), - [('nome', 8), ('class_css', 4)]], - - [_('Configurações para Edição do Rótulo'), - [('rotulo_prefixo_texto', 3), - ('rotulo_sufixo_texto', 3), - ('rotulo_ordinal', 3), - ('contagem_continua', 3)], - - ], - - [_('Configurações para Renderização de Rótulo e Texto'), - [('rotulo_prefixo_html', 6), - ('rotulo_sufixo_html', 6), ], - - [('texto_prefixo_html', 4), - ('dispositivo_de_articulacao', 4), - ('texto_sufixo_html', 4)], - ], - - [_('Configurações para Nota Automática'), - [('nota_automatica_prefixo_html', 6), - ('nota_automatica_sufixo_html', 6), - ], - ], - - [_('Configurações para Variações Numéricas'), - - [('formato_variacao0', 12)], - [('rotulo_separador_variacao01', 5), ('formato_variacao1', 7), ], - [('rotulo_separador_variacao12', 5), ('formato_variacao2', 7), ], - [('rotulo_separador_variacao23', 5), ('formato_variacao3', 7), ], - [('rotulo_separador_variacao34', 5), ('formato_variacao4', 7), ], - [('rotulo_separador_variacao45', 5), ('formato_variacao5', 7), ], - - ], - - ]) +tipo_nota_crud = Crud(TipoNota, 'tipo_nota') +tipo_vide_crud = Crud(TipoVide, 'tipo_vide') +tipo_publicacao_crud = Crud(TipoPublicacao, 'tipo_publicacao') +veiculo_publicacao_crud = Crud(VeiculoPublicacao, 'veiculo_publicacao') +perfil_estr_txt_norm = Crud(PerfilEstruturalTextoArticulado, + 'perfil_estrutural') +tipo_dispositivo_crud = Crud(TipoDispositivo, 'tipo_dispositivo') class IntegracaoTaView(TemplateView): diff --git a/crispy_layout_mixin.py b/crispy_layout_mixin.py new file mode 100644 index 000000000..e6eee5aed --- /dev/null +++ b/crispy_layout_mixin.py @@ -0,0 +1,138 @@ +from math import ceil +from os.path import dirname, join + +import rtyaml +from crispy_forms.bootstrap import FormActions +from crispy_forms.helper import FormHelper +from crispy_forms.layout import HTML, Div, Fieldset, Layout, Submit +from django.utils.translation import ugettext as _ + + +def to_column(name_span): + fieldname, span = name_span + return Div(fieldname, css_class='col-md-%d' % span) + + +def to_row(names_spans): + return Div(*map(to_column, names_spans), css_class='row-fluid') + + +def to_fieldsets(fields): + for field in fields: + if isinstance(field, list): + legend, *row_specs = field + rows = [to_row(name_span_list) for name_span_list in row_specs] + yield Fieldset(legend, *rows) + else: + yield field + + +def form_actions(more=[], save_label=_('Salvar')): + return FormActions( + Submit('salvar', save_label, css_class='pull-right'), *more) + + +class SaplFormLayout(Layout): + + def __init__(self, *fields): + buttons = form_actions(more=[ + HTML('%s' % _('Cancelar'))]) + _fields = list(to_fieldsets(fields)) + [to_row([(buttons, 12)])] + super(SaplFormLayout, self).__init__(*_fields) + + +def get_field_display(obj, fieldname): + field = obj._meta.get_field(fieldname) + verbose_name = str(field.verbose_name) + if field.choices: + value = getattr(obj, 'get_%s_display' % fieldname)() + else: + value = getattr(obj, fieldname) + if value is None: + display = '' + elif 'date' in str(type(value)): + display = value.strftime("%d/%m/%Y") # TODO: localize + elif 'bool' in str(type(value)): + display = 'Sim' if value else 'Não' + else: + display = str(value) + return verbose_name, display + + +class CrispyLayoutFormMixin(object): + + def get_layout(self): + filename = join( + dirname(self.model._meta.app_config.models_module.__file__), + 'layouts.yaml') + return read_layout_from_yaml(filename, self.model.__name__) + + @property + def fields(self): + '''Returns all fields in the layout''' + return [fieldname for legend_rows in self.get_layout() + for row in legend_rows[1:] + for fieldname, span in row] + + def get_form(self, form_class=None): + form = super(CrispyLayoutFormMixin, self).get_form(form_class) + form.helper = FormHelper() + form.helper.layout = SaplFormLayout(*self.get_layout()) + return form + + @property + def list_field_names(self): + '''The list of field names to display on table + + This base implementation returns the field names + in the first fieldset of the layout. + ''' + rows = self.get_layout()[0][1:] + return [fieldname for row in rows for fieldname, __ in row] + + def get_column(self, fieldname, span): + obj = self.get_object() + verbose_name, text = get_field_display(obj, fieldname) + return { + 'id': fieldname, + 'span': span, + 'verbose_name': verbose_name, + 'text': text, + } + + @property + def layout_display(self): + return [ + {'legend': legend, + 'rows': [[self.get_column(fieldname, span) + for fieldname, span in row] + for row in rows] + } for legend, *rows in self.get_layout()] + + +def read_yaml_from_file(filename): + # TODO cache this at application level + with open(filename, 'r') as yamlfile: + return rtyaml.load(yamlfile) + + +def read_layout_from_yaml(filename, key): + # TODO cache this at application level + yaml = read_yaml_from_file(filename) + base = yaml[key] + + def line_to_namespans(line): + split = [cell.split(':') for cell in line.split()] + namespans = [[s[0], int(s[1]) if len(s) > 1 else 0] for s in split] + remaining = 12 - sum(s for n, s in namespans) + nondefined = [ns for ns in namespans if not ns[1]] + while nondefined: + span = ceil(remaining / len(nondefined)) + namespan = nondefined.pop(0) + namespan[1] = span + remaining = remaining - span + return list(map(tuple, namespans)) + + return [[legend] + [line_to_namespans(l) for l in lines] + for legend, lines in base.items()] diff --git a/crud.py b/crud.py index 9f5ed1cc3..1b4194739 100644 --- a/crud.py +++ b/crud.py @@ -1,13 +1,11 @@ from braces.views import FormMessagesMixin -from crispy_forms.helper import FormHelper -from django import forms from django.conf.urls import url from django.core.urlresolvers import reverse from django.utils.translation import ugettext_lazy as _ from django.views.generic import (CreateView, DeleteView, DetailView, ListView, UpdateView) -from sapl.layout import SaplFormLayout +from crispy_layout_mixin import CrispyLayoutFormMixin, get_field_display def from_to(start, end): @@ -41,72 +39,6 @@ def make_pagination(index, num_pages): return head + [None] + tail -def get_field_display(obj, fieldname): - field = obj._meta.get_field(fieldname) - verbose_name = str(field.verbose_name) - if field.choices: - value = getattr(obj, 'get_%s_display' % fieldname)() - else: - value = getattr(obj, fieldname) - if value is None: - display = '' - elif 'date' in str(type(value)): - display = value.strftime("%d/%m/%Y") # TODO: localize - elif 'bool' in str(type(value)): - display = 'Sim' if value else 'Não' - else: - display = str(value) - return verbose_name, display - - -class CrispyLayoutFormMixin(object): - - def get_form_class(self): - layout = self.layout - - class CrispyForm(forms.ModelForm): - - class Meta: - model = self.model - exclude = self.exclude - - def __init__(self, *args, **kwargs): - super(CrispyForm, self).__init__(*args, **kwargs) - self.helper = FormHelper() - self.helper.layout = SaplFormLayout(*layout) - - return CrispyForm - - @property - def list_field_names(self): - '''The list of field names to display on table - - This base implementation returns the field names - in the first fieldset of the layout. - ''' - rows = self.layout[0][1:] - return [fieldname for row in rows for fieldname, __ in row] - - def get_column(self, fieldname, span): - obj = self.get_object() - verbose_name, text = get_field_display(obj, fieldname) - return { - 'id': fieldname, - 'span': span, - 'verbose_name': verbose_name, - 'text': text, - } - - @property - def fieldsets(self): - return [ - {'legend': legend, - 'rows': [[self.get_column(fieldname, span) - for fieldname, span in row] - for row in rows] - } for legend, *rows in self.layout] - - class BaseCrudMixin(CrispyLayoutFormMixin): @property @@ -247,21 +179,18 @@ class CrudDeleteMixin(FormMessagesMixin): class Crud(object): - def __init__(self, model, help_path, layout, + def __init__(self, model, help_path, base_mixin=BaseCrudMixin, list_mixin=CrudListMixin, create_mixin=CrudCreateMixin, detail_mixin=CrudDetailMixin, update_mixin=CrudUpdateMixin, - delete_mixin=CrudDeleteMixin, - exclude=[]): + delete_mixin=CrudDeleteMixin): class CrudMixin(base_mixin): pass CrudMixin.model = model CrudMixin.help_path = help_path - CrudMixin.layout = layout - CrudMixin.exclude = exclude class CrudListView(CrudMixin, list_mixin, ListView): pass diff --git a/crud_tests/layouts.yaml b/crud_tests/layouts.yaml new file mode 100644 index 000000000..fc104c87e --- /dev/null +++ b/crud_tests/layouts.yaml @@ -0,0 +1,7 @@ + +Country: + Basic Data: + - name:9 continent + - population is_cold + More Details: + - description diff --git a/crud_tests/test_flux.py b/crud_tests/test_flux.py index 4bca1943b..ba3f851d3 100644 --- a/crud_tests/test_flux.py +++ b/crud_tests/test_flux.py @@ -79,7 +79,9 @@ def test_get_field_display(): def test_layout_fieldnames(_layout, result): class StubMixin(CrispyLayoutFormMixin): - layout = _layout + + def get_layout(self): + return _layout view = StubMixin() assert view.list_field_names == result @@ -93,12 +95,14 @@ def test_layout_detail_fieldsets(monkeypatch): is_cold=False) class StubMixin(CrispyLayoutFormMixin): - layout = [['Basic Data', - [('name', 9), ('continent', 3)], - [('population', 6), ('is_cold', 6)] - ], - ['More Details', [('description', 12)]], - ] + + def get_layout(self): + return [['Basic Data', + [('name', 9), ('continent', 3)], + [('population', 6), ('is_cold', 6)] + ], + ['More Details', [('description', 12)]], + ] def get_object(self): return stub @@ -108,7 +112,7 @@ def test_layout_detail_fieldsets(monkeypatch): # to test None displayed as empty string assert stub.population is None - assert view.fieldsets == [ + assert view.layout_display == [ {'legend': 'Basic Data', 'rows': [[{'id': 'name', 'span': 9, diff --git a/crud_tests/views.py b/crud_tests/views.py index 60aad8743..7c699dc45 100644 --- a/crud_tests/views.py +++ b/crud_tests/views.py @@ -8,11 +8,6 @@ class CountryCrudListMixin(CrudListMixin): country_crud = Crud( - Country, 'help_path', [ - ['Basic Data', - [('name', 9), ('continent', 3)], - [('population', 6), ('is_cold', 6)] - ], - ['More Details', [('description', 12)]], - ], + Country, + 'help_path', list_mixin=CountryCrudListMixin) diff --git a/lexml/layouts.yaml b/lexml/layouts.yaml new file mode 100644 index 000000000..b09bfc62d --- /dev/null +++ b/lexml/layouts.yaml @@ -0,0 +1,11 @@ + +LexmlProvedor: + Provedor Lexml: + - id_provedor:2 nome + - id_responsavel:2 nome_responsavel email_responsavel + - xml + +LexmlPublicador: + Publicador Lexml: + - id_publicador:2 nome sigla + - id_responsavel:2 nome_responsavel email_responsavel diff --git a/lexml/views.py b/lexml/views.py index e75ef2db9..d8daec7a2 100644 --- a/lexml/views.py +++ b/lexml/views.py @@ -4,24 +4,5 @@ from crud import Crud from .models import LexmlProvedor, LexmlPublicador -lexml_provedor_crud = Crud( - LexmlProvedor, 'lexml_provedor', [ - - [_('Provedor Lexml'), - [('id_provedor', 2), - ('nome', 10)], - [('id_responsavel', 2), ('nome_responsavel', 5), - ('email_responsavel', 5)], - [('xml', 12)]], - - ]) - -lexml_publicador_crud = Crud( - LexmlPublicador, 'lexml_publicador', [ - - [_('Publicador Lexml'), - [('id_publicador', 2), - ('nome', 5), ('sigla', 5)], - [('id_responsavel', 2), ('nome_responsavel', 5), - ('email_responsavel', 5)]], - ]) +lexml_provedor_crud = Crud(LexmlProvedor, 'lexml_provedor') +lexml_publicador_crud = Crud(LexmlPublicador, 'lexml_publicador') diff --git a/materia/forms.py b/materia/forms.py index 40d62f687..4217dd49b 100644 --- a/materia/forms.py +++ b/materia/forms.py @@ -6,10 +6,10 @@ from django import forms from django.forms import ModelForm from django.utils.safestring import mark_safe -import sapl +import crispy_layout_mixin +from crispy_layout_mixin import form_actions from norma.models import LegislacaoCitada, TipoNormaJuridica from parlamentares.models import Parlamentar, Partido -from sapl.layout import form_actions from .models import (AcompanhamentoMateria, Anexada, Autor, DespachoInicial, DocumentoAcessorio, MateriaLegislativa, Numeracao, Origem, @@ -87,15 +87,15 @@ class ProposicaoForm(ModelForm): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('tipo', 12)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('descricao', 12)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('tipo_materia', 4), ('numero_materia', 4), ('ano_materia', 4)]) - row4 = sapl.layout.to_row( + row4 = crispy_layout_mixin.to_row( [('texto_original', 10)]) row4.append( @@ -118,7 +118,7 @@ class AcompanhamentoMateriaForm(ModelForm): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row([('email', 10)]) + row1 = crispy_layout_mixin.to_row([('email', 10)]) row1.append( Column(form_actions(save_label='Cadastrar'), css_class='col-md-2') @@ -167,15 +167,15 @@ class DocumentoAcessorioForm(ModelForm): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('tipo', 4), ('nome', 4), ('data', 4)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('autor', 12)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('ementa', 12)]) self.helper = FormHelper() @@ -252,23 +252,23 @@ class TramitacaoForm(ModelForm): 'texto'] def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('data_tramitacao', 6), ('unidade_tramitacao_local', 6)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('status', 5), ('turno', 5), ('urgente', 2)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('unidade_tramitacao_destino', 12)]) - row4 = sapl.layout.to_row( + row4 = crispy_layout_mixin.to_row( [('data_encaminhamento', 6), ('data_fim_prazo', 6)]) - row5 = sapl.layout.to_row( + row5 = crispy_layout_mixin.to_row( [('texto', 12)]) self.helper = FormHelper() @@ -339,24 +339,24 @@ class LegislacaoCitadaForm(ModelForm): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('tipo', 4), ('numero', 4), ('ano', 4)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('disposicao', 3), ('parte', 3), ('livro', 3), ('titulo', 3)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('capitulo', 3), ('secao', 3), ('subsecao', 3), ('artigo', 3)]) - row4 = sapl.layout.to_row( + row4 = crispy_layout_mixin.to_row( [('paragrafo', 3), ('inciso', 3), ('alinea', 3), @@ -407,9 +407,9 @@ class NumeracaoForm(ModelForm): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('tipo_materia', 12)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('numero_materia', 4), ('ano_materia', 4), ('data_materia', 4)]) @@ -474,11 +474,11 @@ class MateriaAnexadaForm(ModelForm): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('tipo', 4), ('numero', 4), ('ano', 4)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('data_anexacao', 6), ('data_desanexacao', 6)]) @@ -517,21 +517,21 @@ class FormularioSimplificadoForm(ModelForm): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('tipo', 4), ('numero', 4), ('ano', 4)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('data_apresentacao', 4), ('numero_protocolo', 4), ('regime_tramitacao', 4)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('texto_original', 9), ('em_tramitacao', 3)]) - row4 = sapl.layout.to_row( + row4 = crispy_layout_mixin.to_row( [('ementa', 12)]) self.helper = FormHelper() @@ -731,29 +731,29 @@ class MateriaLegislativaPesquisaForm(forms.Form): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('tipo', 12)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('numero', 4), ('ano', 4), ('numero_protocolo', 4)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('data_apresentacao', 6), ('data_publicacao', 6)]) - row4 = sapl.layout.to_row( + row4 = crispy_layout_mixin.to_row( [('autor', 6), ('partido_autor', 6)]) - row5 = sapl.layout.to_row( + row5 = crispy_layout_mixin.to_row( [('tipo_autor', 6), ('relator', 6)]) - row6 = sapl.layout.to_row( + row6 = crispy_layout_mixin.to_row( [('local_origem_externa', 6), ('localizacao', 6)]) - row7 = sapl.layout.to_row( + row7 = crispy_layout_mixin.to_row( [('tramitacao', 4), ('situacao', 4), ('ordem', 4)]) - row8 = sapl.layout.to_row( + row8 = crispy_layout_mixin.to_row( [('assunto', 12)]) self.helper = FormHelper() diff --git a/materia/layouts.yaml b/materia/layouts.yaml new file mode 100644 index 000000000..0a3270cd2 --- /dev/null +++ b/materia/layouts.yaml @@ -0,0 +1,111 @@ + +Origem: + Origem: + - nome:8 sigla + +TipoMateriaLegislativa: + Tipo Matéria Legislativa: + - sigla:4 descricao + +RegimeTramitacao: + Tipo de Documento: + - descricao + +TipoDocumento: + Regime Tramitação: + - descricao + +TipoFimRelatoria: + Tipo Fim de Relatoria: + - descricao + +MateriaLegislativa: + Identificação Básica: + - tipo numero ano + - data_apresentacao numero_protocolo tipo_apresentacao + - texto_original + Outras Informações: + - apelido dias_prazo polemica + - objeto regime_tramitacao em_tramitacao + - data_fim_prazo data_publicacao complementar + Origem Externa: + - tipo_origem_externa numero_origem_externa ano_origem_externa + - local_origem_externa data_origem_externa + Dados Textuais: + - ementa + - indexacao + - observacao + +Anexada: + Matéria Legislativa: + - tip_id_basica_FIXME num_ident_basica_FIXME ano_ident_basica_FIXME + - data_anexacao data_desanexacao + Matéria Anexada: + - tip_id_basica_FIXME num_ident_basica_FIXME ano_ident_basica_FIXME + - data_anexacao data_desanexacao + +TipoAutor: + Tipo Autor: + - descricao + +Autor: + Autor: + - tipo:3 nome + - username + +Autoria: + Autoria: + - tip_autor_FIXME nom_autor_FIXME primeiro_autor + +DocumentoAcessorio: + Documento Acessório: + - tipo nome + - data autor + - nom_arquivo_FIXME + - ementa + - txt_observacao_FIXME + +Numeracao: + Numeração: + - tipo_materia numero_materia + - ano_materia data_materia + +Orgao: + Órgão: + - nome:4 sigla telefone endereco unidade_deliberativa + +Relatoria: + Relatoria: + - data_designacao_relator + - dados_FIXME + - data_destituicao_relator tipo_fim_relatoria + +TipoProposicao: + Tipo Proposição: + - descricao + - materia_ou_documento tipo_documento + - modelo + +Proposicao: + Proposição: + - tipo dat_criacao_FIXME data_recebimento + - descricao_FIXME + - tip_id_basica_FIXME num_ident_basica_FIXME ano_ident_basica_FIXME + - nom_arquivo_FIXME modelo_FIXME + +StatusTramitacao: + Status Tramitação: + - indicador:3 sigla:2 descricao + +UnidadeTramitacao: + Unidade Tramitação: + - orgao + - comissao + - parlamentar + +Tramitacao: + Tramitação: + - cod_ult_tram_dest_FIXME unidade_tramitacao_local + - status turno urgente + - unidade_tramitacao_destino data_encaminhamento data_fim_prazo + - texto diff --git a/materia/views.py b/materia/views.py index 55a660fe5..dc914f349 100644 --- a/materia/views.py +++ b/materia/views.py @@ -37,200 +37,25 @@ from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria, TipoFimRelatoria, TipoMateriaLegislativa, TipoProposicao, Tramitacao, UnidadeTramitacao) -origem_crud = Crud( - Origem, 'origem', [ - - [_('Origem'), - [('nome', 8), ('sigla', 4)]], - ]) - -tipo_materia_crud = Crud( - TipoMateriaLegislativa, 'tipo_materia_legislativa', [ - - [_('Tipo Matéria Legislativa'), - [('sigla', 4), ('descricao', 8)]], - ]) - -regime_tramitacao_crud = Crud( - RegimeTramitacao, 'regime_tramitacao', [ - - [_('Tipo de Documento'), - [('descricao', 12)]], - ]) - -tipo_documento_crud = Crud( - TipoDocumento, 'tipo_documento', [ - - [_('Regime Tramitação'), - [('descricao', 12)]], - ]) - -tipo_fim_relatoria_crud = Crud( - TipoFimRelatoria, 'fim_relatoria', [ - - [_('Tipo Fim de Relatoria'), - [('descricao', 12)]], - ]) - -materia_legislativa_crud = Crud( - - MateriaLegislativa, '', [ - - [_('Identificação Básica'), - [('tipo', 4), ('numero', 4), ('ano', 4)], - [('data_apresentacao', 4), - ('numero_protocolo', 4), - ('tipo_apresentacao', 4)], - [('texto_original', 12)]], - - [_('Outras Informações'), - [('apelido', 4), ('dias_prazo', 4), ('polemica', 4)], - [('objeto', 4), ('regime_tramitacao', 4), ('em_tramitacao', 4)], - [('data_fim_prazo', 4), - ('data_publicacao', 4), - ('complementar', 4)]], - - [_('Origem Externa'), - [('tipo_origem_externa', 4), - ('numero_origem_externa', 4), - ('ano_origem_externa', 4)], - [('local_origem_externa', 6), ('data_origem_externa', 6)]], - - [_('Dados Textuais'), - [('ementa', 12)], - [('indexacao', 12)], - [('observacao', 12)]], - ], exclude=['anexadas']) - -Anexada_crud = Crud( - Anexada, '', [ - - [_('Matéria Legislativa'), - [('tip_id_basica_FIXME', 4), - ('num_ident_basica_FIXME', 4), - ('ano_ident_basica_FIXME', 4)], - [('data_anexacao', 6), ('data_desanexacao', 6)]], - - [_('Matéria Anexada'), - [('tip_id_basica_FIXME', 4), - ('num_ident_basica_FIXME', 4), - ('ano_ident_basica_FIXME', 4)], - [('data_anexacao', 6), ('data_desanexacao', 6)]], - ]) - -tipo_autor_crud = Crud( - TipoAutor, 'tipo_autor', [ - - [_('Tipo Autor'), - [('descricao', 12)]], - ]) - -autor_crud = Crud( - Autor, 'autor', [ - - [_('Autor'), - [('tipo', 3), ('nome', 9)], - [('username', 12)]], - ]) - -autoria_crud = Crud( - Autoria, '', [ - - [_('Autoria'), - [('tip_autor_FIXME', 4), - ('nom_autor_FIXME', 4), - ('primeiro_autor', 4)]], - ]) - -documento_acessorio_crud = Crud( - DocumentoAcessorio, '', [ - - [_('Documento Acessório'), - [('tipo', 6), ('nome', 6)], - [('data', 6), ('autor', 6)], - [('nom_arquivo_FIXME', 12)], - [('ementa', 12)], - [('txt_observacao_FIXME', 12)]], - ]) - -numeracao_crud = Crud( - Numeracao, '', [ - - [_('Numeração'), - [('tipo_materia', 6), ('numero_materia', 6)], - [('ano_materia', 6), ('data_materia', 6)]], - ]) - -orgao_crud = Crud( - Orgao, 'orgao', [ - - [_('Órgão'), - [('nome', 4), - ('sigla', 2), - ('telefone', 2), - ('endereco', 2), - ('unidade_deliberativa', 2)]], - ]) - -relatoria_crud = Crud( - Relatoria, '', [ - - [_('Relatoria'), - [('data_designacao_relator', 12)], - [('dados_FIXME', 12)], - [('data_destituicao_relator', 6), ('tipo_fim_relatoria', 6)]], - ]) - -tipo_proposicao_crud = Crud( - TipoProposicao, 'tipo_proposicao', [ - - [_('Tipo Proposição'), - [('descricao', 12)], - [('materia_ou_documento', 6), ('tipo_documento', 6)], - [('modelo', 12)]], - ]) - -proposicao_crud = Crud( - Proposicao, '', [ - - [_('Proposição'), - [('tipo', 4), ('dat_criacao_FIXME', 4), ('data_recebimento', 4)], - [('descricao_FIXME', 12)], - [('tip_id_basica_FIXME', 4), - ('num_ident_basica_FIXME', 4), - ('ano_ident_basica_FIXME', 4)], - [('nom_arquivo_FIXME', 6), ('modelo_FIXME', 6)]], - ]) - -status_tramitacao_crud = Crud( - StatusTramitacao, 'status_tramitacao', [ - - [_('Status Tramitação'), - [('indicador', 3), - ('sigla', 2), - ('descricao', 7)]], - ]) - -unidade_tramitacao_crud = Crud( - UnidadeTramitacao, 'unidade_tramitacao', [ - - [_('Unidade Tramitação'), - [('orgao', 12)], - [('comissao', 12)], - [('parlamentar', 12)]], - ]) - -tramitacao_crud = Crud( - Tramitacao, '', [ - - [_('Tramitação'), - [('cod_ult_tram_dest_FIXME', 6), ('unidade_tramitacao_local', 6)], - [('status', 4), ('turno', 4), ('urgente', 4)], - [('unidade_tramitacao_destino', 4), - ('data_encaminhamento', 4), - ('data_fim_prazo', 4)], - [('texto', 12)]], - ]) +origem_crud = Crud(Origem, 'origem') +tipo_materia_crud = Crud(TipoMateriaLegislativa, 'tipo_materia_legislativa') +regime_tramitacao_crud = Crud(RegimeTramitacao, 'regime_tramitacao') +tipo_documento_crud = Crud(TipoDocumento, 'tipo_documento') +tipo_fim_relatoria_crud = Crud(TipoFimRelatoria, 'fim_relatoria') +materia_legislativa_crud = Crud(MateriaLegislativa, '') +Anexada_crud = Crud(Anexada, '') +tipo_autor_crud = Crud(TipoAutor, 'tipo_autor') +autor_crud = Crud(Autor, 'autor') +autoria_crud = Crud(Autoria, '') +documento_acessorio_crud = Crud(DocumentoAcessorio, '') +numeracao_crud = Crud(Numeracao, '') +orgao_crud = Crud(Orgao, 'orgao') +relatoria_crud = Crud(Relatoria, '') +tipo_proposicao_crud = Crud(TipoProposicao, 'tipo_proposicao') +proposicao_crud = Crud(Proposicao, '') +status_tramitacao_crud = Crud(StatusTramitacao, 'status_tramitacao') +unidade_tramitacao_crud = Crud(UnidadeTramitacao, 'unidade_tramitacao') +tramitacao_crud = Crud(Tramitacao, '') class FormularioSimplificadoView(FormMixin, GenericView): @@ -313,8 +138,8 @@ class MateriaAnexadaView(FormMixin, GenericView): if mat_principal.tipo == mat_anexada.tipo: - msg = 'A matéria a ser anexada não pode ser do mesmo \ - tipo da matéria principal.' + msg = _('A matéria a ser anexada não pode ser do mesmo' + ' tipo da matéria principal.') messages.add_message(request, messages.INFO, msg) return self.render_to_response( {'form': form, @@ -332,8 +157,8 @@ class MateriaAnexadaView(FormMixin, GenericView): anexada.save() except ObjectDoesNotExist: - msg = 'A matéria a ser anexada não existe no cadastro \ - de matérias legislativas.' + msg = _('A matéria a ser anexada não existe no cadastro' + ' de matérias legislativas.') messages.add_message(request, messages.INFO, msg) return self.render_to_response( {'form': form, diff --git a/norma/forms.py b/norma/forms.py index 4953a8c5c..290d08571 100644 --- a/norma/forms.py +++ b/norma/forms.py @@ -4,9 +4,9 @@ from django import forms from django.forms import ModelForm from django.utils.safestring import mark_safe -import sapl +import crispy_layout_mixin +from crispy_layout_mixin import form_actions from materia.models import TipoMateriaLegislativa -from sapl.layout import form_actions from .models import NormaJuridica @@ -58,37 +58,37 @@ class NormaJuridicaForm(ModelForm): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('tipo', 4), ('numero', 4), ('ano', 4)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('data', 4), ('esfera_federacao', 4), ('complemento', 4)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('tipo_materia', 4), ('numero_materia', 4), ('ano_materia', 4)]) - row4 = sapl.layout.to_row( + row4 = crispy_layout_mixin.to_row( [('data_publicacao', 3), ('veiculo_publicacao', 3), ('pagina_inicio_publicacao', 3), ('pagina_fim_publicacao', 3)]) - row5 = sapl.layout.to_row( + row5 = crispy_layout_mixin.to_row( [('texto_integral', 12)]) - row6 = sapl.layout.to_row( + row6 = crispy_layout_mixin.to_row( [('ementa', 12)]) - row7 = sapl.layout.to_row( + row7 = crispy_layout_mixin.to_row( [('indexacao', 12)]) - row8 = sapl.layout.to_row( + row8 = crispy_layout_mixin.to_row( [('observacao', 12)]) self.helper = FormHelper() diff --git a/norma/layouts.yaml b/norma/layouts.yaml new file mode 100644 index 000000000..cde1cf517 --- /dev/null +++ b/norma/layouts.yaml @@ -0,0 +1,31 @@ + +AssuntoNorma: + Assunto Norma Jurídica: + - assunto descricao + +TipoNormaJuridica: + Tipo Norma Jurídica: + - descricao sigla equivalente_lexml + +NormaJuridica: + Identificação Básica: + - tipo numero ano + - data esfera_federacao complemento + - tip_id_basica_FIXME num_ident_basica_FIXME ano_ident_basica_FIXME + - data_publicacao veiculo_publicacao pagina_inicio_publicacao pagina_fim_publicacao + - file_FIXME tip_situacao_norma_FIXME + - ementa + - indexacao + - observacao + +NormaJuridica: + Identificação Básica: + - tipo:5 numero:2 ano:2 data + - ementa + +LegislacaoCitada: + Legislação Citada: + - tip_norma_FIXME num_norma_FIXME ano_norma_FIXME + - disposicoes parte livro titulo + - capitulo secao subsecao artigo + - paragrafo inciso alinea item diff --git a/norma/views.py b/norma/views.py index 02651ed51..873bda1a4 100644 --- a/norma/views.py +++ b/norma/views.py @@ -15,62 +15,11 @@ from .forms import NormaJuridicaForm from .models import (AssuntoNorma, LegislacaoCitada, NormaJuridica, TipoNormaJuridica) -assunto_norma_crud = Crud( - AssuntoNorma, 'assunto_norma_juridica', [ - - [_('Assunto Norma Jurídica'), - [('assunto', 6), ('descricao', 6)]], - ]) - -tipo_norma_crud = Crud( - TipoNormaJuridica, 'tipo_norma_juridica', [ - - [_('Tipo Norma Jurídica'), - [('descricao', 4), - ('sigla', 4), - ('equivalente_lexml', 4)]], - ]) - -norma_crud = Crud( - - NormaJuridica, '', [ - - [_('Identificação Básica'), - [('tipo', 4), ('numero', 4), ('ano', 4)], - [('data', 4), ('esfera_federacao', 4), ('complemento', 4)], - [('tip_id_basica_FIXME', 4), - ('num_ident_basica_FIXME', 4), - ('ano_ident_basica_FIXME', 4)], - [('data_publicacao', 3), - ('veiculo_publicacao', 3), - ('pagina_inicio_publicacao', 3), - ('pagina_fim_publicacao', 3)], - [('file_FIXME', 6), ('tip_situacao_norma_FIXME', 6)], - [('ementa', 12)], - [('indexacao', 12)], - [('observacao', 12)]], - ]) - -norma_temporario_crud = Crud( - NormaJuridica, 'normajuridica', [ - - [_('Identificação Básica'), - [('tipo', 5), ('numero', 2), ('ano', 2), ('data', 3)], - [('ementa', 12)]], - ]) - - -legislacao_citada_crud = Crud( - LegislacaoCitada, '', [ - - [_('Legislação Citada'), - [('tip_norma_FIXME', 4), - ('num_norma_FIXME', 4), - ('ano_norma_FIXME', 4)], - [('disposicoes', 3), ('parte', 3), ('livro', 3), ('titulo', 3)], - [('capitulo', 3), ('secao', 3), ('subsecao', 3), ('artigo', 3)], - [('paragrafo', 3), ('inciso', 3), ('alinea', 3), ('item', 3)]], - ]) +assunto_norma_crud = Crud(AssuntoNorma, 'assunto_norma_juridica') +tipo_norma_crud = Crud(TipoNormaJuridica, 'tipo_norma_juridica') +norma_crud = Crud(NormaJuridica, '') +norma_temporario_crud = Crud(NormaJuridica, 'normajuridica') +legislacao_citada_crud = Crud(LegislacaoCitada, '') class NormaIncluirView(FormMixin, GenericView): diff --git a/painel/layouts.yaml b/painel/layouts.yaml new file mode 100644 index 000000000..e4a6f4606 --- /dev/null +++ b/painel/layouts.yaml @@ -0,0 +1,4 @@ + +Cronometro: + Cronometro: + - status:3 data_cronometro:6 tipo diff --git a/painel/views.py b/painel/views.py index 7483205a2..c5b6448e8 100644 --- a/painel/views.py +++ b/painel/views.py @@ -14,13 +14,7 @@ from sessao.models import (ExpedienteMateria, OrdemDia, PresencaOrdemDia, from .models import Cronometro -cronometro_painel_crud = Crud( - Cronometro, '', [ - - [_('Cronometro'), - [('status', 3), ('data_cronometro', 6), - ('tipo', 3)]], - ]) +cronometro_painel_crud = Crud(Cronometro, '') def controlador_painel(request): diff --git a/parlamentares/forms.py b/parlamentares/forms.py index 41a8eb45c..75a2db0a7 100644 --- a/parlamentares/forms.py +++ b/parlamentares/forms.py @@ -4,8 +4,8 @@ from django import forms from django.forms import ModelForm from django.utils.safestring import mark_safe -import sapl -from sapl.layout import form_actions +import crispy_layout_mixin +from crispy_layout_mixin import form_actions from .models import Dependente, Filiacao, Mandato, Parlamentar @@ -103,55 +103,55 @@ class ParlamentaresForm (ModelForm): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('nome_parlamentar', 8), ('ativo', 4)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('nome_completo', 12)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('nivel_instrucao', 4), ('sexo', 4), ('data_nascimento', 4)]) - row4 = sapl.layout.to_row( + row4 = crispy_layout_mixin.to_row( [('cpf', 4), ('rg', 4), ('titulo_eleitor', 4)]) - row5 = sapl.layout.to_row( + row5 = crispy_layout_mixin.to_row( [('situacao_militar', 6), ('profissao', 6)]) - row6 = sapl.layout.to_row( + row6 = crispy_layout_mixin.to_row( [('endereco_web', 12)]) - row7 = sapl.layout.to_row( + row7 = crispy_layout_mixin.to_row( [('email', 12)]) - row8 = sapl.layout.to_row( + row8 = crispy_layout_mixin.to_row( [('numero_gab_parlamentar', 4), ('telefone', 4), ('fax', 4)]) - row9 = sapl.layout.to_row( + row9 = crispy_layout_mixin.to_row( [('endereco_residencia', 6), ('cep_residencia', 6)]) - row10 = sapl.layout.to_row( + row10 = crispy_layout_mixin.to_row( [('municipio_residencia', 12)]) - row11 = sapl.layout.to_row( + row11 = crispy_layout_mixin.to_row( [('telefone_residencia', 6), ('fax_residencia', 6)]) - row12 = sapl.layout.to_row( + row12 = crispy_layout_mixin.to_row( [('locais_atuacao', 12)]) - row13 = sapl.layout.to_row( + row13 = crispy_layout_mixin.to_row( [('fotografia', 12)]) - row14 = sapl.layout.to_row( + row14 = crispy_layout_mixin.to_row( [('biografia', 12)]) self.helper = FormHelper() @@ -203,16 +203,16 @@ class MandatoForm(ModelForm): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('legislatura', 4), ('coligacao', 4), ('votos_recebidos', 4)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('data_fim_mandato', 6), ('data_expedicao_diploma', 6)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('observacao', 12)]) self.helper = FormHelper() @@ -251,15 +251,15 @@ class DependenteForm(ModelForm): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('nome', 12)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('tipo', 4), ('sexo', 4), ('data_nascimento', 4)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('cpf', 4), ('rg', 4), ('titulo_eleitor', 4)]) @@ -297,7 +297,7 @@ class FiliacaoForm(ModelForm): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('partido', 4), ('data', 4), ('data_desfiliacao', 4)]) diff --git a/parlamentares/layouts.yaml b/parlamentares/layouts.yaml new file mode 100644 index 000000000..9a224a622 --- /dev/null +++ b/parlamentares/layouts.yaml @@ -0,0 +1,69 @@ + +CargoMesa: + Cargo na Mesa: + - descricao:10 unico + +Legislatura: + Legislatura: + - data_inicio data_fim data_eleicao + +Coligacao: + Coligação: + - nome:5 legislatura:5 numero_votos + +Partido: + Partido Político: + - nome:6 sigla data_criacao data_extincao + +Dependente: + Dependentes: + - nome + - tipo sexo data_nascimento + - cpf rg titulo_eleitor + +SessaoLegislativa: + Sessão Legislativa: + - numero:4 tipo:4 legislatura:4 data_inicio data_fim data_inicio_intervalo data_fim_intervalo + +Parlamentar: + Cadastro do Parlamentar: + - nome_parlamentar:8 ativo + - nome_completo + - nivel_instrucao sexo data_nascimento + - cpf rg titulo_eleitor + - situacao_militar profissao + - endereco_web + - email + - numero_gab_parlamentar telefone fax + - endereco_residencia cep_residencia + - municipio_residencia + - telefone_residencia fax_residencia + - locais_atuacao + - fotografia + - biografia + +Filiacao: + 'Filiações Partidárias ': + - partido data data_desfiliacao + +Mandato: + Mandato: + - legislatura coligacao votos_recebidos + - ind_titular_FIXME dat_inicio_mandato_FIXME data_fim_mandato data_expedicao_diploma + - observacao + +TipoDependente: + Tipo de Dependente: + - descricao + +NivelInstrucao: + Nível Instrução: + - descricao + +TipoAfastamento: + Tipo de Afastamento: + - descricao:5 dispositivo:5 afastamento + +SituacaoMilitar: + Tipo Situação Militar: + - descricao diff --git a/parlamentares/views.py b/parlamentares/views.py index 788567036..1a3f4aa5b 100644 --- a/parlamentares/views.py +++ b/parlamentares/views.py @@ -22,131 +22,19 @@ from .models import (CargoMesa, Coligacao, ComposicaoMesa, Dependente, Parlamentar, Partido, SessaoLegislativa, SituacaoMilitar, TipoAfastamento, TipoDependente) -cargo_mesa_crud = Crud( - CargoMesa, 'cargo_mesa', [ - - [_('Cargo na Mesa'), - [('descricao', 10), - ('unico', 2)]], - ]) - -legislatura_crud = Crud( - Legislatura, 'tabelas_auxiliares#legislatura', [ - - [_('Legislatura'), - [('data_inicio', 4), ('data_fim', 4), ('data_eleicao', 4)]], - ]) - -coligacao_crud = Crud( - Coligacao, 'coligacao', [ - - [_('Coligação'), - [('nome', 5), - ('legislatura', 5), - ('numero_votos', 2)]], - ]) - -partido_crud = Crud( - Partido, 'partidos', [ - - [_('Partido Político'), - [('nome', 6), - ('sigla', 2), - ('data_criacao', 2), - ('data_extincao', 2)]], - ]) - - -dependente_crud = Crud( - Dependente, '', [ - - [_('Dependentes'), - [('nome', 12)], - [('tipo', 4), ('sexo', 4), ('data_nascimento', 4)], - [('cpf', 4), ('rg', 4), ('titulo_eleitor', 4)]], - ]) - - -sessao_legislativa_crud = Crud( - SessaoLegislativa, 'sessao_legislativa', [ - - [_('Sessão Legislativa'), - [('numero', 4), - ('tipo', 4), - ('legislatura', 4), - ('data_inicio', 6), - ('data_fim', 6), - ('data_inicio_intervalo', 6), - ('data_fim_intervalo', 6)]], - ]) - - -parlamentar_crud = Crud( - Parlamentar, '', [ - - [_('Cadastro do Parlamentar'), - [('nome_parlamentar', 8), ('ativo', 4)], - [('nome_completo', 12)], - [('nivel_instrucao', 4), ('sexo', 4), ('data_nascimento', 4)], - [('cpf', 4), ('rg', 4), ('titulo_eleitor', 4)], - [('situacao_militar', 6), ('profissao', 6)], - [('endereco_web', 12)], - [('email', 12)], - [('numero_gab_parlamentar', 4), ('telefone', 4), ('fax', 4)], - [('endereco_residencia', 6), ('cep_residencia', 6)], - [('municipio_residencia', 12)], - [('telefone_residencia', 6), ('fax_residencia', 6)], - [('locais_atuacao', 12)], - [('fotografia', 12)], - [('biografia', 12)]], - ]) - -filiacao_crud = Crud( - Filiacao, '', [ - - [_('Filiações Partidárias '), - [('partido', 4), ('data', 4), ('data_desfiliacao', 4)]], - ]) - -mandato_crud = Crud( - Mandato, '', [ - - [_('Mandato'), - [('legislatura', 4), ('coligacao', 4), ('votos_recebidos', 4)], - [('ind_titular_FIXME', 3), - ('dat_inicio_mandato_FIXME', 3), - ('data_fim_mandato', 3), - ('data_expedicao_diploma', 3)], - [('observacao', 12)]], - ]) - -tipo_dependente_crud = Crud( - TipoDependente, 'tipo_dependente', [ - - [_('Tipo de Dependente'), - [('descricao', 12)]], - ]) - -nivel_instrucao_crud = Crud( - NivelInstrucao, 'nivel_instrucao', [ - - [_('Nível Instrução'), - [('descricao', 12)]], - ]) - -tipo_afastamento_crud = Crud( - TipoAfastamento, 'tipo_afastamento', [ - - [_('Tipo de Afastamento'), - [('descricao', 5), ('dispositivo', 5), ('afastamento', 2)]], - ]) - -tipo_militar_crud = Crud( - SituacaoMilitar, 'tipo_situa_militar', [ - - [_('Tipo Situação Militar'), - [('descricao', 12)]], - ]) +cargo_mesa_crud = Crud(CargoMesa, 'cargo_mesa') +legislatura_crud = Crud(Legislatura, 'tabelas_auxiliares#legislatura') +coligacao_crud = Crud(Coligacao, 'coligacao') +partido_crud = Crud(Partido, 'partidos') +dependente_crud = Crud(Dependente, '') +sessao_legislativa_crud = Crud(SessaoLegislativa, 'sessao_legislativa') +parlamentar_crud = Crud(Parlamentar, '') +filiacao_crud = Crud(Filiacao, '') +mandato_crud = Crud(Mandato, '') +tipo_dependente_crud = Crud(TipoDependente, 'tipo_dependente') +nivel_instrucao_crud = Crud(NivelInstrucao, 'nivel_instrucao') +tipo_afastamento_crud = Crud(TipoAfastamento, 'tipo_afastamento') +tipo_militar_crud = Crud(SituacaoMilitar, 'tipo_situa_militar') class ParlamentaresView(GenericView): @@ -156,8 +44,8 @@ class ParlamentaresView(GenericView): form = ParlamentaresListForm() if not Legislatura.objects.all(): - mensagem = "Cadastre alguma Legislatura antes\ - de cadastrar algum Parlamentar" + mensagem = _('Cadastre alguma Legislatura antes' + ' de cadastrar algum Parlamentar') messages.add_message(request, messages.INFO, mensagem) return self.render_to_response( {'legislaturas': [], diff --git a/protocoloadm/forms.py b/protocoloadm/forms.py index 4942a0e71..ab148af6c 100644 --- a/protocoloadm/forms.py +++ b/protocoloadm/forms.py @@ -6,9 +6,9 @@ from django import forms from django.forms import ModelForm from django.utils.safestring import mark_safe -import sapl +import crispy_layout_mixin +from crispy_layout_mixin import form_actions from materia.models import TipoMateriaLegislativa -from sapl.layout import form_actions from .models import (Autor, DocumentoAcessorioAdministrativo, DocumentoAdministrativo, TipoDocumentoAdministrativo, @@ -102,25 +102,25 @@ class ProtocoloForm(forms.Form): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('numero_protocolo', 6), ('ano', 6)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('inicial', 6), ('final', 6)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('tipo_documento', 4), ('tipo_protocolo', 4), ('tipo_materia', 4)]) - row4 = sapl.layout.to_row( + row4 = crispy_layout_mixin.to_row( [('interessado', 4), ('autor', 4), ('assunto', 4)]) - row5 = sapl.layout.to_row( + row5 = crispy_layout_mixin.to_row( [('natureza_processo', 12)]) self.helper = FormHelper() @@ -147,10 +147,10 @@ class AnularProcoloAdmForm(forms.Form): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('numero_protocolo', 6), ('ano_protocolo', 6)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('justificativa_anulacao', 12)]) self.helper = FormHelper() @@ -202,18 +202,18 @@ class ProtocoloDocumentForm(forms.Form): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('numeracao', 12)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('tipo_protocolo', 12)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('tipo_documento', 6), ('num_paginas', 6)]) - row4 = sapl.layout.to_row( + row4 = crispy_layout_mixin.to_row( [('assunto', 12)]) - row5 = sapl.layout.to_row( + row5 = crispy_layout_mixin.to_row( [('interessado', 12)]) - row6 = sapl.layout.to_row( + row6 = crispy_layout_mixin.to_row( [('observacao', 12)]) self.helper = FormHelper() @@ -274,16 +274,16 @@ class ProtocoloMateriaForm(forms.Form): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('numeracao', 12)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('tipo_materia', 6), ('num_paginas', 6)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('ementa', 12)]) - row4 = sapl.layout.to_row( + row4 = crispy_layout_mixin.to_row( [('autor', 12)]) - row5 = sapl.layout.to_row( + row5 = crispy_layout_mixin.to_row( [('observacao', 12)]) self.helper = FormHelper() @@ -348,15 +348,15 @@ class DocumentoAcessorioAdministrativoForm(ModelForm): def __init__(self, excluir=False, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('tipo', 4), ('nome', 4), ('data', 4)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('autor', 12)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('arquivo', 12)]) - row4 = sapl.layout.to_row( + row4 = crispy_layout_mixin.to_row( [('assunto', 12)]) more = [] @@ -448,25 +448,25 @@ class DocumentoAdministrativoForm(ModelForm): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('tipo', 4), ('numero', 4), ('ano', 4)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('data', 6), ('numero_protocolo', 6)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('assunto', 12)]) - row4 = sapl.layout.to_row( + row4 = crispy_layout_mixin.to_row( [('interessado', 9), ('tramitacao', 3)]) - row5 = sapl.layout.to_row( + row5 = crispy_layout_mixin.to_row( [('texto_integral', 12)]) - row6 = sapl.layout.to_row( + row6 = crispy_layout_mixin.to_row( [('dias_prazo', 6), ('data_fim_prazo', 6)]) - row7 = sapl.layout.to_row( + row7 = crispy_layout_mixin.to_row( [('observacao', 12)]) self.helper = FormHelper() diff --git a/protocoloadm/layouts.yaml b/protocoloadm/layouts.yaml new file mode 100644 index 000000000..32ba858ee --- /dev/null +++ b/protocoloadm/layouts.yaml @@ -0,0 +1,48 @@ + +TipoDocumentoAdministrativo: + Tipo Documento Administrativo: + - sigla:4 descricao + +DocumentoAdministrativo: + Indentificação Básica: + - tipo numero ano + - data numero_protocolo + - assunto + - interessado tramitacao + - texto_integral + Outras Informações: + - dias_prazo data_fim_prazo + - observacao + +DocumentoAcessorioAdministrativo: + Documento Acessório: + - tipo nome data + - autor + - arquivo + - assunto + +StatusTramitacaoAdministrativo: + Status Tramitação Administrativo: + - indicador:3 sigla:2 descricao + +TramitacaoAdministrativo: + Tramitação: + - data_tramitacao:4 unidade_tramitacao_local + - status:4 unidade_tramitacao_destino + - data_encaminhamento data_fim_prazo + - texto + +Protocolo: + Indentificação Documento: + - tipo_protocolo + - tipo_documento numero_paginas + - assunto_ementa + - interessado + - observacao + +Protocolo: + Indentificação da Matéria: + - tipo_materia numero_paginas + - assunto_ementa + - autor + - observacao diff --git a/protocoloadm/views.py b/protocoloadm/views.py index 1d09b7ce0..9db7316f7 100644 --- a/protocoloadm/views.py +++ b/protocoloadm/views.py @@ -27,77 +27,17 @@ from .models import (Autor, DocumentoAcessorioAdministrativo, StatusTramitacaoAdministrativo, TipoDocumentoAdministrativo, TramitacaoAdministrativo) -tipo_documento_administrativo_crud = Crud( - TipoDocumentoAdministrativo, '', [ - - [_('Tipo Documento Administrativo'), - [('sigla', 4), ('descricao', 8)]], - ]) - -documento_administrativo_crud = Crud( - DocumentoAdministrativo, '', [ - - [_('Indentificação Básica'), - [('tipo', 4), ('numero', 4), ('ano', 4)], - [('data', 6), ('numero_protocolo', 6)], - [('assunto', 12)], - [('interessado', 6), ('tramitacao', 6)], - [('texto_integral', 12)]], - - [_('Outras Informações'), - [('dias_prazo', 6), ('data_fim_prazo', 6)], - [('observacao', 12)]], - ]) - +tipo_documento_administrativo_crud = Crud(TipoDocumentoAdministrativo, '') +documento_administrativo_crud = Crud(DocumentoAdministrativo, '') documento_acessorio_administrativo_crud = Crud( - DocumentoAcessorioAdministrativo, '', [ - - [_('Documento Acessório'), - [('tipo', 4), ('nome', 4), ('data', 4)], - [('autor', 12)], - [('arquivo', 12)], - [('assunto', 12)]], - ]) - + DocumentoAcessorioAdministrativo, '') status_tramitacao_administrativo_crud = Crud( - StatusTramitacaoAdministrativo, '', [ - - [_('Status Tramitação Administrativo'), - [('indicador', 3), - ('sigla', 2), - ('descricao', 7)]], - ]) - -tramitacao_administrativo_crud = Crud( - TramitacaoAdministrativo, '', [ - - [_('Tramitação'), - [('data_tramitacao', 4), ('unidade_tramitacao_local', 8)], - [('status', 4), ('unidade_tramitacao_destino', 8)], - [('data_encaminhamento', 6), ('data_fim_prazo', 6)], - [('texto', 12)]], - ]) - -protocolo_documento_crud = Crud( - Protocolo, '', [ - - [_('Indentificação Documento'), - [('tipo_protocolo', 12)], - [('tipo_documento', 6), ('numero_paginas', 6)], - [('assunto_ementa', 12)], - [('interessado', 12)], - [('observacao', 12)]], - ]) - -protocolo_materia_crud = Crud( - Protocolo, '', [ - - [_('Indentificação da Matéria'), - [('tipo_materia', 6), ('numero_paginas', 6)], - [('assunto_ementa', 12)], - [('autor', 12)], - [('observacao', 12)]], - ]) + StatusTramitacaoAdministrativo, '') +tramitacao_administrativo_crud = Crud(TramitacaoAdministrativo, '') +protocolo_documento_crud = Crud(Protocolo, '') + +# FIXME precisa de uma chave diferente para o layout +protocolo_materia_crud = Crud(Protocolo, '') class ProtocoloListView(FormMixin, ListView): diff --git a/requirements/requirements.txt b/requirements/requirements.txt index a09461be4..cdf73800b 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -15,4 +15,5 @@ libsass psycopg2 pytz pyyaml +rtyaml unipath diff --git a/sapl/layout.py b/sapl/layout.py deleted file mode 100644 index 6d0c4c7f5..000000000 --- a/sapl/layout.py +++ /dev/null @@ -1,37 +0,0 @@ -from crispy_forms.bootstrap import FormActions -from crispy_forms.layout import HTML, Div, Fieldset, Layout, Submit -from django.utils.translation import ugettext as _ - - -def to_column(name_span): - fieldname, span = name_span - return Div(fieldname, css_class='col-md-%d' % span) - - -def to_row(names_spans): - return Div(*map(to_column, names_spans), css_class='row-fluid') - - -def to_fieldsets(fields): - for field in fields: - if isinstance(field, list): - legend, *row_specs = field - rows = [to_row(name_span_list) for name_span_list in row_specs] - yield Fieldset(legend, *rows) - else: - yield field - - -def form_actions(more=[], save_label=_('Salvar')): - return FormActions( - Submit('salvar', save_label, css_class='pull-right'), *more) - - -class SaplFormLayout(Layout): - - def __init__(self, *fields): - buttons = form_actions(more=[ - HTML('%s' % _('Cancelar'))]) - _fields = list(to_fieldsets(fields)) + [to_row([(buttons, 12)])] - super(SaplFormLayout, self).__init__(*_fields) diff --git a/sessao/forms.py b/sessao/forms.py index 2aaa0858e..2fb088415 100644 --- a/sessao/forms.py +++ b/sessao/forms.py @@ -3,8 +3,8 @@ from crispy_forms.layout import Fieldset, Layout from django import forms from django.forms import ModelForm -import sapl -from sapl.layout import form_actions +import crispy_layout_mixin +from crispy_layout_mixin import form_actions from .models import SessaoPlenaria @@ -97,27 +97,27 @@ class SessaoForm(ModelForm): def __init__(self, *args, **kwargs): - row1 = sapl.layout.to_row( + row1 = crispy_layout_mixin.to_row( [('numero', 3), ('tipo', 3), ('legislatura', 3), ('sessao_legislativa', 3)]) - row2 = sapl.layout.to_row( + row2 = crispy_layout_mixin.to_row( [('data_inicio', 4), ('hora_inicio', 4), ('iniciada', 4)]) - row3 = sapl.layout.to_row( + row3 = crispy_layout_mixin.to_row( [('data_fim', 4), ('hora_fim', 4), ('finalizada', 4)]) - row4 = sapl.layout.to_row( + row4 = crispy_layout_mixin.to_row( [('upload_pauta', 6), ('upload_ata', 6)]) - row5 = sapl.layout.to_row( + row5 = crispy_layout_mixin.to_row( [('url_audio', 6), ('url_video', 6)]) diff --git a/sessao/layouts.yaml b/sessao/layouts.yaml new file mode 100644 index 000000000..650105863 --- /dev/null +++ b/sessao/layouts.yaml @@ -0,0 +1,41 @@ + +TipoSessaoPlenaria: + Tipo de Sessão Plenária: + - nome quorum_minimo + +SessaoPlenaria: + Dados Básicos: + - numero:1 tipo:3 legislatura sessao_legislativa + - data_inicio:5 hora_inicio:5 iniciada + - data_fim:5 hora_fim:5 finalizada + - upload_pauta upload_ata + - url_audio url_video + +ExpedienteMateria: + Cadastro de Matérias do Expediente: + - data_ordem tip_sessao_FIXME numero_ordem + - tip_id_basica_FIXME num_ident_basica_FIXME ano_ident_basica_FIXME + - tipo_votacao + - observacao + +OrdemDia: + Cadastro de Matérias da Ordem do Dia: + - data_ordem tip_sessao_FIXME numero_ordem + - tip_id_basica_FIXME num_ident_basica_FIXME ano_ident_basica_FIXME + - tipo_votacao + - observacao + +TipoResultadoVotacao: + Tipo de Resultado da Votação: + - nome + +TipoExpediente: + Tipo de Expediente: + - nome + +RegistroVotacao: + Votação Simbólica: + - numero_votos_sim numero_votos_nao numero_abstencoes nao_votou_FIXME + - votacao_branco_FIXME ind_votacao_presidente_FIXME + - tipo_resultado_votacao + - observacao diff --git a/sessao/views.py b/sessao/views.py index 60ba39c28..93563ab68 100644 --- a/sessao/views.py +++ b/sessao/views.py @@ -27,78 +27,14 @@ from .models import (CargoMesa, ExpedienteMateria, ExpedienteSessao, TipoExpediente, TipoResultadoVotacao, TipoSessaoPlenaria, VotoParlamentar) -tipo_sessao_crud = Crud( - TipoSessaoPlenaria, 'tipo_sessao_plenaria', [ - - [_('Tipo de Sessão Plenária'), - [('nome', 6), ('quorum_minimo', 6)]], - ]) - -sessao_crud = Crud( - SessaoPlenaria, '', [ - - [_('Dados Básicos'), - [('numero', 1), - ('tipo', 3), - ('legislatura', 4), - ('sessao_legislativa', 4)], - [('data_inicio', 5), ('hora_inicio', 5), ('iniciada', 2)], - [('data_fim', 5), ('hora_fim', 5), ('finalizada', 2)], - [('upload_pauta', 6), ('upload_ata', 6)], - [('url_audio', 6), ('url_video', 6)]], - ]) - -expediente_materia_crud = Crud( - ExpedienteMateria, '', [ - - [_('Cadastro de Matérias do Expediente'), - [('data_ordem', 4), ('tip_sessao_FIXME', 4), ('numero_ordem', 4)], - [('tip_id_basica_FIXME', 4), - ('num_ident_basica_FIXME', 4), - ('ano_ident_basica_FIXME', 4)], - [('tipo_votacao', 12)], - [('observacao', 12)]], - ]) - -ordem_dia_crud = Crud( - OrdemDia, '', [ - - [_('Cadastro de Matérias da Ordem do Dia'), - [('data_ordem', 4), ('tip_sessao_FIXME', 4), ('numero_ordem', 4)], - [('tip_id_basica_FIXME', 4), - ('num_ident_basica_FIXME', 4), - ('ano_ident_basica_FIXME', 4)], - [('tipo_votacao', 12)], - [('observacao', 12)]], - ]) - +tipo_sessao_crud = Crud(TipoSessaoPlenaria, 'tipo_sessao_plenaria') +sessao_crud = Crud(SessaoPlenaria, '') +expediente_materia_crud = Crud(ExpedienteMateria, '') +ordem_dia_crud = Crud(OrdemDia, '') tipo_resultado_votacao_crud = Crud( - TipoResultadoVotacao, 'tipo_resultado_votacao', [ - - [_('Tipo de Resultado da Votação'), - [('nome', 12)]], - ]) - -tipo_expediente_crud = Crud( - TipoExpediente, 'tipo_expediente', [ - - [_('Tipo de Expediente'), - [('nome', 12)]], - ]) - -registro_votacao_crud = Crud( - RegistroVotacao, '', [ - - [_('Votação Simbólica'), - [('numero_votos_sim', 3), - ('numero_votos_nao', 3), - ('numero_abstencoes', 3), - ('nao_votou_FIXME', 3)], - [('votacao_branco_FIXME', 6), - ('ind_votacao_presidente_FIXME', 6)], - [('tipo_resultado_votacao', 12)], - [('observacao', 12)]], - ]) + TipoResultadoVotacao, 'tipo_resultado_votacao') +tipo_expediente_crud = Crud(TipoExpediente, 'tipo_expediente') +registro_votacao_crud = Crud(RegistroVotacao, '') class PresencaView(sessao_crud.CrudDetailView): @@ -646,7 +582,7 @@ class ExpedienteOrdemDiaView(sessao_crud.CrudDetailView): return self.form_valid(form) else: context.update( - {'error_message': "Não foi possível salvar formulário!"}) + {'error_message': _("Não foi possível salvar formulário!")}) return self.form_invalid(form) def get_success_url(self): diff --git a/templates/crud/detail.html b/templates/crud/detail.html index 8ef6cd351..4e5d6b019 100644 --- a/templates/crud/detail.html +++ b/templates/crud/detail.html @@ -14,7 +14,7 @@ {% block detail_content %} - {% for fieldset in view.fieldsets %} + {% for fieldset in view.layout_display %}