Browse Source

Refatora tela de autorias

pull/250/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
987234c08d
  1. 48
      materia/forms.py
  2. 109
      materia/views.py
  3. 61
      templates/materia/autoria.html
  4. 64
      templates/materia/autoria_edit.html

48
materia/forms.py

@ -12,7 +12,7 @@ from crispy_layout_mixin import form_actions
from norma.models import LegislacaoCitada, TipoNormaJuridica from norma.models import LegislacaoCitada, TipoNormaJuridica
from parlamentares.models import Parlamentar, Partido from parlamentares.models import Parlamentar, Partido
from .models import (AcompanhamentoMateria, Anexada, Autor, DespachoInicial, from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria, DespachoInicial,
DocumentoAcessorio, MateriaLegislativa, Numeracao, Origem, DocumentoAcessorio, MateriaLegislativa, Numeracao, Origem,
Proposicao, Relatoria, StatusTramitacao, TipoAutor, Proposicao, Relatoria, StatusTramitacao, TipoAutor,
TipoDocumento, TipoMateriaLegislativa, Tramitacao, TipoDocumento, TipoMateriaLegislativa, Tramitacao,
@ -615,15 +615,43 @@ class FormularioCadastroForm(ModelForm):
super(FormularioCadastroForm, self).__init__(*args, **kwargs) super(FormularioCadastroForm, self).__init__(*args, **kwargs)
class AutoriaForm(forms.Form): class AutoriaForm(ModelForm):
tipo_autor = forms.CharField() autor = forms.ModelChoiceField(
nome_autor = forms.CharField() label=_('Autor'),
primeiro_autor = forms.CharField() required=True,
partido_autor = forms.ModelChoiceField( queryset=Autor.objects.all().order_by('tipo', 'nome'),
label=_('Partido (Autor)'), )
required=False, primeiro_autor = forms.ChoiceField(
queryset=Partido.objects.all(), label=_('Primeiro Autor'),
empty_label='Selecione') required=True,
choices=[(True, _('Sim')), (False, _('Não'))],
)
class Meta:
model = Autoria
fields = ['autor',
'primeiro_autor',
'partido']
def __init__(self, excluir=False, *args, **kwargs):
row1 = crispy_layout_mixin.to_row(
[('autor', 4), ('primeiro_autor', 4), ('partido', 4)])
more = []
if excluir:
more = [Submit('Excluir', 'Excluir')]
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
_('Adicionar Autoria'),
row1,
form_actions(more=more)
)
)
super(AutoriaForm, self).__init__(
*args, **kwargs)
class MateriaLegislativaPesquisaForm(forms.Form): class MateriaLegislativaPesquisaForm(forms.Form):

109
materia/views.py

