Browse Source

Crud numeracao

pull/356/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
661545849d
  1. 30
      materia/forms.py
  2. 3
      materia/layouts.yaml
  3. 19
      materia/tests/test_materia.py
  4. 11
      materia/urls.py
  5. 87
      materia/views.py
  6. 35
      templates/materia/numeracao.html
  7. 7
      templates/materia/numeracao_edit.html
  8. 2
      templates/materia/subnav.yaml

30
materia/forms.py

@ -315,25 +315,21 @@ class NumeracaoForm(ModelForm):
'ano_materia', 'ano_materia',
'data_materia'] 'data_materia']
def __init__(self, excluir=False, *args, **kwargs): def clean(self):
more = [] if self.errors:
if excluir: return self.errors
more = [Submit('Excluir', 'Excluir')]
row1 = crispy_layout_mixin.to_row( try:
[('tipo_materia', 12)]) materia_anexada = MateriaLegislativa.objects.get(
row2 = crispy_layout_mixin.to_row( numero=self.cleaned_data['numero_materia'],
[('numero_materia', 4), ('ano_materia', 4), ('data_materia', 4)]) ano=self.cleaned_data['ano_materia'],
tipo=self.cleaned_data['tipo_materia'])
except ObjectDoesNotExist:
msg = _('A matéria a ser inclusa não existe no cadastro'
' de matérias legislativas.')
raise ValidationError(msg)
self.helper = FormHelper() return self.cleaned_data
self.helper.layout = Layout(
Fieldset(
_('Incluir Numeração'),
row1, row2,
form_actions(more=more)
)
)
super(NumeracaoForm, self).__init__(*args, **kwargs)
class AnexadaForm(ModelForm): class AnexadaForm(ModelForm):

3
materia/layouts.yaml

@ -70,8 +70,7 @@ DocumentoAcessorio:
Numeracao: Numeracao:
Numeração: Numeração:
- tipo_materia numero_materia - tipo_materia numero_materia ano_materia data_materia
- ano_materia data_materia
Orgao: Orgao:
Órgão: Órgão:

19
materia/tests/test_materia.py

@ -170,17 +170,14 @@ def test_despacho_inicial_submit(client):
@pytest.mark.django_db(transaction=False) @pytest.mark.django_db(transaction=False)
def test_numeracao_submit(client): def test_numeracao_submit(client):
materia_principal = make_materia_principal() materia_principal = make_materia_principal()
materia = make_materia_principal()
# Cria dados para inserir na numeração
tipo = mommy.make(TipoMateriaLegislativa,
sigla='T2',
descricao='Teste_2')
# Testa POST # Testa POST
response = client.post(reverse('materia:numeracao', response = client.post(reverse('materia:numeracao_create',
kwargs={'pk': materia_principal.pk}), kwargs={'pk': materia_principal.pk}),
{'tipo_materia': tipo.pk, {'tipo_materia': materia.tipo.pk,
'numero_materia': '341', 'numero_materia': materia.numero,
'ano_materia': 2015, 'ano_materia': materia.ano,
'data_materia': '2016-03-21', 'data_materia': '2016-03-21',
'salvar': 'salvar'}, 'salvar': 'salvar'},
follow=True) follow=True)
@ -189,8 +186,8 @@ def test_numeracao_submit(client):
# Verifica se a numeração foi criada # Verifica se a numeração foi criada
numeracao = Numeracao.objects.first() numeracao = Numeracao.objects.first()
assert numeracao.tipo_materia == tipo assert numeracao.tipo_materia == materia.tipo
assert numeracao.ano_materia == 2015 assert numeracao.ano_materia == materia.ano
@pytest.mark.django_db(transaction=False) @pytest.mark.django_db(transaction=False)
@ -366,7 +363,7 @@ def test_form_errors_legislacao_citada(client):
def test_form_errors_numeracao(client): def test_form_errors_numeracao(client):
materia_principal = make_materia_principal() materia_principal = make_materia_principal()
response = client.post(reverse('materia:numeracao', response = client.post(reverse('materia:numeracao_create',
kwargs={'pk': materia_principal.pk}), kwargs={'pk': materia_principal.pk}),
{'salvar': 'salvar'}, {'salvar': 'salvar'},
follow=True) follow=True)

11
materia/urls.py

