diff --git a/docker-compose.yml b/docker-compose.yml index 4387dc125..146b7d726 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,7 +10,11 @@ sapldb: ports: - "5532:5432" sapl: +<<<<<<< HEAD + image: interlegis/sapl:3.1.6-BETA +======= image: interlegis/sapl:3.1.7-BETA +>>>>>>> upstream2/master volumes: - sapl_data:/var/interlegis/sapl/data - sapl_media:/var/interlegis/sapl/media diff --git a/sapl/legacy/migration.py b/sapl/legacy/migration.py index b7ffceef6..d7705df52 100644 --- a/sapl/legacy/migration.py +++ b/sapl/legacy/migration.py @@ -581,6 +581,10 @@ def migrate(obj=appconfs, interativo=True): # MIGRATION_ADJUSTMENTS ##################################################### +<<<<<<< HEAD +def adjust_ordemdia_antes_salvar(new, old): + # Prestar atenção +======= def adjust_acompanhamentomateria(new, old): new.confirmado = True @@ -588,12 +592,29 @@ def adjust_acompanhamentomateria(new, old): def adjust_ordemdia_antes_salvar(new, old): new.votacao_aberta = False +>>>>>>> upstream2/master if not old.tip_votacao: new.tipo_votacao = 1 if old.num_ordem is None: new.numero_ordem = 999999999 +def adjust_ordemdia_depois_salvar(new, old): + if old.num_ordem is None and new.numero_ordem == 999999999: + with reversion.create_revision(): + problema = 'OrdemDia de PK %s tinha seu valor de numero ordem'\ + ' nulo.' % old.pk + descricao = 'O valor %s foi colocado no lugar.' % new.numero_ordem + warn(problema + ' => ' + descricao) + save_relation(obj=new, problema=problema, + descricao=descricao, eh_stub=False) + reversion.set_comment('OrdemDia sem número da ordem.') + pass + + if old.num_ordem is None: + new.numero_ordem = 999999999 + + def adjust_ordemdia_depois_salvar(new, old): if old.num_ordem is None and new.numero_ordem == 999999999: with reversion.create_revision(): diff --git a/sapl/materia/views.py b/sapl/materia/views.py index 85afc40c0..87018e5fa 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -915,11 +915,16 @@ class TramitacaoCrud(MasterDetailCrud): unidade_destino = UnidadeTramitacao.objects.get( id=request.POST['unidade_tramitacao_destino'] ) +<<<<<<< HEAD + do_envia_email_tramitacao( + request, materia, status, unidade_destino) +======= texto = request.POST['texto'] data_tramitacao = request.POST['data_tramitacao'] do_envia_email_tramitacao( request, materia, status, unidade_destino, texto, data_tramitacao) +>>>>>>> upstream2/master return super(CreateView, self).post(request, *args, **kwargs) class UpdateView(MasterDetailCrud.UpdateView): @@ -935,11 +940,16 @@ class TramitacaoCrud(MasterDetailCrud): unidade_destino = UnidadeTramitacao.objects.get( id=request.POST['unidade_tramitacao_destino'] ) +<<<<<<< HEAD + do_envia_email_tramitacao( + request, materia, status, unidade_destino) +======= texto = request.POST['texto'] data_tramitacao = request.POST['data_tramitacao'] do_envia_email_tramitacao( request, materia, status, unidade_destino, texto, data_tramitacao) +>>>>>>> upstream2/master return super(UpdateView, self).post(request, *args, **kwargs) @@ -1493,9 +1503,14 @@ def criar_email_confirmacao(request, casa_legislativa, materia, hash_txt=''): return templates +<<<<<<< HEAD +def criar_email_tramitacao(request, casa_legislativa, materia, status, + unidade_destino, hash_txt=''): +======= def criar_email_tramitacao( request, casa_legislativa, materia, status, unidade_destino, texto, data_tramitacao, hash_txt=''): +>>>>>>> upstream2/master if not casa_legislativa: raise ValueError("Casa Legislativa é obrigatória") @@ -1529,10 +1544,17 @@ def criar_email_tramitacao( "logotipo": casa_legislativa.logotipo, "descricao_materia": materia.ementa, "autoria": autores, +<<<<<<< HEAD + "data": tramitacao.data_tramitacao, + "status": status, + "localizacao": unidade_destino, + "texto_acao": tramitacao.texto, +======= "data": data_tramitacao, "status": status, "localizacao": unidade_destino, "texto_acao": texto, +>>>>>>> upstream2/master "hash_txt": hash_txt, "materia": str(materia), "base_url": base_url, @@ -1611,8 +1633,12 @@ def do_envia_email_confirmacao(request, materia, email): return None +<<<<<<< HEAD +def do_envia_email_tramitacao(request, materia, status, unidade_destino): +======= def do_envia_email_tramitacao( request, materia, status, unidade_destino, texto, data_tramitacao): +>>>>>>> upstream2/master # # Envia email de tramitacao para usuarios cadastrados # @@ -1632,8 +1658,11 @@ def do_envia_email_tramitacao( materia, status, unidade_destino, +<<<<<<< HEAD +======= texto, data_tramitacao, +>>>>>>> upstream2/master destinatario.hash,) recipients.append(destinatario.email) messages.append({ @@ -1787,10 +1816,14 @@ class TramitacaoEmLoteView(PrimeiraTramitacaoEmLoteView): qr = self.request.GET.copy() if ('tramitacao__status' in qr and +<<<<<<< HEAD + 'tramitacao__unidade_tramitacao_destino' in qr): +======= 'tramitacao__unidade_tramitacao_destino' in qr and qr['tramitacao__status'] and qr['tramitacao__unidade_tramitacao_destino'] ): +>>>>>>> upstream2/master lista = filtra_tramitacao_destino_and_status( qr['tramitacao__status'], qr['tramitacao__unidade_tramitacao_destino']) diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 1672d9ea5..150897243 100644 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -30,7 +30,7 @@ from sapl.materia.models import (Autoria, DocumentoAcessorio, from sapl.materia.views import MateriaLegislativaPesquisaView from sapl.norma.models import NormaJuridica from sapl.parlamentares.models import (Filiacao, Legislatura, Parlamentar, - SessaoLegislativa) + SessaoLegislativa, Mandato) from sapl.sessao.apps import AppConfig from sapl.sessao.forms import ExpedienteMateriaForm, OrdemDiaForm @@ -561,7 +561,12 @@ class PresencaMixin: ) presentes = [p.parlamentar for p in presencas] - for parlamentar in Parlamentar.objects.filter(ativo=True): + mandato = Mandato.objects.filter( + legislatura_id=self.object.legislatura_id) + + mandato_parlamentar = [p.parlamentar for p in mandato] + + for parlamentar in mandato_parlamentar: if parlamentar in presentes: yield (parlamentar, True) else: @@ -575,7 +580,12 @@ class PresencaMixin: ) presentes = [p.parlamentar for p in presencas] - for parlamentar in Parlamentar.objects.filter(ativo=True): + mandato = Mandato.objects.filter( + legislatura_id=self.object.legislatura_id) + + mandato_parlamentar = [p.parlamentar for p in mandato] + + for parlamentar in mandato_parlamentar: if parlamentar in presentes: yield (parlamentar, True) else: @@ -605,13 +615,13 @@ class PresencaView(FormMixin, PresencaMixin, DetailView): sessao_plenaria_id=self.object.id) # Id dos parlamentares presentes - marcados = request.POST.getlist('presenca') + marcados = request.POST.getlist('presenca_ativos') + request.POST.getlist('presenca_inativos') # Deletar os que foram desmarcadors deletar = set(set(presentes_banco) - set(marcados)) for d in deletar: SessaoPlenariaPresenca.objects.filter( - parlamentar_id=d.parlamentar_id).delete() + parlamentar_id=d.parlamentar_id, sessao_plenaria_id=self.object.id).delete() for p in marcados: sessao = SessaoPlenariaPresenca() @@ -713,13 +723,13 @@ class PresencaOrdemDiaView(FormMixin, PresencaMixin, DetailView): sessao_plenaria_id=pk) # Id dos parlamentares presentes - marcados = request.POST.getlist('presenca') + marcados = request.POST.getlist('presenca_ativos') + request.POST.getlist('presenca_inativos') # Deletar os que foram desmarcadors deletar = set(set(presentes_banco) - set(marcados)) for d in deletar: PresencaOrdemDia.objects.filter( - parlamentar_id=d.parlamentar_id).delete() + parlamentar_id=d.parlamentar_id, sessao_plenaria_id=self.object.id).delete() for p in marcados: ordem = PresencaOrdemDia() @@ -986,6 +996,28 @@ def insere_parlamentar_composicao(request): else: return JsonResponse( {'msg': ('Você não tem permissão para esta operação!', 0)}) +<<<<<<< HEAD + + +def remove_parlamentar_composicao(request): + """ + Essa função lida com qualquer operação de remoção + na composição da Mesa Diretora + """ + if request.POST and request.user.has_perm( + '%s.delete_%s' % ( + AppConfig.label, IntegranteMesa._meta.model_name)): + + if 'composicao_mesa' in request.POST: + try: + composicao = IntegranteMesa.objects.get( + id=int(request.POST['composicao_mesa'])) + except ObjectDoesNotExist: + return JsonResponse( + {'msg': ( + 'Composição da Mesa não pôde ser removida!', 0)}) + +======= def remove_parlamentar_composicao(request): @@ -1006,6 +1038,7 @@ def remove_parlamentar_composicao(request): {'msg': ( 'Composição da Mesa não pôde ser removida!', 0)}) +>>>>>>> upstream2/master composicao.delete() return JsonResponse( diff --git a/sapl/templates/base.html b/sapl/templates/base.html index 647fcdc15..3515dadd6 100644 --- a/sapl/templates/base.html +++ b/sapl/templates/base.html @@ -77,6 +77,9 @@ {# Header #} {% block main_header %}
+
-
-
- {% for parlamentar, check in view.get_presencas %} -
- -
- {% endfor %} -
+ +
+
+
+ +
+
+ +
+ +
+ {% for parlamentar, check in view.get_presencas %} + {% if parlamentar.ativo %} +
+ +
+ {% else %} + + {% endif %} + {% endfor %} +

@@ -55,10 +75,21 @@ {% block extra_js %} {% endblock %} diff --git a/sapl/templates/sessao/presenca_ordemdia.html b/sapl/templates/sessao/presenca_ordemdia.html index edb4055ca..9b5afdfb1 100644 --- a/sapl/templates/sessao/presenca_ordemdia.html +++ b/sapl/templates/sessao/presenca_ordemdia.html @@ -17,19 +17,39 @@ -
+ +
- {% for parlamentar, check in view.get_presencas_ordem %}
- +
- {% endfor %}
+
+ +
+ {% for parlamentar, check in view.get_presencas_ordem %} + {% if parlamentar.ativo %} +
+ +
+ {% else %} + + {% endif %} + {% endfor %} +
+
@@ -56,10 +76,21 @@ {% block extra_js %} {% endblock %}