Browse Source

Add DocumentoAcessorio in Materia

pull/11/merge
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
a9caddd72e
  1. 6
      materia/urls.py
  2. 135
      materia/views.py
  3. 50
      templates/materia/documento_acessorio.html
  4. 60
      templates/materia/documento_acessorio_edit.html
  5. 2
      templates/materia/materia_detail.html

6
materia/urls.py

@ -1,6 +1,6 @@
from django.conf.urls import include, url
from materia.views import (DespachoInicialEditView, DespachoInicialView,
DocumentoAcessorioEditView, DocumentoAcessorioView,
FormularioCadastroView, FormularioSimplificadoView,
LegislacaoCitadaEditView, LegislacaoCitadaView,
MateriaAnexadaEditView, MateriaAnexadaView,
@ -52,4 +52,8 @@ urlpatterns = [
NumeracaoView.as_view(), name='numeracao'),
url(r'^materia/(?P<pk>\d+)/numeracao/(?P<id>\d+)/edit',
NumeracaoEditView.as_view(), name='numeracao_edit'),
url(r'^materia/(?P<pk>\d+)/documento-acessorio$',
DocumentoAcessorioView.as_view(), name='documento_acessorio'),
url(r'^materia/(?P<pk>\d+)/documento-acessorio/(?P<id>\d+)/edit',
DocumentoAcessorioEditView.as_view(), name='documento_acessorio_edit'),
]

135
materia/views.py

