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 parlamentares.models import Parlamentar, Partido
from .models import (AcompanhamentoMateria, Anexada, Autor, DespachoInicial,
from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria, DespachoInicial,
DocumentoAcessorio, MateriaLegislativa, Numeracao, Origem,
Proposicao, Relatoria, StatusTramitacao, TipoAutor,
TipoDocumento, TipoMateriaLegislativa, Tramitacao,
@ -615,15 +615,43 @@ class FormularioCadastroForm(ModelForm):
super(FormularioCadastroForm, self).__init__(*args, **kwargs)
class AutoriaForm(forms.Form):
tipo_autor = forms.CharField()
nome_autor = forms.CharField()
primeiro_autor = forms.CharField()
partido_autor = forms.ModelChoiceField(
label=_('Partido (Autor)'),
required=False,
queryset=Partido.objects.all(),
empty_label='Selecione')
class AutoriaForm(ModelForm):
autor = forms.ModelChoiceField(
label=_('Autor'),
required=True,
queryset=Autor.objects.all().order_by('tipo', 'nome'),
)
primeiro_autor = forms.ChoiceField(
label=_('Primeiro Autor'),
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):

109
materia/views.py

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

61
templates/materia/autoria.html

@ -20,7 +20,7 @@
</thead>
{% for a in autorias %}
<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.primeiro_autor|yesno:"Sim,Não"}}</td>
<td>{{a.partido.sigla|default_if_none:"Não Informado"}}</td>
@ -28,63 +28,6 @@
{% endfor %}
</table>
</fieldset>
<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>
{% crispy form %}
</fieldset>
{% endblock %}

64
templates/materia/autoria_edit.html

@ -3,67 +3,5 @@
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}
{% block detail_content %}
<fieldset>
<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>
{% crispy form %}
{% endblock %}

Loading…
Cancel
Save