@ -8,8 +8,8 @@ from materia.views import (AcompanhamentoConfirmarView,
LegislacaoCitadaEditView, LegislacaoCitadaView, LegislacaoCitadaEditView, LegislacaoCitadaView,
MateriaLegislativaCrud, MateriaLegislativaCrud,
MateriaLegislativaPesquisaView, MateriaTaView, MateriaLegislativaPesquisaView, MateriaTaView,
NumeracaoEditView, NumeracaoView, OrgaoCrud, NumeracaoCrud, OrgaoCrud, OrigemCrud,
OrigemCrud, ProposicaoEditView, ProposicaoListView, ProposicaoEditView, ProposicaoListView,
ProposicaoTaView, ProposicaoView, ProposicaoTaView, ProposicaoView,
RegimeTramitacaoCrud, RelatoriaEditView, RegimeTramitacaoCrud, RelatoriaEditView,
RelatoriaView, StatusTramitacaoCrud, TipoAutorCrud, RelatoriaView, StatusTramitacaoCrud, TipoAutorCrud,
@ -26,7 +26,8 @@ urlpatterns = [
url(r'^materia/', include(MateriaLegislativaCrud.get_urls() + url(r'^materia/', include(MateriaLegislativaCrud.get_urls() +
AnexadaCrud.get_urls() + AnexadaCrud.get_urls() +
AutoriaCrud.get_urls() + AutoriaCrud.get_urls() +
DespachoInicialCrud.get_urls())), DespachoInicialCrud.get_urls() +
NumeracaoCrud.get_urls())),
url(r'^materia/(?P<pk>[0-9]+)/ta$', url(r'^materia/(?P<pk>[0-9]+)/ta$',
@ -57,10 +58,6 @@ urlpatterns = [
LegislacaoCitadaView.as_view(), name='legislacao_citada'), LegislacaoCitadaView.as_view(), name='legislacao_citada'),
url(r'^materia/(?P<pk>\d+)/legislacao-citada/(?P<id>\d+)/edit', url(r'^materia/(?P<pk>\d+)/legislacao-citada/(?P<id>\d+)/edit',
LegislacaoCitadaEditView.as_view(), name='legislacao_citada_edit'), LegislacaoCitadaEditView.as_view(), name='legislacao_citada_edit'),
url(r'^materia/(?P<pk>\d+)/numeracao$',
NumeracaoView.as_view(), name='numeracao'),
url(r'^materia/(?P<pk>\d+)/numeracao/(?P<id>\d+)/edit',
NumeracaoEditView.as_view(), name='numeracao_edit'),
url(r'^materia/(?P<pk>\d+)/documento-acessorio$', url(r'^materia/(?P<pk>\d+)/documento-acessorio$',
DocumentoAcessorioView.as_view(), name='documento_acessorio'), DocumentoAcessorioView.as_view(), name='documento_acessorio'),
url(r'^materia/(?P<pk>\d+)/documento-acessorio/(?P<id>\d+)/edit', url(r'^materia/(?P<pk>\d+)/documento-acessorio/(?P<id>\d+)/edit',

87
materia/views.py

@ -47,7 +47,6 @@ AnexadaCrud = Crud.build(Anexada, '')
TipoAutorCrud = Crud.build(TipoAutor, 'tipo_autor') TipoAutorCrud = Crud.build(TipoAutor, 'tipo_autor')
AutorCrud = Crud.build(Autor, 'autor') AutorCrud = Crud.build(Autor, 'autor')
DocumentoAcessorioCrud = Crud.build(DocumentoAcessorio, '') DocumentoAcessorioCrud = Crud.build(DocumentoAcessorio, '')
NumeracaoCrud = Crud.build(Numeracao, '')
OrgaoCrud = Crud.build(Orgao, 'orgao') OrgaoCrud = Crud.build(Orgao, 'orgao')
RelatoriaCrud = Crud.build(Relatoria, '') RelatoriaCrud = Crud.build(Relatoria, '')
TipoProposicaoCrud = Crud.build(TipoProposicao, 'tipo_proposicao') TipoProposicaoCrud = Crud.build(TipoProposicao, 'tipo_proposicao')
@ -60,6 +59,18 @@ AutoriaCrud = MasterDetailCrud.build(Autoria, 'materia', '')
DespachoInicialCrud = MasterDetailCrud.build(DespachoInicial, 'materia', '') DespachoInicialCrud = MasterDetailCrud.build(DespachoInicial, 'materia', '')
class NumeracaoCrud(MasterDetailCrud):
model = Numeracao
parent_field = 'materia'
help_path = ''
class CreateView(MasterDetailCrud.CreateView):
form_class = NumeracaoForm
class UpdateView(MasterDetailCrud.UpdateView):
form_class = NumeracaoForm
class AnexadaCrud(MasterDetailCrud): class AnexadaCrud(MasterDetailCrud):
model = Anexada model = Anexada
parent_field = 'materia_principal' parent_field = 'materia_principal'
@ -222,80 +233,6 @@ class LegislacaoCitadaEditView(FormView):
'object': materia}) 'object': materia})
class NumeracaoView(CreateView):
template_name = "materia/numeracao.html"
form_class = NumeracaoForm
def get(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
numeracao = Numeracao.objects.filter(materia_id=kwargs['pk'])
return self.render_to_response(
{'object': materia,
'form': self.get_form(),
'numeracao': numeracao})
def post(self, request, *args, **kwargs):
form = self.get_form()
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
numeracao_list = Numeracao.objects.filter(
materia_id=kwargs['pk'])
if form.is_valid():
numeracao = form.save(commit=False)
numeracao.materia = materia
numeracao.save()
return self.form_valid(form)
else:
return self.render_to_response({'form': form,
'object': materia,
'numeracao': numeracao_list})
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('materia:numeracao', kwargs={'pk': pk})
class NumeracaoEditView(CreateView):
template_name = "materia/numeracao_edit.html"
form_class = NumeracaoForm
def get(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
numeracao = Numeracao.objects.get(id=kwargs['id'])
form = NumeracaoForm(instance=numeracao, excluir=True)
return self.render_to_response(
{'object': materia,
'form': form,
'numeracao': numeracao})
def post(self, request, *args, **kwargs):
form = self.get_form()
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
numeracao = Numeracao.objects.get(id=kwargs['id'])
if form.is_valid():
if 'excluir' in request.POST:
numeracao.delete()
elif 'salvar' in request.POST:
numeracao.materia = materia
numeracao.tipo_materia = form.cleaned_data['tipo_materia']
numeracao.numero_materia = form.cleaned_data['numero_materia']
numeracao.ano_materia = form.cleaned_data['ano_materia']
numeracao.data_materia = form.cleaned_data['data_materia']
numeracao.save()
return redirect(self.get_success_url())
else:
return self.render_to_response({'form': form,
'object': materia,
'numeracao': numeracao})
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('materia:numeracao', kwargs={'pk': pk})
class DocumentoAcessorioView(CreateView): class DocumentoAcessorioView(CreateView):
template_name = "materia/documento_acessorio.html" template_name = "materia/documento_acessorio.html"
form_class = DocumentoAcessorioForm form_class = DocumentoAcessorioForm

35
templates/materia/numeracao.html

@ -1,35 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}
{% block detail_content %}
<fieldset>
<legend>Matéria Legislativa</legend>
{% include "materia/resumo_detail_materia.html" %}
<fieldset>
<legend>Numeração</legend>
<table class="table table-striped table-bordered">
<thead class="thead-default">
<tr>
<th>Tipo Matéria</th>
<th>Descrição</th>
<th>Número</th>
<th>Ano</th>
<th>Data</th>
</tr>
</thead>
{% for n in numeracao %}
<tr>
<td><a href="{% url 'materia:numeracao_edit' object.id n.id %}">{{n.tipo_materia.sigla}}</a></td>
<td>{{n.tipo_materia.descricao}}</td>
<td>{{n.numero_materia}}</td>
<td>{{n.ano_materia}}</td>
<td>{{n.data_materia|date:'d/m/Y'}}</td>
</tr>
{% endfor %}
</table>
</fieldset>
{% crispy form %}
</fieldset>
{% endblock %}

7
templates/materia/numeracao_edit.html

@ -1,7 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}
{% block detail_content %}
{% crispy form %}
{% endblock %}

2
templates/materia/subnav.yaml

@ -11,7 +11,7 @@
- title: Legislação Citada - title: Legislação Citada
url: legislacao_citada url: legislacao_citada
- title: Numeração - title: Numeração
url: numeracao url: numeracao_list
- title: Tramitação - title: Tramitação
url: tramitacao_materia url: tramitacao_materia
- title: Relatoria - title: Relatoria

Loading…
Cancel
Save