Browse Source

Refatora matéria anexada

pull/249/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
31904e62f4
  1. 34
      materia/forms.py
  2. 68
      materia/views.py
  3. 46
      templates/materia/materia_anexada_edit.html

34
materia/forms.py

@ -1,7 +1,7 @@
from datetime import date
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Column, Fieldset, Layout
from crispy_forms.layout import Column, Fieldset, Layout, Submit
from django import forms
from django.forms import ModelForm
from django.utils.safestring import mark_safe
@ -457,38 +457,28 @@ class MateriaAnexadaForm(ModelForm):
ano = forms.CharField(label='Ano', required=True)
data_anexacao = forms.DateField(label=_('Data Anexação'),
required=True,
input_formats=['%d/%m/%Y'],
widget=forms.TextInput(
attrs={'class': 'dateinput'}))
data_desanexacao = forms.DateField(label=_('Data Desanexação'),
required=False,
input_formats=['%d/%m/%Y'],
widget=forms.TextInput(
attrs={'class': 'dateinput'}))
class Meta:
model = Anexada
fields = ['tipo', 'data_anexacao', 'data_desanexacao']
fields = ['tipo', 'numero', 'ano',
'data_anexacao', 'data_desanexacao']
def __init__(self, *args, **kwargs):
def __init__(self, excluir=False, *args, **kwargs):
row1 = crispy_layout_mixin.to_row(
[('tipo', 4),
('numero', 4),
('ano', 4)])
[('tipo', 4), ('numero', 4), ('ano', 4)])
row2 = crispy_layout_mixin.to_row(
[('data_anexacao', 6),
('data_desanexacao', 6)])
[('data_anexacao', 6), ('data_desanexacao', 6)])
more = []
if excluir:
more = [Submit('Excluir', 'Excluir')]
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
_('Anexar Matéria'),
row1, row2,
form_actions()
form_actions(more=more)
)
)
super(MateriaAnexadaForm, self).__init__(
@ -683,7 +673,7 @@ class MateriaLegislativaPesquisaForm(forms.Form):
label='Ordenação',
choices=ordenacao_materias(),
widget=forms.Select(
attrs={'class': 'selector'}))
attrs={'class': 'selector'}))
localizacao = forms.ModelChoiceField(
label=_('Localização Atual'),

68
materia/views.py

@ -3,6 +3,7 @@ from random import choice
from re import sub
from string import ascii_letters, digits
from braces.views import FormValidMessageMixin
from django.contrib import messages
from django.core.exceptions import ObjectDoesNotExist
from django.core.mail import send_mail
@ -70,9 +71,10 @@ class FormularioCadastroView(CreateView):
success_url = reverse_lazy('formulario_cadastro')
class MateriaAnexadaView(FormMixin, GenericView):
class MateriaAnexadaView(FormMixin, GenericView, FormValidMessageMixin):
template_name = "materia/materia_anexada.html"
form_class = MateriaAnexadaForm
form_valid_message = _('Matéria anexada com sucesso!')
def get(self, request, *args, **kwargs):
form = MateriaAnexadaForm()
@ -85,8 +87,21 @@ class MateriaAnexadaView(FormMixin, GenericView):
'anexadas': anexadas,
'form': form})
def form_invalid(self,
form,
request,
mat_principal,
anexadas,
msg='Erro ineseperado.'):
messages.add_message(request, messages.ERROR, msg)
return self.render_to_response(
{'form': form,
'object': mat_principal,
'anexadas': anexadas})
def post(self, request, *args, **kwargs):
form = MateriaAnexadaForm(request.POST)
form = self.get_form()
anexadas = Anexada.objects.filter(
materia_principal_id=kwargs['pk'])
mat_principal = MateriaLegislativa.objects.get(
@ -106,14 +121,10 @@ class MateriaAnexadaView(FormMixin, GenericView):
numero=numero, ano=ano, tipo=tipo)
if mat_principal.tipo == mat_anexada.tipo:
msg = _('A matéria a ser anexada não pode ser do mesmo'
' tipo da matéria principal.')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'form': form,
'object': mat_principal,
'anexadas': anexadas})
self.form_invalid(
form, request, mat_principal, anexadas, msg)
anexada = Anexada()
anexada.materia_principal = mat_principal
@ -124,16 +135,10 @@ class MateriaAnexadaView(FormMixin, GenericView):
anexada.data_desanexacao = data_desanexacao
anexada.save()
except ObjectDoesNotExist:
msg = _('A matéria a ser anexada não existe no cadastro'
' de matérias legislativas.')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'form': form,
'object': mat_principal,
'anexadas': anexadas})
self.form_invalid(form, request, mat_principal, anexadas, msg)
return self.form_valid(form)
else:
return self.render_to_response(
@ -150,6 +155,15 @@ class MateriaAnexadaEditView(FormMixin, GenericView):
template_name = "materia/materia_anexada_edit.html"
form_class = MateriaAnexadaForm
def form_invalid(self,
form,
request,
mat_principal,
msg='Erro ineseperado.'):
messages.add_message(request, messages.ERROR, msg)
return self.render_to_response(
{'form': form, 'object': mat_principal})
def get(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
anexada = Anexada.objects.get(id=kwargs['id'])
@ -161,23 +175,20 @@ class MateriaAnexadaEditView(FormMixin, GenericView):
data['data_anexacao'] = anexada.data_anexacao
data['data_desanexacao'] = anexada.data_desanexacao
form = MateriaAnexadaForm(initial=data)
form = MateriaAnexadaForm(initial=data, excluir=True)
return self.render_to_response(
{'object': materia,
'form': form,
'data': data,
'get_tipos_materia': TipoMateriaLegislativa.objects.all()})
'form': form})
def post(self, request, *args, **kwargs):
form = self.get_form()
form = MateriaAnexadaForm(request.POST)
anexada = Anexada.objects.get(id=kwargs['id'])
mat_principal = MateriaLegislativa.objects.get(
id=kwargs['pk'])
if form.is_valid():
if 'excluir' in request.POST:
if 'Excluir' in request.POST:
anexada.delete()
return self.form_valid(form)
elif 'salvar' in request.POST:
@ -195,14 +206,9 @@ class MateriaAnexadaEditView(FormMixin, GenericView):
numero=numero, ano=ano, tipo=tipo)
if mat_principal.tipo == mat_anexada.tipo:
msg = _('A matéria a ser anexada não pode ser do mesmo \
tipo da matéria principal.')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'form': form,
'materialegislativa': mat_principal
})
self.form_invalid(form, request, mat_principal, msg)
anexada.materia_principal = mat_principal
anexada.materia_anexada = mat_anexada
@ -217,11 +223,7 @@ class MateriaAnexadaEditView(FormMixin, GenericView):
except ObjectDoesNotExist:
msg = _('A matéria a ser anexada não existe no cadastro \
de matérias legislativas.')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'form': form,
'materialegislativa': mat_principal})
self.form_invalid(form, request, mat_principal, msg)
else:
return self.render_to_response(
{'form': form,

46
templates/materia/materia_anexada_edit.html

@ -3,49 +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 Matéria Anexada</legend>
<form method="POST">
{% csrf_token %}
<div class="row">
<div class="col-md-4">
<label>Tipo*</label>
<select id="tipo" name="tipo" class="form-control">
{% for tipo in get_tipos_materia %}
<option value="{{tipo.id}}" {% if tipo.id == data.tipo.id %} selected {% endif %}>{{tipo.sigla}} - {{tipo.descricao}}</option>
{% endfor %}
</select>
</div>
<div class="col-md-4">
<label>Número*</label>
<input type="text" id="numero" name="numero" value="{{data.numero}}" class="form-control"/>
</div>
<div class="col-md-4">
<label>Ano*</label>
<input type="text" id="ano" name="ano" value="{{data.ano}}" class="form-control"/>
</div>
</div>
<div class="row">
<div class="col-md-6">
<label>Data Anexação*</label>
<input type="text" id="data_anexacao" name="data_anexacao" value="{{data.data_anexacao|date:'d/m/Y'}}" class="dateinput form-control"/>
</div>
<div class="col-md-6">
<label>Data Desanexação</label>
<input type="text" id="data_desanexacao" name="data_desanexacao" value="{{data.data_desanexacao|date:'d/m/Y'}}" class="dateinput form-control"/>
</div>
</div>
<input type="submit" value="Salvar" id="salvar" name="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