Browse Source

Adiciona orenação implícita e explícita de tramitação de matéria (#3259)

pull/3261/head
Vinícius Cantuária 4 years ago
committed by GitHub
parent
commit
2c30a8450a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      sapl/api/views.py
  2. 2
      sapl/base/email_utils.py
  3. 13
      sapl/materia/forms.py
  4. 1
      sapl/materia/models.py
  5. 42
      sapl/materia/tests/test_materia.py
  6. 17
      sapl/materia/views.py
  7. 2
      sapl/relatorios/views.py
  8. 4
      sapl/sessao/views.py

2
sapl/api/views.py

@ -467,7 +467,7 @@ class _MateriaLegislativaViewSet:
if not materia.tramitacao_set.exists(): if not materia.tramitacao_set.exists():
return Response({}) return Response({})
ultima_tramitacao = materia.tramitacao_set.last() ultima_tramitacao = materia.tramitacao_set.order_by('-data_tramitacao', '-id').first()
serializer_class = SaplApiViewSetConstrutor.get_class_for_model( serializer_class = SaplApiViewSetConstrutor.get_class_for_model(
Tramitacao).serializer_class(ultima_tramitacao) Tramitacao).serializer_class(ultima_tramitacao)

2
sapl/base/email_utils.py

@ -171,7 +171,7 @@ def criar_email_tramitacao(base_url, casa_legislativa, tipo, doc_mat, status,
ementa = doc_mat.ementa ementa = doc_mat.ementa
autores = [autoria.autor.nome for autoria in doc_mat.autoria_set.all()] autores = [autoria.autor.nome for autoria in doc_mat.autoria_set.all()]
tramitacao = doc_mat.tramitacao_set.last() tramitacao = doc_mat.tramitacao_set.order_by('-data_tramitacao', '-id').first()
else: else:
doc_mat_url = reverse('sapl.protocoloadm:tramitacaoadministrativo_list', doc_mat_url = reverse('sapl.protocoloadm:tramitacaoadministrativo_list',

13
sapl/materia/forms.py

@ -560,8 +560,9 @@ class TramitacaoForm(ModelForm):
lista_tramitacao = [] lista_tramitacao = []
anexadas_list = lista_anexados(materia) anexadas_list = lista_anexados(materia)
for ma in anexadas_list: for ma in anexadas_list:
if not ma.tramitacao_set.all() \ if not ma.tramitacao_set.order_by('-data_tramitacao', '-id').all() \
or ma.tramitacao_set.last().unidade_tramitacao_destino == tramitacao.unidade_tramitacao_local: or ma.tramitacao_set.order_by('-data_tramitacao', '-id').first().unidade_tramitacao_destino \
== tramitacao.unidade_tramitacao_local:
ma.em_tramitacao = False if tramitacao.status.indicador == "F" else True ma.em_tramitacao = False if tramitacao.status.indicador == "F" else True
ma.save() ma.save()
lista_tramitacao.append(Tramitacao( lista_tramitacao.append(Tramitacao(
@ -689,7 +690,7 @@ class TramitacaoUpdateForm(TramitacaoForm):
if tramitar_anexadas: if tramitar_anexadas:
anexadas_list = lista_anexados(materia) anexadas_list = lista_anexados(materia)
for ma in anexadas_list: for ma in anexadas_list:
tram_anexada = ma.tramitacao_set.last() tram_anexada = ma.tramitacao_set.order_by('-data_tramitacao', '-id').first()
if compara_tramitacoes_mat(ant_tram_principal, tram_anexada): if compara_tramitacoes_mat(ant_tram_principal, tram_anexada):
tram_anexada.status = nova_tram_principal.status tram_anexada.status = nova_tram_principal.status
tram_anexada.data_tramitacao = nova_tram_principal.data_tramitacao tram_anexada.data_tramitacao = nova_tram_principal.data_tramitacao
@ -1785,9 +1786,9 @@ class TramitacaoEmLoteForm(ModelForm):
lista_tramitacao = [] lista_tramitacao = []
anexadas = lista_anexados(mat) anexadas = lista_anexados(mat)
for ml in anexadas: for ml in anexadas:
if not ml.tramitacao_set.all() \ if not ml.tramitacao_set.order_by('-data_tramitacao', '-id').all() or \
or ml.tramitacao_set.last() \ ml.tramitacao_set.order_by('-data_tramitacao', '-id').first().unidade_tramitacao_destino \
.unidade_tramitacao_destino == tramitacao.unidade_tramitacao_local: == tramitacao.unidade_tramitacao_local:
ml.em_tramitacao = False if tramitacao.status.indicador == "F" else True ml.em_tramitacao = False if tramitacao.status.indicador == "F" else True
ml.save() ml.save()
lista_tramitacao.append(Tramitacao( lista_tramitacao.append(Tramitacao(

1
sapl/materia/models.py

@ -1176,6 +1176,7 @@ class Tramitacao(models.Model):
class Meta: class Meta:
verbose_name = _('Tramitação') verbose_name = _('Tramitação')
verbose_name_plural = _('Tramitações') verbose_name_plural = _('Tramitações')
ordering = ('-data_tramitacao', '-id')
def __str__(self): def __str__(self):
return _('%(materia)s | %(status)s | %(data)s') % { return _('%(materia)s | %(status)s | %(data)s') % {

42
sapl/materia/tests/test_materia.py

@ -747,11 +747,11 @@ def test_tramitacoes_materias_anexadas(admin_client):
assert form.is_valid() assert form.is_valid()
tramitacao_principal = form.save() tramitacao_principal = form.save()
tramitacao_anexada = materia_anexada.tramitacao_set.last() tramitacao_anexada = materia_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first()
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first()
# Verifica se foram criadas as tramitações para as matérias anexadas e anexadas às anexadas # Verifica se foram criadas as tramitações para as matérias anexadas e anexadas às anexadas
assert materia_principal.tramitacao_set.last() == tramitacao_principal assert materia_principal.tramitacao_set.order_by('-data_tramitacao', '-id').first() == tramitacao_principal
assert tramitacao_principal.materia.em_tramitacao == (tramitacao_principal.status.indicador != "F") assert tramitacao_principal.materia.em_tramitacao == (tramitacao_principal.status.indicador != "F")
assert compara_tramitacoes_mat(tramitacao_principal, tramitacao_anexada) assert compara_tramitacoes_mat(tramitacao_principal, tramitacao_anexada)
assert MateriaLegislativa.objects.get(id=materia_anexada.pk).em_tramitacao \ assert MateriaLegislativa.objects.get(id=materia_anexada.pk).em_tramitacao \
@ -774,8 +774,8 @@ def test_tramitacoes_materias_anexadas(admin_client):
assert form.is_valid() assert form.is_valid()
tramitacao_principal = form.save() tramitacao_principal = form.save()
tramitacao_anexada = materia_anexada.tramitacao_set.last() tramitacao_anexada = materia_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first()
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first()
assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2 assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2
assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2 assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2
@ -804,8 +804,8 @@ def test_tramitacoes_materias_anexadas(admin_client):
assert form.is_valid() assert form.is_valid()
tramitacao_principal = form.save() tramitacao_principal = form.save()
tramitacao_anexada = materia_anexada.tramitacao_set.last() tramitacao_anexada = materia_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first()
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first()
form = TramitacaoUpdateForm(data={}) form = TramitacaoUpdateForm(data={})
# Alterando unidade_tramitacao_destino # Alterando unidade_tramitacao_destino
@ -820,7 +820,7 @@ def test_tramitacoes_materias_anexadas(admin_client):
assert form.is_valid() assert form.is_valid()
tramitacao_anexada = form.save() tramitacao_anexada = form.save()
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first()
assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_1 assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_1
assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2 assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2
@ -839,8 +839,8 @@ def test_tramitacoes_materias_anexadas(admin_client):
assert form.is_valid() assert form.is_valid()
tramitacao_principal = form.save() tramitacao_principal = form.save()
tramitacao_anexada = materia_anexada.tramitacao_set.last() tramitacao_anexada = materia_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first()
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first()
assert tramitacao_principal.texto == "Testando a alteração" assert tramitacao_principal.texto == "Testando a alteração"
assert not tramitacao_anexada.texto == "Testando a alteração" assert not tramitacao_anexada.texto == "Testando a alteração"
@ -883,11 +883,11 @@ def test_tramitacoes_materias_anexadas(admin_client):
assert form.is_valid() assert form.is_valid()
tramitacao_principal = form.save() tramitacao_principal = form.save()
tramitacao_anexada = materia_anexada.tramitacao_set.last() tramitacao_anexada = materia_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first()
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first()
# Deve ser criada tramitação apenas para a matéria principal # Deve ser criada tramitação apenas para a matéria principal
assert materia_principal.tramitacao_set.last() == tramitacao_principal assert materia_principal.tramitacao_set.order_by('-data_tramitacao', '-id').first() == tramitacao_principal
assert not tramitacao_anexada assert not tramitacao_anexada
assert not tramitacao_anexada_anexada assert not tramitacao_anexada_anexada
@ -905,11 +905,11 @@ def test_tramitacoes_materias_anexadas(admin_client):
assert form.is_valid() assert form.is_valid()
tramitacao_anexada = form.save() tramitacao_anexada = form.save()
tramitacao_principal = materia_principal.tramitacao_set.last() tramitacao_principal = materia_principal.tramitacao_set.order_by('-data_tramitacao', '-id').first()
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first()
assert materia_anexada.tramitacao_set.last() == tramitacao_anexada assert materia_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first() == tramitacao_anexada
assert materia_principal.tramitacao_set.all().count() == 1 assert materia_principal.tramitacao_set.order_by('-data_tramitacao', '-id').all().count() == 1
assert compara_tramitacoes_mat(tramitacao_principal, tramitacao_anexada) assert compara_tramitacoes_mat(tramitacao_principal, tramitacao_anexada)
assert not tramitacao_anexada_anexada assert not tramitacao_anexada_anexada
@ -926,8 +926,8 @@ def test_tramitacoes_materias_anexadas(admin_client):
assert form.is_valid() assert form.is_valid()
tramitacao_principal = form.save() tramitacao_principal = form.save()
tramitacao_anexada = materia_anexada.tramitacao_set.last() tramitacao_anexada = materia_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first()
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first()
assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2 assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2
assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_1 assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_1
@ -946,8 +946,8 @@ def test_tramitacoes_materias_anexadas(admin_client):
assert form.is_valid() assert form.is_valid()
tramitacao_anexada = form.save() tramitacao_anexada = form.save()
tramitacao_principal = materia_principal.tramitacao_set.last() tramitacao_principal = materia_principal.tramitacao_set.order_by('-data_tramitacao', '-id').first()
tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first()
assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2 assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2
assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2 assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2

17
sapl/materia/views.py

@ -1209,10 +1209,8 @@ class TramitacaoCrud(MasterDetailCrud):
def get_initial(self): def get_initial(self):
initial = super(CreateView, self).get_initial() initial = super(CreateView, self).get_initial()
local = MateriaLegislativa.objects.get( local = MateriaLegislativa.objects.get(pk=self.kwargs['pk'])\
pk=self.kwargs['pk']).tramitacao_set.order_by( .tramitacao_set.order_by('-data_tramitacao', '-id').first()
'-data_tramitacao',
'-id').first()
if local: if local:
initial['unidade_tramitacao_local' initial['unidade_tramitacao_local'
@ -1343,10 +1341,7 @@ class TramitacaoCrud(MasterDetailCrud):
url = reverse('sapl.materia:tramitacao_list', url = reverse('sapl.materia:tramitacao_list',
kwargs={'pk': materia.id}) kwargs={'pk': materia.id})
ultima_tramitacao = materia.tramitacao_set.order_by( ultima_tramitacao = materia.tramitacao_set.order_by('-data_tramitacao', '-id').first()
'-data_tramitacao',
'-timestamp',
'-id').first()
if tramitacao.pk != ultima_tramitacao.pk: if tramitacao.pk != ultima_tramitacao.pk:
username = request.user.username username = request.user.username
@ -1366,7 +1361,7 @@ class TramitacaoCrud(MasterDetailCrud):
if tramitar_anexadas: if tramitar_anexadas:
mat_anexadas = lista_anexados(materia) mat_anexadas = lista_anexados(materia)
for ma in mat_anexadas: for ma in mat_anexadas:
tram_anexada = ma.tramitacao_set.last() tram_anexada = ma.tramitacao_set.order_by('-data_tramitacao', '-id').first()
if compara_tramitacoes_mat(tram_anexada, tramitacao): if compara_tramitacoes_mat(tram_anexada, tramitacao):
tramitacoes_deletar.append(tram_anexada) tramitacoes_deletar.append(tram_anexada)
if ma.tramitacao_set.count() == 0: if ma.tramitacao_set.count() == 0:
@ -2372,7 +2367,7 @@ class PrimeiraTramitacaoEmLoteView(PermissionRequiredMixin, FilterView):
context['title'] = _('Primeira Tramitação em Lote') context['title'] = _('Primeira Tramitação em Lote')
# Pega somente documentos que não possuem tramitação # Pega somente documentos que não possuem tramitação
context['object_list'] = [obj for obj in context['object_list'] context['object_list'] = [obj for obj in context['object_list']
if obj.tramitacao_set.all().count() == 0] if obj.tramitacao_set.order_by('-data_tramitacao', '-id').all().count() == 0]
else: else:
context['title'] = _('Tramitação em Lote') context['title'] = _('Tramitação em Lote')
context['form'].fields['unidade_tramitacao_local'].initial = UnidadeTramitacao.objects.get( context['form'].fields['unidade_tramitacao_local'].initial = UnidadeTramitacao.objects.get(
@ -2625,7 +2620,7 @@ class ExcluirTramitacaoEmLoteView(PermissionRequiredMixin, FormView):
status=form.cleaned_data['status']) status=form.cleaned_data['status'])
for tramitacao in tramitacao_set: for tramitacao in tramitacao_set:
materia = tramitacao.materia materia = tramitacao.materia
if tramitacao == materia.tramitacao_set.last(): if tramitacao == materia.tramitacao_set.order_by('-data_tramitacao', '-id').first():
tramitacao.delete() tramitacao.delete()
return redirect(self.get_success_url()) return redirect(self.get_success_url())

2
sapl/relatorios/views.py

@ -821,7 +821,7 @@ def get_sessao_plenaria(sessao, casa):
def get_turno(materia): def get_turno(materia):
descricao_turno = '' descricao_turno = ''
descricao_tramitacao = '' descricao_tramitacao = ''
tramitacoes = materia.tramitacao_set.all().order_by('-data_tramitacao') tramitacoes = materia.tramitacao_set.order_by('-data_tramitacao', '-id').all()
tramitacoes_turno = tramitacoes.exclude(turno="") tramitacoes_turno = tramitacoes.exclude(turno="")
if tramitacoes: if tramitacoes:

4
sapl/sessao/views.py

@ -3593,7 +3593,7 @@ class PautaSessaoDetailView(DetailView):
resultado = _('Matéria não votada') resultado = _('Matéria não votada')
resultado_observacao = _(' ') resultado_observacao = _(' ')
ultima_tramitacao = m.materia.tramitacao_set.order_by('-data_tramitacao').select_related('status').first() ultima_tramitacao = m.materia.tramitacao_set.order_by('-data_tramitacao', '-id').first()
numeracao = m.materia.numeracao_set.first() numeracao = m.materia.numeracao_set.first()
materias_expediente.append({ materias_expediente.append({
@ -3643,7 +3643,7 @@ class PautaSessaoDetailView(DetailView):
resultado = _('Matéria não votada') resultado = _('Matéria não votada')
resultado_observacao = _(' ') resultado_observacao = _(' ')
ultima_tramitacao = o.materia.tramitacao_set.order_by('-data_tramitacao').first() ultima_tramitacao = o.materia.tramitacao_set.order_by('-data_tramitacao', '-id').first()
numeracao = o.materia.numeracao_set.first() numeracao = o.materia.numeracao_set.first()
materias_ordem.append({ materias_ordem.append({

Loading…
Cancel
Save