Browse Source

Cria 'edicao' de proposicao com opcao de enviar ou excluir a proposicao

pull/258/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
9566389e39
  1. 32
      materia/forms.py
  2. 20
      materia/migrations/0025_auto_20160311_1613.py
  3. 2
      materia/models.py
  4. 4
      materia/urls.py
  5. 74
      materia/views.py
  6. 10
      templates/materia/proposicao/proposicao.html
  7. 20
      templates/materia/proposicao/proposicao_list.html

32
materia/forms.py

@ -40,39 +40,27 @@ class ProposicaoForm(ModelForm):
class Meta: class Meta:
model = Proposicao model = Proposicao
fields = ['tipo', fields = ['tipo', 'data_envio', 'descricao', 'texto_original']
'descricao',
'texto_original']
exclude = ['autor',
'data_envio',
'data_recebimento',
'data_devolucao',
'justificativa_devolucao',
'numero_proposicao',
'status',
'materia',
'documento']
def __init__(self, *args, **kwargs): def __init__(self, excluir=False, *args, **kwargs):
more = []
if excluir:
more = [Submit('Excluir', 'Excluir')]
row1 = crispy_layout_mixin.to_row( row1 = crispy_layout_mixin.to_row(
[('tipo', 12)]) [('tipo', 8), ('data_envio', 4)])
row2 = crispy_layout_mixin.to_row( row2 = crispy_layout_mixin.to_row(
[('descricao', 12)]) [('descricao', 12)])
row3 = crispy_layout_mixin.to_row( row3 = crispy_layout_mixin.to_row(
[('tipo_materia', 4), [('tipo_materia', 4), ('numero_materia', 4), ('ano_materia', 4)])
('numero_materia', 4),
('ano_materia', 4)])
row4 = crispy_layout_mixin.to_row( row4 = crispy_layout_mixin.to_row(
[('texto_original', 10)]) [('texto_original', 12)])
row4.append(
Column(form_actions(), css_class='col-md-2'))
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
Fieldset(_('Incluir Proposição'), Fieldset(_('Incluir Proposição'),
row1, row2, row3, row4) row1, row2, row3, row4,
form_actions(more=more))
) )
super(ProposicaoForm, self).__init__( super(ProposicaoForm, self).__init__(
*args, **kwargs) *args, **kwargs)

20
materia/migrations/0025_auto_20160311_1613.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9 on 2016-03-11 19:13
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('materia', '0024_auto_20160311_1501'),
]
operations = [
migrations.AlterField(
model_name='proposicao',
name='data_envio',
field=models.DateTimeField(blank=True, null=True, verbose_name='Data de Envio'),
),
]

2
materia/models.py

@ -429,7 +429,7 @@ class Proposicao(models.Model):
tipo = models.ForeignKey(TipoProposicao, verbose_name=_('Tipo')) tipo = models.ForeignKey(TipoProposicao, verbose_name=_('Tipo'))
# XXX data_envio was not null, but actual data said otherwise!!! # XXX data_envio was not null, but actual data said otherwise!!!
data_envio = models.DateTimeField( data_envio = models.DateTimeField(
null=True, verbose_name=_('Data de Envio')) null=True, blank=True, verbose_name=_('Data de Envio'))
data_recebimento = models.DateTimeField( data_recebimento = models.DateTimeField(
blank=True, null=True, verbose_name=_('Data de Incorporação')) blank=True, null=True, verbose_name=_('Data de Incorporação'))
descricao = models.TextField(max_length=100, verbose_name=_('Descrição')) descricao = models.TextField(max_length=100, verbose_name=_('Descrição'))

4
materia/urls.py

