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 django.conf.urls import include, url
from materia.views import (DespachoInicialEditView, DespachoInicialView, from materia.views import (DespachoInicialEditView, DespachoInicialView,
DocumentoAcessorioEditView, DocumentoAcessorioView,
FormularioCadastroView, FormularioSimplificadoView, FormularioCadastroView, FormularioSimplificadoView,
LegislacaoCitadaEditView, LegislacaoCitadaView, LegislacaoCitadaEditView, LegislacaoCitadaView,
MateriaAnexadaEditView, MateriaAnexadaView, MateriaAnexadaEditView, MateriaAnexadaView,
@ -52,4 +52,8 @@ urlpatterns = [
NumeracaoView.as_view(), name='numeracao'), NumeracaoView.as_view(), name='numeracao'),
url(r'^materia/(?P<pk>\d+)/numeracao/(?P<id>\d+)/edit', url(r'^materia/(?P<pk>\d+)/numeracao/(?P<id>\d+)/edit',
NumeracaoEditView.as_view(), name='numeracao_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()] 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): class MateriaAnexadaForm(forms.Form):
tipo = forms.ChoiceField(required=True, tipo = forms.ChoiceField(required=True,
@ -1045,3 +1051,132 @@ class NumeracaoEditView(FormMixin, GenericView):
def get_success_url(self): def get_success_url(self):
pk = self.kwargs['pk'] pk = self.kwargs['pk']
return reverse('numeracao', kwargs={'pk': 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="" 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="{% 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="" 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="" 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 '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> <dd><a href="{% url 'numeracao' materia.id %}" class="button secondary">{% trans 'Numeração' %}</a></dd>

Loading…
Cancel
Save