diff --git a/materia/models.py b/materia/models.py index 51c5c548e..37692f49a 100644 --- a/materia/models.py +++ b/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 } diff --git a/materia/urls.py b/materia/urls.py index 3d630e3a3..88cfd81bb 100644 --- a/materia/urls.py +++ b/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\d+)/relatoria$', RelatoriaView.as_view(), name='relatoria'), + url(r'^materia/(?P\d+)/tramitacao$', + TramitacaoView.as_view(), name='tramitacao_materia'), ] diff --git a/materia/views.py b/materia/views.py index 92fc2421e..fd416cd77 100644 --- a/materia/views.py +++ b/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}) diff --git a/templates/materia/materia_detail.html b/templates/materia/materia_detail.html index 728c8eff6..c58c80330 100644 --- a/templates/materia/materia_detail.html +++ b/templates/materia/materia_detail.html @@ -10,7 +10,7 @@
{% trans 'Documento Acessório' %}
{% trans 'Legislação Citada' %}
{% trans 'Numeração' %}
-
{% trans 'Tramitação' %}
+
{% trans 'Tramitação' %}
{% trans 'Relatoria' %}
{% endblock sections_nav %} diff --git a/templates/materia/tramitacao.html b/templates/materia/tramitacao.html new file mode 100644 index 000000000..abc2500da --- /dev/null +++ b/templates/materia/tramitacao.html @@ -0,0 +1,51 @@ +{% extends "materia/materia_detail.html" %} +{% load i18n %} +{% load crispy_forms_tags %} + +{% block detail_content %} +
+ Matéria Legislativa +
    +
  • Tipo: {{materia.tipo.sigla}}
  • +
  • Número: {{materia.numero}}
  • +
  • Ano: {{materia.ano}}
  • +
+ Ementa: {{materia.ementa}} + +
+ Tramitações + + + + + + + + {% for t in tramitacoes %} + + + + + + + {% endfor %} +
Data AçãoOrigemDestinoStatus
{{t.data_tramitacao|date:'d/m/Y'}}{{t.unidade_tramitacao_local}}{{t.unidade_tramitacao_destino}}{{t.status.descricao}}
+
+ {% if error %}
{{ error }}
{% endif %} + {% crispy form %} +
+{% endblock %} + +{% block foot_js %} + +{% endblock %} \ No newline at end of file