@ -1125,8 +1125,9 @@ class TramitacaoEditView(FormMixin, GenericView):
return reverse('tramitacao_materia', kwargs={'pk': pk}) return reverse('tramitacao_materia', kwargs={'pk': pk})
class AutoriaView(GenericView): class AutoriaView(CreateView):
template_name = "materia/autoria.html" template_name = "materia/autoria.html"
form_class = AutoriaForm
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk']) materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
@ -1135,139 +1136,89 @@ class AutoriaView(GenericView):
return self.render_to_response( return self.render_to_response(
{'object': materia, {'object': materia,
'form': form, 'form': AutoriaForm,
'autorias': autorias, 'autorias': autorias})
'partido_autor': Partido.objects.all(),
'tipo_autores': TipoAutor.objects.all(),
'autores': Autor.objects.all(),
'tipo_autor_id': TipoAutor.objects.first().id})
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk']) materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
autorias = Autoria.objects.filter(materia=materia) autorias = Autoria.objects.filter(materia=materia)
form = AutoriaForm(request.POST) form = self.get_form()
if 'salvar' in request.POST: if 'salvar' in request.POST:
if int(form.data['primeiro_autor']) == 1: if 'partido' in form.data:
primeiro = True
else:
primeiro = False
autor = Autor.objects.get(
id=int(form.data['nome_autor']))
if 'partido_autor' in form.data:
filiacao_autor = Partido.objects.get( filiacao_autor = Partido.objects.get(
sigla=form.data['partido_autor']) id=form.data['partido'])
try: try:
autoria = Autoria.objects.get( autoria = Autoria.objects.get(
autor=autor, autor=form.data['autor'],
materia=materia materia=materia
) )
except ObjectDoesNotExist: except ObjectDoesNotExist:
autoria = Autoria() autoria = Autoria()
autoria.autor = autor autoria.autor = Autor.objects.get(id=form.data['autor'])
autoria.materia = materia autoria.materia = materia
if 'partido_autor' in form.data: primeiro = form.data['primeiro_autor']
if 'partido' in form.data:
autoria.partido = filiacao_autor 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(
{'object': materia, {'object': materia,
'form': form, 'form': form,
'autorias': autorias, 'autorias': autorias})
'partido_autor': Partido.objects.all(),
'tipo_autores': TipoAutor.objects.all(),
'autores': Autor.objects.all(),
'tipo_autor_id': int(form.data['tipo_autor'])})
else: else:
msg = _('Essa autoria já foi adicionada!') msg = _('Essa autoria já foi adicionada!')
messages.add_message(request, messages.INFO, msg) messages.add_message(request, messages.INFO, msg)
return self.render_to_response( return self.render_to_response(
{'object': materia, {'object': materia,
'form': form, 'form': form,
'autorias': autorias, '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(
{'object': materia, {'object': materia,
'form': form, 'form': form,
'autorias': autorias, 'autorias': autorias})
'partido_autor': Partido.objects.all(),
'tipo_autores': TipoAutor.objects.all(),
'autores': Autor.objects.all(),
'tipo_autor_id': int(form.data['tipo_autor'])})
def get_success_url(self): def get_success_url(self):
pk = self.kwargs['pk'] pk = self.kwargs['pk']
return reverse('autoria', kwargs={'pk': pk}) return reverse('autoria', kwargs={'pk': pk})
class AutoriaEditView(GenericView, FormMixin): class AutoriaEditView(CreateView):
template_name = "materia/autoria_edit.html" template_name = "materia/autoria_edit.html"
form_class = AutoriaForm
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk']) materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
autorias = Autoria.objects.filter(materia=materia) autoria = Autoria.objects.get(id=self.kwargs['id'])
autor = Autor.objects.get(id=self.kwargs['id']) form = AutoriaForm(instance=autoria, excluir=True)
form = AutoriaForm()
return self.render_to_response( return self.render_to_response(
{'object': materia, {'object': materia,
'form': form, 'form': form})
'autorias': autorias,
'tipo_autores': TipoAutor.objects.all(),
'partido': Partido.objects.all(),
'autores': Autor.objects.all(),
'tipo_autor_id': autor.tipo.id,
'autor_id': autor.id})
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk']) materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
autorias = Autoria.objects.filter(materia=materia) form = self.get_form()
form = AutoriaForm(request.POST)
if form.is_valid(): if form.is_valid():
if int(form.data['primeiro_autor']) == 1: autoria = Autoria.objects.get(id=self.kwargs['id'])
primeiro = True
else:
primeiro = False
autor = Autor.objects.get(
id=int(form.data['nome_autor']))
if 'partido_autor' in form.data:
filiacao_autor = Partido.objects.get(
sigla=form.data['partido'])
autoria = Autoria.objects.get(materia=materia, autor__id=autor.id)
autoria.autor = autor
if 'partido_autor' in form.data:
autoria.partido = filiacao_autor
autoria.materia = materia
autoria.primeiro_autor = primeiro
if 'salvar' in request.POST: if 'salvar' in request.POST:
autoria.autor = Autor.objects.get(id=form.data['autor'])
autoria.primeiro_autor = form.data['primeiro_autor']
if 'partido' in form.data:
autoria.partido = Partido.objects.get(
id=form.data['partido'])
autoria.materia = materia
autoria.save() autoria.save()
elif 'excluir' in request.POST: elif 'Excluir' in request.POST:
autoria.delete() autoria.delete()
return redirect(self.get_success_url())
return self.form_valid(form)
else: else:
return self.render_to_response( return self.render_to_response(
{'object': materia, {'object': materia,
'form': form, 'form': form})
'autorias': autorias,
'partido': Partido.objects.all(),
'tipo_autores': TipoAutor.objects.all(),
'autores': Autor.objects.all(),
'tipo_autor_id': int(form.data['tipo_autor'])})
def get_success_url(self): def get_success_url(self):
pk = self.kwargs['pk'] pk = self.kwargs['pk']

61
templates/materia/autoria.html

@ -20,7 +20,7 @@
</thead> </thead>
{% for a in autorias %} {% for a in autorias %}
<tr> <tr>
<td><a href="{% url 'autoria_edit' object.id a.autor.id %}">{{a.autor}}</a></td> <td><a href="{% url 'autoria_edit' object.id a.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> <td>{{a.partido.sigla|default_if_none:"Não Informado"}}</td>
@ -28,63 +28,6 @@
{% endfor %} {% endfor %}
</table> </table>
</fieldset> </fieldset>
{% crispy form %}
<fieldset class="form-group">
<legend>Adicionar Autoria</legend>
<div class="row">
<div class="col-md-3">Tipo do Autor</div>
<div class="col-md-3">Nome Autor</div>
<div class="col-md-3">Primeiro Autor</div>
<div class="col-md-3">Partido Autor</div>
</div>
<form method="POST">
{% csrf_token %}
<div class="row">
<div class="col-md-3">
<select name="tipo_autor" onChange="form.submit();" class="form-control">
{% for tipo in tipo_autores %}
<option value="{{tipo.id}}" {% if tipo.id == tipo_autor_id %} selected {% endif %}>
{{tipo.descricao}}
</option>
{% endfor %}
</select>
</div>
<div class="col-md-3">
<select name="nome_autor" class="form-control">
{% for a in autores %}
{% if a.tipo_id == tipo_autor_id %}
<option value="{{a.id}}">
{{a}}
</option>
{% endif %}
{% endfor %}
</select>
</div>
<div class="col-md-3">
<select name="primeiro_autor" class="form-control">
<option value="1">Sim</option>
<option value="0" selected>Não</option>
</select>
</div>
<div class="col-md-3">
<select name="partido_autor" class="form-control">
{% for p in partido_autor %}
{% if tipo_autor_id == 1 %}
<option value="{{p.sigla}}">
{{p}}
</option>
{% endif %}
{% endfor %}
</select>
</div>
</div>
<br />
<input type="submit" name="salvar" value="Salvar" class="btn btn-primary">
</form>
</fieldset>
</fieldset> </fieldset>
{% endblock %} {% endblock %}

64
templates/materia/autoria_edit.html

@ -3,67 +3,5 @@
{% load crispy_forms_tags %} {% load crispy_forms_tags %}
{% block actions %} {% endblock %} {% block actions %} {% endblock %}
{% block detail_content %} {% block detail_content %}
<fieldset> {% crispy form %}
<legend>Matéria Legislativa</legend>
{% include "materia/resumo_detail_materia.html" %}
<fieldset class="form-group">
<legend>Editar Autoria</legend>
<div class="row">
<div class="col-md-3">Tipo do Autor</div>
<div class="col-md-3">Nome Autor</div>
<div class="col-md-3">Primeiro Autor</div>
<div class="col-md-3">Partido</div>
</div>
<form method="POST">
{% csrf_token %}
<div class="row">
<div class="col-md-3">
<select name="tipo_autor" onChange="form.submit();" class="form-control">
{% for tipo in tipo_autores %}
<option value="{{tipo.id}}" {% if tipo.id == tipo_autor_id %} selected {% endif %}>
{{tipo.descricao}}
</option>
{% endfor %}
</select>
</div>
<div class="col-md-3">
<select name="nome_autor" class="form-control">
{% for a in autores %}
{% if a.tipo_id == tipo_autor_id %}
<option value="{{a.id}}" {% if a.id == autor_id%} selected {% endif %}>
{{a}}
</option>
{% endif %}
{% endfor %}
</select>
</div>
<div class="col-md-3">
<select name="primeiro_autor" class="form-control">
<option value="1">Sim</option>
<option value="0" selected>Não</option>
</select>
</div>
<div class="col-md-3">
<select name="partido" class="form-control">
{% for p in partido %}
{% if tipo_autor_id == 1 %}
<option value="{{p.sigla}}">
{{p}}
</option>
{% endif %}
{% endfor %}
</select>
</div>
</div>
<br />
<input type="submit" name="salvar" value="Salvar" class="btn btn-primary">
<input type="submit" value="Excluir" id="excluir" name="excluir" class="btn btn-danger" />
</form>
</fieldset>
</fieldset>
{% endblock %} {% endblock %}

Loading…
Cancel
Save