@ -19,7 +19,7 @@ from materia.views import (AcompanhamentoConfirmarView,
status_tramitacao_crud, tipo_autor_crud, status_tramitacao_crud, tipo_autor_crud,
tipo_documento_crud, tipo_fim_relatoria_crud, tipo_documento_crud, tipo_fim_relatoria_crud,
tipo_materia_crud, tipo_proposicao_crud, tipo_materia_crud, tipo_proposicao_crud,
unidade_tramitacao_crud) unidade_tramitacao_crud, ProposicaoEditView)
materia_legislativa_patterns = materia_legislativa_crud.urlpatterns materia_legislativa_patterns = materia_legislativa_crud.urlpatterns
@ -95,6 +95,8 @@ urlpatterns = [
ProposicaoView.as_view(), name='adicionar_proposicao'), ProposicaoView.as_view(), name='adicionar_proposicao'),
url(r'^materia/proposicao_list$', url(r'^materia/proposicao_list$',
ProposicaoListView.as_view(), name='list_proposicao'), ProposicaoListView.as_view(), name='list_proposicao'),
url(r'^materia/proposicao/(?P<pk>[0-9]+)/edit$',
ProposicaoEditView.as_view(), name='editar_proposicao'),
url(r'^materia/pesquisar-materia$', url(r'^materia/pesquisar-materia$',
MateriaLegislativaPesquisaView.as_view(), name='pesquisar_materia'), MateriaLegislativaPesquisaView.as_view(), name='pesquisar_materia'),
url(r'^materia/pesquisar-materia-list$', url(r'^materia/pesquisar-materia-list$',

74
materia/views.py

@ -1188,12 +1188,14 @@ class AutoriaEditView(CreateView):
class ProposicaoListView(ListView): class ProposicaoListView(ListView):
template_name = "materia/proposicao_list.html" template_name = "materia/proposicao/proposicao_list.html"
paginate_by = 10 paginate_by = 10
model = Proposicao model = Proposicao
def get_queryset(self): def get_queryset(self):
return Proposicao.objects.all().order_by('-data_envio') return Proposicao.objects.all().order_by('data_envio',
'tipo',
'descricao')
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(ProposicaoListView, self).get_context_data(**kwargs) context = super(ProposicaoListView, self).get_context_data(**kwargs)
@ -1387,27 +1389,22 @@ class PesquisaMateriaListView(ListView):
return context return context
class ProposicaoView(FormView): class ProposicaoView(CreateView):
template_name = "materia/proposicao.html" template_name = "materia/proposicao/proposicao.html"
form_class = ProposicaoForm
def get_success_url(self): def get_success_url(self):
return reverse('list_proposicao') return reverse('list_proposicao')
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
form = ProposicaoForm() return self.render_to_response({'form': self.get_form()})
return self.render_to_response({'form': form})
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
form = ProposicaoForm(request.POST) form = self.get_form()
if form.is_valid(): if form.is_valid():
proposicao = form.save(commit=False) proposicao = form.save(commit=False)
if 'texto_original' in request.FILES: tipo = TipoProposicao.objects.get(id=form.data['tipo'])
proposicao.texto_original = request.FILES['texto_original']
tipo = TipoProposicao.objects.get(
id=int(request.POST['tipo']))
if tipo.descricao == 'Parecer': if tipo.descricao == 'Parecer':
try: try:
materia = MateriaLegislativa.objects.get( materia = MateriaLegislativa.objects.get(
@ -1421,17 +1418,56 @@ class ProposicaoView(FormView):
else: else:
proposicao.autor = materia.autoria_set.first().autor proposicao.autor = materia.autoria_set.first().autor
proposicao.materia = materia proposicao.materia = materia
proposicao.descricao = sub('&nbsp;',
' ',
strip_tags(form.data['descricao']))
# proposicao.data_envio = datetime.now()
proposicao.save() proposicao.save()
return self.form_valid(form) return redirect(self.get_success_url())
else: else:
return self.render_to_response({'form': form}) 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('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:
proposicao.delete()
elif 'salvar' in request.POST:
if 'texto_original' in request.FILES:
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
proposicao.data_envio = datetime.now()
proposicao.save()
return redirect(self.get_success_url())
else:
return self.render_to_response({'form': form})
class MateriaTaView(IntegracaoTaView): class MateriaTaView(IntegracaoTaView):
model = MateriaLegislativa model = MateriaLegislativa
model_type_foreignkey = TipoMateriaLegislativa model_type_foreignkey = TipoMateriaLegislativa

10
templates/materia/proposicao.html → templates/materia/proposicao/proposicao.html

@ -1,13 +1,6 @@
{% extends "crud/detail.html" %} {% extends "crud/form.html" %}
{% load i18n %} {% load i18n %}
{% load crispy_forms_tags %} {% load crispy_forms_tags %}
{% block actions %}<!-- Remvoer botões 'Editar' e 'Excluir' -->{% endblock %}
{% block detail_content %}
{% crispy form %}
{% endblock %}
{% block extra_js %} {% block extra_js %}
<script type="text/javascript"> <script type="text/javascript">
@ -19,6 +12,7 @@
$("#id_tipo_materia").attr("disabled", "disabled"); $("#id_tipo_materia").attr("disabled", "disabled");
$("#id_numero_materia").attr("disabled", "disabled"); $("#id_numero_materia").attr("disabled", "disabled");
$("#id_ano_materia").attr("disabled", "disabled"); $("#id_ano_materia").attr("disabled", "disabled");
$("#id_data_envio").attr("disabled", "disabled");
} }
function enable_fields() { function enable_fields() {

20
templates/materia/proposicao_list.html → templates/materia/proposicao/proposicao_list.html

@ -13,20 +13,22 @@
{% endblock %} {% endblock %}
{% block detail_content %} {% block detail_content %}
<table width="100%"> <table class="table table-striped table-bordered">
<tr> <thead class="thead-default">
<th>Enviada em</th> <tr>
<th>Tipo</th> <th>Enviada em</th>
<th>Descrição</th> <th>Tipo</th>
<th>Incorporada?</th> <th>Descrição</th>
</tr> <th>Incorporada?</th>
</tr>
</thead>
{% for proposicao in page_obj %} {% for proposicao in page_obj %}
<tr> <tr>
{% if proposicao.data_envio %} {% if proposicao.data_envio %}
<td><a href=""><b>{{ proposicao.data_envio|date:'d/m/Y H:i:s' }}</b></a></td> <td><a href="{% url 'editar_proposicao' proposicao.id %}"><b>{{ proposicao.data_envio|date:'d/m/Y H:i' }}</b></a></td>
{% else %} {% else %}
<td><a href=""><b>Em elaboração...</b></a></td> <td><a href="{% url 'editar_proposicao' proposicao.id %}"><b>Em elaboração...</b></a></td>
{% endif %} {% endif %}
<td>{{ proposicao.tipo }}</td> <td>{{ proposicao.tipo }}</td>
<td>{{ proposicao.descricao|safe }}</td> <td>{{ proposicao.descricao|safe }}</td>
Loading…
Cancel
Save