From ff490a54cddb7f00b0ab54ef655ff2bf47814901 Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Tue, 10 May 2016 10:46:06 -0300 Subject: [PATCH] Init crud proposicao --- materia/forms.py | 34 ----- materia/layouts.yaml | 10 +- materia/urls.py | 12 +- materia/views.py | 129 ++---------------- templates/base.html | 2 +- .../materia/proposicao/proposicao_list.html | 40 ------ .../proposicao.html => proposicao_form.html} | 0 7 files changed, 23 insertions(+), 204 deletions(-) delete mode 100644 templates/materia/proposicao/proposicao_list.html rename templates/materia/{proposicao/proposicao.html => proposicao_form.html} (100%) diff --git a/materia/forms.py b/materia/forms.py index 81dc4a778..889af33a2 100644 --- a/materia/forms.py +++ b/materia/forms.py @@ -56,40 +56,6 @@ class ProposicaoForm(ModelForm): model = Proposicao fields = ['tipo', 'data_envio', 'descricao', 'texto_original'] - def __init__(self, excluir=False, *args, **kwargs): - more = [] - if excluir: - more = [Submit('Excluir', 'Excluir')] - - row1 = crispy_layout_mixin.to_row( - [('tipo', 8), ('data_envio', 4)]) - row2 = crispy_layout_mixin.to_row( - [('descricao', 12)]) - row3 = crispy_layout_mixin.to_row( - [('tipo_materia', 4), ('numero_materia', 4), ('ano_materia', 4)]) - row4 = crispy_layout_mixin.to_row( - [('texto_original', 12)]) - - self.helper = FormHelper() - self.helper.layout = Layout( - Fieldset(_('Incluir Proposição'), - row1, row2, row3, row4, - HTML(""" -
-

- -

- """, ), - form_actions(more=more)) - ) - super(ProposicaoForm, self).__init__( - *args, **kwargs) - class AcompanhamentoMateriaForm(ModelForm): diff --git a/materia/layouts.yaml b/materia/layouts.yaml index 272cb006e..dee64a9d5 100644 --- a/materia/layouts.yaml +++ b/materia/layouts.yaml @@ -89,10 +89,12 @@ TipoProposicao: 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 + - tipo data_envio + - descricao + Materia: + - tipo_materia numero_materia ano_materia + Texto: + - texto_original StatusTramitacao: Status Tramitação: diff --git a/materia/urls.py b/materia/urls.py index 332623881..31ee3db9c 100644 --- a/materia/urls.py +++ b/materia/urls.py @@ -8,8 +8,7 @@ from materia.views import (AcompanhamentoConfirmarView, MateriaLegislativaCrud, MateriaLegislativaPesquisaView, MateriaTaView, NumeracaoCrud, OrgaoCrud, OrigemCrud, - ProposicaoEditView, ProposicaoListView, - ProposicaoTaView, ProposicaoView, + ProposicaoCrud, ProposicaoTaView, RegimeTramitacaoCrud, RelatoriaCrud, StatusTramitacaoCrud, TipoAutorCrud, TipoDocumentoCrud, TipoFimRelatoriaCrud, @@ -29,7 +28,8 @@ urlpatterns = [ LegislacaoCitadaCrud.get_urls() + TramitacaoCrud.get_urls() + RelatoriaCrud.get_urls() + - DocumentoAcessorioCrud.get_urls())), + DocumentoAcessorioCrud.get_urls() + + ProposicaoCrud.get_urls())), # Integração com Compilação url(r'^materia/(?P[0-9]+)/ta$', @@ -55,12 +55,6 @@ urlpatterns = [ url(r'^sistema/materia/status-tramitacao/', include(StatusTramitacaoCrud.get_urls())), url(r'^sistema/materia/orgao/', include(OrgaoCrud.get_urls())), - url(r'^materia/proposicao$', - ProposicaoView.as_view(), name='adicionar_proposicao'), - url(r'^materia/proposicao_list$', - ProposicaoListView.as_view(), name='list_proposicao'), - url(r'^materia/proposicao/(?P[0-9]+)/edit$', - ProposicaoEditView.as_view(), name='editar_proposicao'), url(r'^materia/pesquisar-materia$', MateriaLegislativaPesquisaView.as_view(), name='pesquisar_materia'), url(r'^materia/(?P\d+)/acompanhar-materia/$', diff --git a/materia/views.py b/materia/views.py index 6a3606ef1..8166ff407 100644 --- a/materia/views.py +++ b/materia/views.py @@ -54,11 +54,22 @@ TipoAutorCrud = Crud.build(TipoAutor, 'tipo_autor') AutorCrud = Crud.build(Autor, 'autor') OrgaoCrud = Crud.build(Orgao, 'orgao') TipoProposicaoCrud = Crud.build(TipoProposicao, 'tipo_proposicao') -ProposicaoCrud = Crud.build(Proposicao, '') StatusTramitacaoCrud = Crud.build(StatusTramitacao, 'status_tramitacao') UnidadeTramitacaoCrud = Crud.build(UnidadeTramitacao, 'unidade_tramitacao') -RelatoriaCrud = MasterDetailCrud.build(Relatoria, 'materia', '') + +class ProposicaoCrud(Crud): + model = Proposicao + help_path = '' + + class BaseMixin(crud.base.CrudBaseMixin): + list_field_names = ['data_envio', 'tipo', 'descricao'] + + class CreateView(crud.base.CrudCreateView): + form_class = ProposicaoForm + + class UpdateView(crud.base.CrudUpdateView): + form_class = ProposicaoForm class RelatoriaCrud(MasterDetailCrud): @@ -624,27 +635,6 @@ def do_envia_email_tramitacao(request, materia): return None -class ProposicaoListView(ListView): - template_name = "materia/proposicao/proposicao_list.html" - paginate_by = 10 - model = Proposicao - - def get_queryset(self): - return Proposicao.objects.all().order_by('data_envio', - 'tipo', - 'descricao') - - def get_context_data(self, **kwargs): - context = super(ProposicaoListView, self).get_context_data(**kwargs) - - paginator = context['paginator'] - page_obj = context['page_obj'] - - context['page_range'] = make_pagination( - page_obj.number, paginator.num_pages) - return context - - class MateriaLegislativaPesquisaView(FilterView): model = MateriaLegislativa filterset_class = MateriaLegislativaFilterSet @@ -719,99 +709,6 @@ class MateriaLegislativaPesquisaView(FilterView): return self.render_to_response(context) -class ProposicaoView(CreateView): - template_name = "materia/proposicao/proposicao.html" - form_class = ProposicaoForm - - def get_success_url(self): - return reverse('materia:list_proposicao') - - def get(self, request, *args, **kwargs): - return self.render_to_response({'form': self.get_form()}) - - def post(self, request, *args, **kwargs): - form = self.get_form() - - if form.is_valid(): - proposicao = form.save(commit=False) - tipo = TipoProposicao.objects.get(id=form.data['tipo']) - if tipo.descricao == 'Parecer': - try: - materia = MateriaLegislativa.objects.get( - tipo_id=int(form.data['tipo_materia']), - ano=int(form.data['ano_materia']), - numero=int(form.data['numero_materia'])) - except ObjectDoesNotExist: - msg = _('Matéria adicionada não existe!') - messages.add_message(request, messages.INFO, msg) - return self.render_to_response({'form': form}) - else: - proposicao.autor = materia.autoria_set.first().autor - proposicao.materia = materia - proposicao.save() - return redirect(self.get_success_url()) - else: - return self.render_to_response({'form': form}) - - -class ProposicaoEditView(CreateView): - template_name = "materia/proposicao/proposicao.html" - form_class = ProposicaoForm - - def get_success_url(self): - return reverse('materia:list_proposicao') - - def get(self, request, *args, **kwargs): - proposicao = Proposicao.objects.get(id=kwargs['pk']) - return self.render_to_response({'form': ProposicaoForm( - excluir=True, - instance=proposicao)}) - - def post(self, request, *args, **kwargs): - form = self.get_form() - proposicao = Proposicao.objects.get(id=kwargs['pk']) - if form.is_valid(): - if 'Excluir' in request.POST: - if proposicao.data_envio: - proposicao.data_envio = None - proposicao.save() - else: - proposicao.delete() - if 'salvar' or "remover-foto" in request.POST: - if 'texto_original' in request.FILES: - # if os.unlink(proposicao.texto_original.path): - # proposicao.texto_original = None - proposicao.texto_original = request.FILES['texto_original'] - tipo = TipoProposicao.objects.get(id=form.data['tipo']) - proposicao.tipo = tipo - proposicao.descricao = form.data['descricao'] - if tipo.descricao == 'Parecer': - try: - materia = MateriaLegislativa.objects.get( - tipo_id=int(form.data['tipo_materia']), - ano=int(form.data['ano_materia']), - numero=int(form.data['numero_materia'])) - except ObjectDoesNotExist: - msg = _('Matéria adicionada não existe!') - messages.add_message(request, messages.INFO, msg) - return self.render_to_response({'form': form}) - else: - proposicao.autor = materia.autoria_set.first().autor - proposicao.materia = materia - if not proposicao.data_envio: - proposicao.data_envio = datetime.now() - if "remover-texto" in request.POST: - try: - os.unlink(proposicao.texto_original.path) - except OSError: - pass # Should log this error!!!!! - proposicao.texto_original = None - proposicao.save() - return redirect(self.get_success_url()) - else: - return self.render_to_response({'form': form}) - - class MateriaTaView(IntegracaoTaView): model = MateriaLegislativa model_type_foreignkey = TipoMateriaLegislativa diff --git a/templates/base.html b/templates/base.html index a2eacf6dc..4822ebc2d 100644 --- a/templates/base.html +++ b/templates/base.html @@ -67,7 +67,7 @@