Browse Source

Add tramitacao in MateriaLegislativa

pull/11/merge
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
4d5bb7db83
  1. 8
      materia/models.py
  2. 15
      materia/urls.py
  3. 106
      materia/views.py
  4. 2
      templates/materia/materia_detail.html
  5. 51
      templates/materia/tramitacao.html

8
materia/models.py

@ -487,10 +487,8 @@ class StatusTramitacao(models.Model):
verbose_name_plural = _('Status de Tramitação')
def __str__(self):
return _('%(sigla)s - %(descricao)s - %(indicador)s') % {
'sigla': self.sigla,
'descricao': self.descricao,
'indicador': self.indicador}
return _('%(descricao)s') % {
'descricao': self.descricao}
class UnidadeTramitacao(models.Model):
@ -506,7 +504,7 @@ class UnidadeTramitacao(models.Model):
verbose_name_plural = _('Unidades de Tramitação')
def __str__(self):
return _('%(orgao)s %(comissao)s') % {
return _('%(orgao)s - %(comissao)s') % {
'orgao': self.orgao, 'comissao': self.comissao
}

15
materia/urls.py

@ -1,17 +1,16 @@
from django.conf.urls import include, url
from materia.views import (DespachoInicialEditView, DespachoInicialView,
DocumentoAcessorioEditView, DocumentoAcessorioView,
FormularioCadastroView, FormularioSimplificadoView,
LegislacaoCitadaEditView, LegislacaoCitadaView,
MateriaAnexadaEditView, MateriaAnexadaView,
NumeracaoEditView, NumeracaoView, RelatoriaView,
autor_crud, materia_legislativa_crud, orgao_crud,
origem_crud, regime_tramitacao_crud,
status_tramitacao_crud, tipo_autor_crud,
tipo_documento_crud, tipo_fim_relatoria_crud,
tipo_materia_crud, tipo_proposicao_crud,
unidade_tramitacao_crud)
TramitacaoView, autor_crud,
materia_legislativa_crud, orgao_crud, origem_crud,
regime_tramitacao_crud, status_tramitacao_crud,
tipo_autor_crud, tipo_documento_crud,
tipo_fim_relatoria_crud, tipo_materia_crud,
tipo_proposicao_crud, unidade_tramitacao_crud)
urlpatterns = [
url(r'^sistema/proposicoes/tipo/', include(tipo_proposicao_crud.urls)),
@ -60,4 +59,6 @@ urlpatterns = [
DocumentoAcessorioEditView.as_view(), name='documento_acessorio_edit'),
url(r'^materia/(?P<pk>\d+)/relatoria$',
RelatoriaView.as_view(), name='relatoria'),
url(r'^materia/(?P<pk>\d+)/tramitacao$',
TramitacaoView.as_view(), name='tramitacao_materia'),
]

106
materia/views.py

@ -1,7 +1,7 @@
from datetime import date
from crispy_forms.helper import FormHelper
from crispy_forms.layout import ButtonHolder, Fieldset, Layout, Submit
from crispy_forms.layout import ButtonHolder, Fieldset, Layout, Submit, Field
from django import forms
from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse
@ -1194,3 +1194,107 @@ class RelatoriaView(FormMixin, GenericView):
{'materia': materia,
'form': form,
'relatorias': relatorias})
class TramitacaoForm(ModelForm):
data_tramitacao = forms.DateField(label=u'Data Tramitação',
input_formats=['%d/%m/%Y'],
required=False,
widget=forms.DateInput(
format='%d/%m/%Y',
attrs={'class': 'dateinput'}))
data_encaminhamento = forms.DateField(label=u'Data Encaminhamento',
input_formats=['%d/%m/%Y'],
required=False,
widget=forms.DateInput(
format='%d/%m/%Y',
attrs={'class': 'dateinput'}))
data_fim_prazo = forms.DateField(label=u'Data Fim Prazo',
input_formats=['%d/%m/%Y'],
required=False,
widget=forms.DateInput(
format='%d/%m/%Y',
attrs={'class': 'dateinput'}))
class Meta:
model = Tramitacao
fields = ['data_tramitacao',
'unidade_tramitacao_local',
'status',
'turno',
'urgente',
'unidade_tramitacao_destino',
'data_encaminhamento',
'data_fim_prazo',
'ultima',
'texto',
]
def __init__(self, *args, **kwargs):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset('Incluir Tramitação',
'data_tramitacao',
'unidade_tramitacao_local',
'status',
'turno',
'urgente',
'unidade_tramitacao_destino',
'data_encaminhamento',
'data_fim_prazo',
'ultima',
'texto'),
ButtonHolder(
Submit('submit', 'Salvar',
css_class='button primary')
)
)
super(TramitacaoForm, self).__init__(
*args, **kwargs)
class TramitacaoView(FormMixin, GenericView):
template_name = "materia/tramitacao.html"
def get(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
tramitacoes = Tramitacao.objects.filter(
materia_id=kwargs['pk']).order_by('-data_tramitacao')
form = TramitacaoForm
return self.render_to_response(
{'materia': materia,
'form': form,
'tramitacoes': tramitacoes})
def post(self, request, *args, **kwargs):
form = TramitacaoForm(request.POST)
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
tramitacoes_list = Tramitacao.objects.filter(
materia_id=kwargs['pk'])
if form.is_valid():
ultima_tramitacao = Tramitacao.objects.filter(
materia_id=kwargs['pk']).last()
if(ultima_tramitacao.unidade_tramitacao_destino == form.cleaned_data['unidade_tramitacao_local']):
tramitacao = form.save(commit=False)
tramitacao.materia = materia
tramitacao.save()
else:
return self.render_to_response({'form': form,
'materia': materia,
'tramitacoes': tramitacoes_list,
'error': 'A origem da nova tramitação deve ser igual ao destino da última adicionada!'})
return self.form_valid(form)
else:
return self.render_to_response({'form': form,
'materia': materia,
'tramitacoes': tramitacoes_list})
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('tramtiacao_materia', kwargs={'pk': pk})

2
templates/materia/materia_detail.html

@ -10,7 +10,7 @@
<dd><a href="{% url 'documento_acessorio' materia.id %}" 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>
<dd><a href="" class="button secondary">{% trans 'Tramitação' %}</a></dd>
<dd><a href="{% url 'tramitacao_materia' materia.id %}" class="button secondary">{% trans 'Tramitação' %}</a></dd>
<dd><a href="{% url 'relatoria' materia.id %}" class="button secondary">{% trans 'Relatoria' %}</a></dd>
</dl>
{% endblock sections_nav %}

51
templates/materia/tramitacao.html

@ -0,0 +1,51 @@
{% 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>Tramitações</legend>
<table>
<tr>
<th>Data Ação</th>
<th>Origem</th>
<th>Destino</th>
<th>Status</th>
</tr>
{% for t in tramitacoes %}
<tr>
<td><a href="">{{t.data_tramitacao|date:'d/m/Y'}}</a></td>
<td>{{t.unidade_tramitacao_local}}</td>
<td>{{t.unidade_tramitacao_destino}}</td>
<td>{{t.status.descricao}}</td>
</tr>
{% endfor %}
</table>
</fieldset>
{% if error %} <h5 align="center"><font color="#FF0000">{{ error }}</font></h5> {% endif %}
{% 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 %}
Loading…
Cancel
Save