Browse Source

Create and make work 'Tipo Autor' and 'Partido Autor' fields in 'Pesquisa de Materia Legislativa'. Improve Autoria and AutoriaEdit. Fix 'Localizacao Atual' field in 'Pesquisa de Materia' results

pull/202/head
Eduardo Calil 9 years ago
parent
commit
eb894e30f9
  1. 20
      materia/migrations/0014_autoria_partido.py
  2. 1
      materia/models.py
  3. 93
      materia/views.py
  4. 23
      templates/materia/autoria.html
  5. 17
      templates/materia/autoria_edit.html
  6. 2
      templates/materia/pesquisa_materia_list.html

20
materia/migrations/0014_autoria_partido.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('parlamentares', '0010_auto_20160107_1850'),
('materia', '0013_remove_tramitacao_ultima'),
]
operations = [
migrations.AddField(
model_name='autoria',
name='partido',
field=models.ForeignKey(null=True, to='parlamentares.Partido', blank=True),
),
]

1
materia/models.py

@ -219,6 +219,7 @@ class Autor(models.Model):
class Autoria(models.Model): class Autoria(models.Model):
partido = models.ForeignKey(Partido, blank=True, null=True)
autor = models.ForeignKey(Autor) autor = models.ForeignKey(Autor)
materia = models.ForeignKey(MateriaLegislativa) materia = models.ForeignKey(MateriaLegislativa)
primeiro_autor = models.BooleanField(verbose_name=_('Primeiro Autor')) primeiro_autor = models.BooleanField(verbose_name=_('Primeiro Autor'))

93
materia/views.py

