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') verbose_name_plural = _('Status de Tramitação')
def __str__(self): def __str__(self):
return _('%(sigla)s - %(descricao)s - %(indicador)s') % { return _('%(descricao)s') % {
'sigla': self.sigla, 'descricao': self.descricao}
'descricao': self.descricao,
'indicador': self.indicador}
class UnidadeTramitacao(models.Model): class UnidadeTramitacao(models.Model):
@ -506,7 +504,7 @@ class UnidadeTramitacao(models.Model):
verbose_name_plural = _('Unidades de Tramitação') verbose_name_plural = _('Unidades de Tramitação')
def __str__(self): def __str__(self):
return _('%(orgao)s %(comissao)s') % { return _('%(orgao)s - %(comissao)s') % {
'orgao': self.orgao, 'comissao': self.comissao 'orgao': self.orgao, 'comissao': self.comissao
} }

15
materia/urls.py

@ -1,17 +1,16 @@
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, DocumentoAcessorioEditView, DocumentoAcessorioView,
FormularioCadastroView, FormularioSimplificadoView, FormularioCadastroView, FormularioSimplificadoView,
LegislacaoCitadaEditView, LegislacaoCitadaView, LegislacaoCitadaEditView, LegislacaoCitadaView,
MateriaAnexadaEditView, MateriaAnexadaView, MateriaAnexadaEditView, MateriaAnexadaView,
NumeracaoEditView, NumeracaoView, RelatoriaView, NumeracaoEditView, NumeracaoView, RelatoriaView,
autor_crud, materia_legislativa_crud, orgao_crud, TramitacaoView, autor_crud,
origem_crud, regime_tramitacao_crud, materia_legislativa_crud, orgao_crud, origem_crud,
status_tramitacao_crud, tipo_autor_crud, regime_tramitacao_crud, status_tramitacao_crud,
tipo_documento_crud, tipo_fim_relatoria_crud, tipo_autor_crud, tipo_documento_crud,
tipo_materia_crud, tipo_proposicao_crud, tipo_fim_relatoria_crud, tipo_materia_crud,
unidade_tramitacao_crud) tipo_proposicao_crud, unidade_tramitacao_crud)
urlpatterns = [ urlpatterns = [
url(r'^sistema/proposicoes/tipo/', include(tipo_proposicao_crud.urls)), url(r'^sistema/proposicoes/tipo/', include(tipo_proposicao_crud.urls)),
@ -60,4 +59,6 @@ urlpatterns = [
DocumentoAcessorioEditView.as_view(), name='documento_acessorio_edit'), DocumentoAcessorioEditView.as_view(), name='documento_acessorio_edit'),
url(r'^materia/(?P<pk>\d+)/relatoria$', url(r'^materia/(?P<pk>\d+)/relatoria$',
RelatoriaView.as_view(), name='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 datetime import date
from crispy_forms.helper import FormHelper 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 import forms
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
@ -1194,3 +1194,107 @@ class RelatoriaView(FormMixin, GenericView):
{'materia': materia, {'materia': materia,
'form': form, 'form': form,
'relatorias': relatorias}) '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 '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 '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>
<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> <dd><a href="{% url 'relatoria' materia.id %}" class="button secondary">{% trans 'Relatoria' %}</a></dd>
</dl> </dl>
{% endblock sections_nav %} {% 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