@ -443,6 +443,12 @@ def get_tipos_materia():
for t in TipoMateriaLegislativa.objects.all()]
def get_tipos_documento():
return [('', 'Selecione')] \
+ [(t.id, t.descricao)
for t in TipoDocumento.objects.all()]
class MateriaAnexadaForm(forms.Form):
tipo = forms.ChoiceField(required=True,
@ -1045,3 +1051,132 @@ class NumeracaoEditView(FormMixin, GenericView):
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('numeracao', kwargs={'pk': pk})
class DocumentoAcessorioForm(forms.Form):
tipo = forms.ChoiceField(required=True,
label='Tipo',
choices=get_tipos_documento(),
widget=forms.Select(
attrs={'class': 'selector'}))
data = forms.DateField(label='Data',
required=False,
input_formats=['%d/%m/%Y'],
widget=forms.TextInput(
attrs={'class': 'dateinput'}))
nome = forms.CharField(
label='Nome', required=True)
autor = forms.CharField(
label='Autor', required=True)
ementa = forms.CharField(
label='Ementa', required=True)
def __init__(self, *args, **kwargs):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Incluir Documento Acessório',
'tipo',
'data',
'nome',
'autor',
'ementa',
ButtonHolder(
Submit('submit', 'Salvar',
css_class='button primary')
)
)
)
super(DocumentoAcessorioForm, self).__init__(*args, **kwargs)
class DocumentoAcessorioView(FormMixin, GenericView):
template_name = "materia/documento_acessorio.html"
def get(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
docs = DocumentoAcessorio.objects.filter(materia_id=kwargs['pk'])
form = DocumentoAcessorioForm()
return self.render_to_response(
{'materia': materia,
'form': form,
'docs': docs})
def post(self, request, *args, **kwargs):
form = DocumentoAcessorioForm(request.POST)
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
docs_list = DocumentoAcessorio.objects.filter(
materia_id=kwargs['pk'])
if form.is_valid():
documento_acessorio = DocumentoAcessorio()
tipo = TipoDocumento.objects.get(
id=form.cleaned_data['tipo'])
documento_acessorio.materia = materia
documento_acessorio.tipo = tipo
documento_acessorio.data = form.cleaned_data['data']
documento_acessorio.nome = form.cleaned_data['nome']
documento_acessorio.autor = form.cleaned_data['autor']
documento_acessorio.ementa = form.cleaned_data['ementa']
documento_acessorio.save()
return self.form_valid(form)
else:
return self.render_to_response({'form': form,
'materia': materia,
'docs': docs_list})
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('documento_acessorio', kwargs={'pk': pk})
class DocumentoAcessorioEditView(FormMixin, GenericView):
template_name = "materia/documento_acessorio_edit.html"
def get(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
documento = DocumentoAcessorio.objects.get(id=kwargs['id'])
form = DocumentoAcessorioForm()
return self.render_to_response(
{'materia': materia,
'form': form,
'doc': documento,
'tipos': TipoDocumento.objects.all()})
def post(self, request, *args, **kwargs):
form = DocumentoAcessorioForm(request.POST)
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
documento = DocumentoAcessorio.objects.get(id=kwargs['id'])
if form.is_valid():
if 'excluir' in request.POST:
documento.delete()
elif 'salvar' in request.POST:
tipo = TipoDocumento.objects.get(
id=form.cleaned_data['tipo'])
documento.materia = materia
documento.tipo = tipo
documento.data = form.cleaned_data['data']
documento.nome = form.cleaned_data['nome']
documento.autor = form.cleaned_data['autor']
documento.ementa = form.cleaned_data['ementa']
documento.save()
return self.form_valid(form)
else:
return self.render_to_response({'form': form,
'materia': materia,
'doc': documento})
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('documento_acessorio', kwargs={'pk': pk})

50
templates/materia/documento_acessorio.html

@ -0,0 +1,50 @@
{% extends "materia/materia_detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block detail_content %}
<fieldset>
<legend>Matéria Legislativa</legend>
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3">
<li>Tipo: <b>{{materia.tipo.sigla}}</b></li>
<li>Número: <b>{{materia.numero}}</b></li>
<li>Ano: <b>{{materia.ano}}</b></li>
</ul>
Ementa: <b>{{materia.ementa}}</b>
<fieldset>
<legend>Documentos Acessório</legend>
<table>
<tr>
<th>Nome</th>
<th>Tipo</th>
<th>Data</th>
<th>Autor</th>
</tr>
{% for d in docs %}
<tr>
<td><a href="{% url 'documento_acessorio_edit' materia.id d.id %}">{{d.nome}}</a></td>
<td>{{d.tipo.descricao}}</td>
<td>{{d.data|date:'d/m/Y'}}</td>
<td>{{d.autor}}</td>
</tr>
{% endfor %}
</table>
</fieldset>
{% crispy form %}
</fieldset>
{% endblock %}
{% block foot_js %}
<script type="text/javascript">
$(function () {
$('.dateinput').fdatepicker({
// TODO localize
format: 'dd/mm/yyyy',
language: 'pt',
endDate: '31/12/2100',
todayBtn: true
});
});
</script>
{% endblock %}

60
templates/materia/documento_acessorio_edit.html

@ -0,0 +1,60 @@
{% extends "materia/materia_detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block detail_content %}
<fieldset>
<legend>Matéria Legislativa</legend>
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3">
<li>Tipo: <b>{{materia.tipo.sigla}}</b></li>
<li>Número: <b>{{materia.numero}}</b></li>
<li>Ano: <b>{{materia.ano}}</b></li>
</ul>
Ementa: <b>{{materia.ementa}}</b>
<fieldset>
<legend>Editar Documento Acessório</legend>
<form method="POST">
{% csrf_token %}
Tipo*
<select name="tipo">
{% for t in tipos %}
<option value="{{t.id}}" {% if t.id == doc.tipo.id %} selected {% endif %}>
{{t.descricao}}
</option>
{% endfor %}
</select>
Data
<input type="text" name="data" class="dateinput" value="{{doc.data|date:'d/m/Y'}}" />
Nome*
<input type="text" name="nome" value="{{doc.nome}}" />
Autor*
<input type="text" name="autor" value="{{doc.autor}}" />
Ementa*
<input type="text" name="ementa" value="{{doc.ementa}}" />
<input type="submit" value="Salvar" id="salvar" name="salvar" class="primary button" />
<input type="submit" value="Excluir" id="excluir" name="excluir" class="primary button" />
</form>
</fieldset>
</fieldset>
{% endblock %}
{% block foot_js %}
<script type="text/javascript">
$(function () {
$('.dateinput').fdatepicker({
// TODO localize
format: 'dd/mm/yyyy',
language: 'pt',
endDate: '31/12/2100',
todayBtn: true
});
});
</script>
{% endblock %}

2
templates/materia/materia_detail.html

@ -6,7 +6,7 @@
<dd><a href="" class="button secondary">{% trans 'Início' %}</a></dd>
<dd><a href="{% url 'materia_anexada' materia.id %}" class="button secondary">{% trans 'Anexada' %}</a></dd>
<dd><a href="" class="button secondary">{% trans 'Autoria' %}</a></dd>
<dd><a href="{% url 'materia_anexada' materia.id %}" class="button secondary">{% trans 'Despacho Inicial' %}</a></dd>
<dd><a href="{% url 'despacho_inicial' materia.id %}" class="button secondary">{% trans 'Despacho Inicial' %}</a></dd>
<dd><a href="" class="button secondary">{% trans 'Documento Acessório' %}</a></dd>
<dd><a href="{% url 'legislacao_citada' materia.id %}" class="button secondary">{% trans 'Legislação Citada' %}</a></dd>
<dd><a href="{% url 'numeracao' materia.id %}" class="button secondary">{% trans 'Numeração' %}</a></dd>

Loading…
Cancel
Save