@ -21,7 +21,7 @@ import sapl
from comissoes.models import Comissao, Composicao from comissoes.models import Comissao, Composicao
from compilacao.views import IntegracaoTaView from compilacao.views import IntegracaoTaView
from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica
from parlamentares.models import Parlamentar from parlamentares.models import Parlamentar, Partido
from sapl.crud import build_crud from sapl.crud import build_crud
from sessao.models import AcompanharMateria from sessao.models import AcompanharMateria
@ -1592,6 +1592,11 @@ class AutoriaForm(forms.Form):
tipo_autor = forms.CharField() tipo_autor = forms.CharField()
nome_autor = forms.CharField() nome_autor = forms.CharField()
primeiro_autor = forms.CharField() primeiro_autor = forms.CharField()
partido_autor = forms.ModelChoiceField(
label='Partido (Autor)',
required=False,
queryset=Partido.objects.all(),
empty_label='Selecione')
class AutoriaView(GenericView): class AutoriaView(GenericView):
@ -1606,6 +1611,7 @@ class AutoriaView(GenericView):
{'materialegislativa': materia, {'materialegislativa': materia,
'form': form, 'form': form,
'autorias': autorias, 'autorias': autorias,
'partido_autor': Partido.objects.all(),
'tipo_autores': TipoAutor.objects.all(), 'tipo_autores': TipoAutor.objects.all(),
'autores': Autor.objects.all(), 'autores': Autor.objects.all(),
'tipo_autor_id': TipoAutor.objects.first().id}) 'tipo_autor_id': TipoAutor.objects.first().id})
@ -1624,23 +1630,29 @@ class AutoriaView(GenericView):
autor = Autor.objects.get( autor = Autor.objects.get(
id=int(form.data['nome_autor'])) id=int(form.data['nome_autor']))
filiacao_autor = Partido.objects.get(
sigla=form.data['partido_autor'])
try: try:
autoria = Autoria.objects.get( autoria = Autoria.objects.get(
autor=autor, autor=autor,
materia=materia materia=materia,
partido=filiacao_autor
) )
except ObjectDoesNotExist: except ObjectDoesNotExist:
autoria = Autoria() autoria = Autoria()
autoria.autor = autor autoria.autor = autor
autoria.materia = materia autoria.materia = materia
autoria.partido = filiacao_autor
autoria.primeiro_autor = primeiro autoria.primeiro_autor = primeiro
autoria.save() autoria.save()
return self.render_to_response( return self.render_to_response(
{'materialegislativa': materia, {'materialegislativa': materia,
'form': form, 'form': form,
'autorias': autorias, 'autorias': autorias,
'partido_autor': Partido.objects.all(),
'tipo_autores': TipoAutor.objects.all(), 'tipo_autores': TipoAutor.objects.all(),
'autores': Autor.objects.all(), 'autores': Autor.objects.all(),
'tipo_autor_id': int(form.data['tipo_autor'])}) 'tipo_autor_id': int(form.data['tipo_autor'])})
@ -1659,6 +1671,7 @@ class AutoriaView(GenericView):
{'materialegislativa': materia, {'materialegislativa': materia,
'form': form, 'form': form,
'autorias': autorias, 'autorias': autorias,
'partido_autor': Partido.objects.all(),
'tipo_autores': TipoAutor.objects.all(), 'tipo_autores': TipoAutor.objects.all(),
'autores': Autor.objects.all(), 'autores': Autor.objects.all(),
'tipo_autor_id': int(form.data['tipo_autor'])}) 'tipo_autor_id': int(form.data['tipo_autor'])})
@ -1668,7 +1681,7 @@ class AutoriaView(GenericView):
return reverse('autoria', kwargs={'pk': pk}) return reverse('autoria', kwargs={'pk': pk})
class AutoriaEditView(GenericView): class AutoriaEditView(GenericView, FormMixin):
template_name = "materia/autoria_edit.html" template_name = "materia/autoria_edit.html"
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
@ -1682,6 +1695,7 @@ class AutoriaEditView(GenericView):
'form': form, 'form': form,
'autorias': autorias, 'autorias': autorias,
'tipo_autores': TipoAutor.objects.all(), 'tipo_autores': TipoAutor.objects.all(),
'partido': Partido.objects.all(),
'autores': Autor.objects.all(), 'autores': Autor.objects.all(),
'tipo_autor_id': autor.tipo.id, 'tipo_autor_id': autor.tipo.id,
'autor_id': autor.id}) 'autor_id': autor.id})
@ -1691,7 +1705,7 @@ class AutoriaEditView(GenericView):
autorias = Autoria.objects.filter(materia=materia) autorias = Autoria.objects.filter(materia=materia)
form = AutoriaForm(request.POST) form = AutoriaForm(request.POST)
if 'salvar' in request.POST: if form.is_valid():
if int(form.data['primeiro_autor']) == 1: if int(form.data['primeiro_autor']) == 1:
primeiro = True primeiro = True
else: else:
@ -1700,41 +1714,26 @@ class AutoriaEditView(GenericView):
autor = Autor.objects.get( autor = Autor.objects.get(
id=int(form.data['nome_autor'])) id=int(form.data['nome_autor']))
try: filiacao_autor = Partido.objects.get(
autoria = Autoria.objects.get( sigla=form.data['partido'])
autor=autor,
materia=materia
)
except ObjectDoesNotExist:
autoria = Autoria() autoria = Autoria.objects.get(materia=materia, autor__id=autor.id)
autoria.autor = autor autoria.autor = autor
autoria.materia = materia autoria.partido = filiacao_autor
autoria.primeiro_autor = primeiro autoria.materia = materia
autoria.primeiro_autor = primeiro
if 'salvar' in request.POST:
autoria.save() autoria.save()
return self.render_to_response( return self.form_valid(form)
{'materialegislativa': materia,
'form': form,
'autorias': autorias,
'tipo_autores': TipoAutor.objects.all(),
'autores': Autor.objects.all(),
'tipo_autor_id': int(form.data['tipo_autor'])})
else:
msg = 'Essa autoria já foi adicionada!'
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'materialegislativa': materia,
'form': form,
'autorias': autorias,
'tipo_autores': TipoAutor.objects.all(),
'autores': Autor.objects.all(),
'tipo_autor_id': int(form.data['tipo_autor'])})
else: else:
return self.render_to_response( return self.render_to_response(
{'materialegislativa': materia, {'materialegislativa': materia,
'form': form, 'form': form,
'autorias': autorias, 'autorias': autorias,
'partido': Partido.objects.all(),
'tipo_autores': TipoAutor.objects.all(), 'tipo_autores': TipoAutor.objects.all(),
'autores': Autor.objects.all(), 'autores': Autor.objects.all(),
'tipo_autor_id': int(form.data['tipo_autor'])}) 'tipo_autor_id': int(form.data['tipo_autor'])})
@ -1939,6 +1938,19 @@ class MateriaLegislativaPesquisaForm(forms.Form):
widget=forms.Select( widget=forms.Select(
attrs={'class': 'selector'})) attrs={'class': 'selector'}))
tipo_autor = forms.ModelChoiceField(
label='Tipo Autor',
required=False,
queryset=TipoAutor.objects.all(),
empty_label='Selecione',
)
partido_autor = forms.ModelChoiceField(
label='Partido (Autor)',
required=False,
queryset=Partido.objects.all(),
empty_label='Selecione')
# TODO: Verificar se esses campos estão corretos # TODO: Verificar se esses campos estão corretos
# assunto? # -> usado 'ementa' em 'assunto' # assunto? # -> usado 'ementa' em 'assunto'
# localizacao atual? # # localizacao atual? #
@ -1960,17 +1972,20 @@ class MateriaLegislativaPesquisaForm(forms.Form):
[('autor', 6), [('autor', 6),
('relator', 6)]) ('relator', 6)])
row5 = sapl.layout.to_row( row5 = sapl.layout.to_row(
[('tipo_autor', 6),
('partido_autor', 6)])
row6 = sapl.layout.to_row(
[('localizacao', 6), [('localizacao', 6),
('situacao', 6)]) ('situacao', 6)])
row6 = sapl.layout.to_row(
[('tramitacao', 12)])
row7 = sapl.layout.to_row( row7 = sapl.layout.to_row(
[('tramitacao', 12)])
row8 = sapl.layout.to_row(
[('assunto', 12)]) [('assunto', 12)])
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
Fieldset('Pesquisa Básica', Fieldset('Pesquisa Básica',
row1, row2, row3, row4, row5, row6, row7), row1, row2, row3, row4, row5, row6, row7, row8),
ButtonHolder( ButtonHolder(
Submit('submit', 'Pesquisar', Submit('submit', 'Pesquisar',
css_class='button primary') css_class='button primary')
@ -2080,6 +2095,12 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView):
if request.POST['situacao']: if request.POST['situacao']:
kwargs['tramitacao__status'] = request.POST['situacao'] kwargs['tramitacao__status'] = request.POST['situacao']
if request.POST['tipo_autor']:
kwargs['autoria__autor__tipo'] = request.POST['tipo_autor']
if request.POST['partido_autor']:
kwargs['autoria__partido'] = request.POST['partido_autor']
request.session['kwargs'] = kwargs request.session['kwargs'] = kwargs
return redirect('pesquisar_materia_list') return redirect('pesquisar_materia_list')
@ -2091,8 +2112,6 @@ class PesquisaMateriaListView(FormMixin, ListView):
paginate_by = 10 paginate_by = 10
def get_queryset(self): def get_queryset(self):
# import ipdb; ipdb.set_trace()
kwargs = self.request.session['kwargs'] kwargs = self.request.session['kwargs']
lista_materias = MateriaLegislativa.objects.filter(**kwargs) lista_materias = MateriaLegislativa.objects.filter(**kwargs)
materias = [] materias = []

23
templates/materia/autoria.html

@ -5,7 +5,7 @@
{% block detail_content %} {% block detail_content %}
<fieldset> <fieldset>
<legend>Matéria Legislativa</legend> <legend>Matéria Legislativa</legend>
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3"> <ul class="small-block-grid-4 medium-block-grid-4 large-block-grid-4">
<li>Tipo: <b>{{materialegislativa.tipo.sigla}}</b></li> <li>Tipo: <b>{{materialegislativa.tipo.sigla}}</b></li>
<li>Número: <b>{{materialegislativa.numero}}</b></li> <li>Número: <b>{{materialegislativa.numero}}</b></li>
<li>Ano: <b>{{materialegislativa.ano}}</b></li> <li>Ano: <b>{{materialegislativa.ano}}</b></li>
@ -19,12 +19,14 @@
<th>Nome Autor</th> <th>Nome Autor</th>
<th>Tipo Autor</th> <th>Tipo Autor</th>
<th>Primeiro Autor</th> <th>Primeiro Autor</th>
<th>Partido Autor</th>
</tr> </tr>
{% for a in autorias %} {% for a in autorias %}
<tr> <tr>
<td><a href="{% url 'autoria_edit' materialegislativa.id a.autor.id %}">{{a.autor}}</a></td> <td><a href="{% url 'autoria_edit' materialegislativa.id a.autor.id %}">{{a.autor}}</a></td>
<td>{{a.autor.tipo.descricao}}</td> <td>{{a.autor.tipo.descricao}}</td>
<td>{{a.primeiro_autor|yesno:"Sim,Não"}}</td> <td>{{a.primeiro_autor|yesno:"Sim,Não"}}</td>
<td>{{a.partido.sigla|default_if_none:"Não Informado"}}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
@ -32,15 +34,16 @@
<fieldset> <fieldset>
<legend>Adicionar Autoria</legend> <legend>Adicionar Autoria</legend>
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3"> <ul class="small-block-grid-4 medium-block-grid-4 large-block-grid-4">
<li>Tipo do Autor</li> <li>Tipo do Autor</li>
<li>Nome Autor</li> <li>Nome Autor</li>
<li>Primeiro Autor</li> <li>Primeiro Autor</li>
<li>Partido Autor</li>
</ul> </ul>
<form method="POST"> <form method="POST">
{% csrf_token %} {% csrf_token %}
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3"> <ul class="small-block-grid-4 medium-block-grid-4 large-block-grid-4">
<li> <li>
<select name="tipo_autor" onChange="form.submit();"> <select name="tipo_autor" onChange="form.submit();">
{% for tipo in tipo_autores %} {% for tipo in tipo_autores %}
@ -63,12 +66,26 @@
</select> </select>
</li> </li>
<li> <li>
<select name="primeiro_autor"> <select name="primeiro_autor">
<option value="1">Sim</option> <option value="1">Sim</option>
<option value="0" selected>Não</option> <option value="0" selected>Não</option>
</select> </select>
</li> </li>
<li>
<select name="partido_autor">
{% for p in partido_autor %}
{% if tipo_autor_id == 1 %}
<option value="{{p.sigla}}">
{{p}}
</option>
{% endif %}
{% endfor %}
</select>
</li>
</ul> </ul>
<input type="submit" name="salvar" value="Salvar" class="button primary"> <input type="submit" name="salvar" value="Salvar" class="button primary">
</form> </form>

17
templates/materia/autoria_edit.html

@ -14,15 +14,16 @@
<fieldset> <fieldset>
<legend>Editar Autoria</legend> <legend>Editar Autoria</legend>
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3"> <ul class="small-block-grid-4 medium-block-grid-4 large-block-grid-4">
<li>Tipo do Autor</li> <li>Tipo do Autor</li>
<li>Nome Autor</li> <li>Nome Autor</li>
<li>Primeiro Autor</li> <li>Primeiro Autor</li>
<li>Partido do Autor</li>
</ul> </ul>
<form method="POST"> <form method="POST">
{% csrf_token %} {% csrf_token %}
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3"> <ul class="small-block-grid-4 medium-block-grid-4 large-block-grid-4">
<li> <li>
<select name="tipo_autor" onChange="form.submit();"> <select name="tipo_autor" onChange="form.submit();">
{% for tipo in tipo_autores %} {% for tipo in tipo_autores %}
@ -51,6 +52,18 @@
<option value="0" selected>Não</option> <option value="0" selected>Não</option>
</select> </select>
</li> </li>
<li>
<select name="partido">
{% for p in partido %}
{% if tipo_autor_id == 1 %}
<option value="{{p.sigla}}">
{{p}}
</option>
{% endif %}
{% endfor %}
</select>
</li>
</ul> </ul>
<input type="submit" name="salvar" value="Salvar" class="button primary"> <input type="submit" name="salvar" value="Salvar" class="button primary">
</form> </form>

2
templates/materia/pesquisa_materia_list.html

@ -11,7 +11,7 @@
<td> <td>
<strong><a href="{% url 'materialegislativa:detail' m.id %}">{{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}}</strong></a></br> <strong><a href="{% url 'materialegislativa:detail' m.id %}">{{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}}</strong></a></br>
{{ m.ementa }}</br> {{ m.ementa }}</br>
<strong>Localização Atual:</strong> {{m.local_origem_externa|default_if_none:"Não Informada"}}</br> <strong>Localização Atual:</strong> {{m.tramitacao_set.last.unidade_tramitacao_destino|default_if_none:"Não Informada"}}</br>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>

Loading…
Cancel
Save