Browse Source

Merge e8111ed6d7 into 6800251ed2

pull/1137/merge
cristian-longhi 9 years ago
committed by GitHub
parent
commit
d55803393f
  1. 4
      docker-compose.yml
  2. 21
      sapl/legacy/migration.py
  3. 33
      sapl/materia/views.py
  4. 47
      sapl/sessao/views.py
  5. 3
      sapl/templates/base.html
  6. 12
      sapl/templates/protocoloadm/protocolo_filter.html
  7. 35
      sapl/templates/sessao/presenca.html
  8. 37
      sapl/templates/sessao/presenca_ordemdia.html

4
docker-compose.yml

@ -10,7 +10,11 @@ sapldb:
ports: ports:
- "5532:5432" - "5532:5432"
sapl: sapl:
<<<<<<< HEAD
image: interlegis/sapl:3.1.6-BETA
=======
image: interlegis/sapl:3.1.7-BETA image: interlegis/sapl:3.1.7-BETA
>>>>>>> upstream2/master
volumes: volumes:
- sapl_data:/var/interlegis/sapl/data - sapl_data:/var/interlegis/sapl/data
- sapl_media:/var/interlegis/sapl/media - sapl_media:/var/interlegis/sapl/media

21
sapl/legacy/migration.py

@ -581,6 +581,10 @@ def migrate(obj=appconfs, interativo=True):
# MIGRATION_ADJUSTMENTS ##################################################### # MIGRATION_ADJUSTMENTS #####################################################
<<<<<<< HEAD
def adjust_ordemdia_antes_salvar(new, old):
# Prestar atenção
=======
def adjust_acompanhamentomateria(new, old): def adjust_acompanhamentomateria(new, old):
new.confirmado = True new.confirmado = True
@ -588,12 +592,29 @@ def adjust_acompanhamentomateria(new, old):
def adjust_ordemdia_antes_salvar(new, old): def adjust_ordemdia_antes_salvar(new, old):
new.votacao_aberta = False new.votacao_aberta = False
>>>>>>> upstream2/master
if not old.tip_votacao: if not old.tip_votacao:
new.tipo_votacao = 1 new.tipo_votacao = 1
if old.num_ordem is None: if old.num_ordem is None:
new.numero_ordem = 999999999 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): def adjust_ordemdia_depois_salvar(new, old):
if old.num_ordem is None and new.numero_ordem == 999999999: if old.num_ordem is None and new.numero_ordem == 999999999:
with reversion.create_revision(): with reversion.create_revision():

33
sapl/materia/views.py

@ -915,11 +915,16 @@ class TramitacaoCrud(MasterDetailCrud):
unidade_destino = UnidadeTramitacao.objects.get( unidade_destino = UnidadeTramitacao.objects.get(
id=request.POST['unidade_tramitacao_destino'] id=request.POST['unidade_tramitacao_destino']
) )
<<<<<<< HEAD
do_envia_email_tramitacao(
request, materia, status, unidade_destino)
=======
texto = request.POST['texto'] texto = request.POST['texto']
data_tramitacao = request.POST['data_tramitacao'] data_tramitacao = request.POST['data_tramitacao']
do_envia_email_tramitacao( do_envia_email_tramitacao(
request, materia, status, request, materia, status,
unidade_destino, texto, data_tramitacao) unidade_destino, texto, data_tramitacao)
>>>>>>> upstream2/master
return super(CreateView, self).post(request, *args, **kwargs) return super(CreateView, self).post(request, *args, **kwargs)
class UpdateView(MasterDetailCrud.UpdateView): class UpdateView(MasterDetailCrud.UpdateView):
@ -935,11 +940,16 @@ class TramitacaoCrud(MasterDetailCrud):
unidade_destino = UnidadeTramitacao.objects.get( unidade_destino = UnidadeTramitacao.objects.get(
id=request.POST['unidade_tramitacao_destino'] id=request.POST['unidade_tramitacao_destino']
) )
<<<<<<< HEAD
do_envia_email_tramitacao(
request, materia, status, unidade_destino)
=======
texto = request.POST['texto'] texto = request.POST['texto']
data_tramitacao = request.POST['data_tramitacao'] data_tramitacao = request.POST['data_tramitacao']
do_envia_email_tramitacao( do_envia_email_tramitacao(
request, materia, status, request, materia, status,
unidade_destino, texto, data_tramitacao) unidade_destino, texto, data_tramitacao)
>>>>>>> upstream2/master
return super(UpdateView, self).post(request, *args, **kwargs) return super(UpdateView, self).post(request, *args, **kwargs)
@ -1493,9 +1503,14 @@ def criar_email_confirmacao(request, casa_legislativa, materia, hash_txt=''):
return templates return templates
<<<<<<< HEAD
def criar_email_tramitacao(request, casa_legislativa, materia, status,
unidade_destino, hash_txt=''):
=======
def criar_email_tramitacao( def criar_email_tramitacao(
request, casa_legislativa, materia, status, request, casa_legislativa, materia, status,
unidade_destino, texto, data_tramitacao, hash_txt=''): unidade_destino, texto, data_tramitacao, hash_txt=''):
>>>>>>> upstream2/master
if not casa_legislativa: if not casa_legislativa:
raise ValueError("Casa Legislativa é obrigatória") raise ValueError("Casa Legislativa é obrigatória")
@ -1529,10 +1544,17 @@ def criar_email_tramitacao(
"logotipo": casa_legislativa.logotipo, "logotipo": casa_legislativa.logotipo,
"descricao_materia": materia.ementa, "descricao_materia": materia.ementa,
"autoria": autores, "autoria": autores,
<<<<<<< HEAD
"data": tramitacao.data_tramitacao,
"status": status,
"localizacao": unidade_destino,
"texto_acao": tramitacao.texto,
=======
"data": data_tramitacao, "data": data_tramitacao,
"status": status, "status": status,
"localizacao": unidade_destino, "localizacao": unidade_destino,
"texto_acao": texto, "texto_acao": texto,
>>>>>>> upstream2/master
"hash_txt": hash_txt, "hash_txt": hash_txt,
"materia": str(materia), "materia": str(materia),
"base_url": base_url, "base_url": base_url,
@ -1611,8 +1633,12 @@ def do_envia_email_confirmacao(request, materia, email):
return None return None
<<<<<<< HEAD
def do_envia_email_tramitacao(request, materia, status, unidade_destino):
=======
def do_envia_email_tramitacao( def do_envia_email_tramitacao(
request, materia, status, unidade_destino, texto, data_tramitacao): request, materia, status, unidade_destino, texto, data_tramitacao):
>>>>>>> upstream2/master
# #
# Envia email de tramitacao para usuarios cadastrados # Envia email de tramitacao para usuarios cadastrados
# #
@ -1632,8 +1658,11 @@ def do_envia_email_tramitacao(
materia, materia,
status, status,
unidade_destino, unidade_destino,
<<<<<<< HEAD
=======
texto, texto,
data_tramitacao, data_tramitacao,
>>>>>>> upstream2/master
destinatario.hash,) destinatario.hash,)
recipients.append(destinatario.email) recipients.append(destinatario.email)
messages.append({ messages.append({
@ -1787,10 +1816,14 @@ class TramitacaoEmLoteView(PrimeiraTramitacaoEmLoteView):
qr = self.request.GET.copy() qr = self.request.GET.copy()
if ('tramitacao__status' in qr and if ('tramitacao__status' in qr and
<<<<<<< HEAD
'tramitacao__unidade_tramitacao_destino' in qr):
=======
'tramitacao__unidade_tramitacao_destino' in qr and 'tramitacao__unidade_tramitacao_destino' in qr and
qr['tramitacao__status'] and qr['tramitacao__status'] and
qr['tramitacao__unidade_tramitacao_destino'] qr['tramitacao__unidade_tramitacao_destino']
): ):
>>>>>>> upstream2/master
lista = filtra_tramitacao_destino_and_status( lista = filtra_tramitacao_destino_and_status(
qr['tramitacao__status'], qr['tramitacao__status'],
qr['tramitacao__unidade_tramitacao_destino']) qr['tramitacao__unidade_tramitacao_destino'])

47
sapl/sessao/views.py

@ -30,7 +30,7 @@ from sapl.materia.models import (Autoria, DocumentoAcessorio,
from sapl.materia.views import MateriaLegislativaPesquisaView from sapl.materia.views import MateriaLegislativaPesquisaView
from sapl.norma.models import NormaJuridica from sapl.norma.models import NormaJuridica
from sapl.parlamentares.models import (Filiacao, Legislatura, Parlamentar, from sapl.parlamentares.models import (Filiacao, Legislatura, Parlamentar,
SessaoLegislativa) SessaoLegislativa, Mandato)
from sapl.sessao.apps import AppConfig from sapl.sessao.apps import AppConfig
from sapl.sessao.forms import ExpedienteMateriaForm, OrdemDiaForm from sapl.sessao.forms import ExpedienteMateriaForm, OrdemDiaForm
@ -561,7 +561,12 @@ class PresencaMixin:
) )
presentes = [p.parlamentar for p in presencas] 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: if parlamentar in presentes:
yield (parlamentar, True) yield (parlamentar, True)
else: else:
@ -575,7 +580,12 @@ class PresencaMixin:
) )
presentes = [p.parlamentar for p in presencas] 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: if parlamentar in presentes:
yield (parlamentar, True) yield (parlamentar, True)
else: else:
@ -605,13 +615,13 @@ class PresencaView(FormMixin, PresencaMixin, DetailView):
sessao_plenaria_id=self.object.id) sessao_plenaria_id=self.object.id)
# Id dos parlamentares presentes # 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 os que foram desmarcadors
deletar = set(set(presentes_banco) - set(marcados)) deletar = set(set(presentes_banco) - set(marcados))
for d in deletar: for d in deletar:
SessaoPlenariaPresenca.objects.filter( 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: for p in marcados:
sessao = SessaoPlenariaPresenca() sessao = SessaoPlenariaPresenca()
@ -713,13 +723,13 @@ class PresencaOrdemDiaView(FormMixin, PresencaMixin, DetailView):
sessao_plenaria_id=pk) sessao_plenaria_id=pk)
# Id dos parlamentares presentes # 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 os que foram desmarcadors
deletar = set(set(presentes_banco) - set(marcados)) deletar = set(set(presentes_banco) - set(marcados))
for d in deletar: for d in deletar:
PresencaOrdemDia.objects.filter( 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: for p in marcados:
ordem = PresencaOrdemDia() ordem = PresencaOrdemDia()
@ -986,6 +996,28 @@ def insere_parlamentar_composicao(request):
else: else:
return JsonResponse( return JsonResponse(
{'msg': ('Você não tem permissão para esta operação!', 0)}) {'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): def remove_parlamentar_composicao(request):
@ -1006,6 +1038,7 @@ def remove_parlamentar_composicao(request):
{'msg': ( {'msg': (
'Composição da Mesa não pôde ser removida!', 0)}) 'Composição da Mesa não pôde ser removida!', 0)})
>>>>>>> upstream2/master
composicao.delete() composicao.delete()
return JsonResponse( return JsonResponse(

3
sapl/templates/base.html

@ -77,6 +77,9 @@
{# Header #} {# Header #}
{% block main_header %} {% block main_header %}
<header class="masthead"> <header class="masthead">
<div class="navbar-header">
<img src="{% static 'img/beta.png' %}" width="100" height="100">
</div>
<div class="container"> <div class="container">
<div class="navbar-header"> <div class="navbar-header">
<a class="navbar-brand" href="/"> <a class="navbar-brand" href="/">

12
sapl/templates/protocoloadm/protocolo_filter.html

@ -44,6 +44,9 @@
</br> </br>
<strong>Assunto:</strong> {{ p.assunto_ementa|default_if_none:"Não Informado"}}</br> <strong>Assunto:</strong> {{ p.assunto_ementa|default_if_none:"Não Informado"}}</br>
<strong>Data Protocolo:</strong> {{ p.data|date:"d/m/Y"|default_if_none:"Não Informado" }} - Horário: {{ p.hora|date:"G:i:s" }}</br> <strong>Data Protocolo:</strong> {{ p.data|date:"d/m/Y"|default_if_none:"Não Informado" }} - Horário: {{ p.hora|date:"G:i:s" }}</br>
<<<<<<< HEAD
<strong>Autor:</strong> {{p.autor.nome}} </br>
=======
{% if p.tipo_processo == 0 %} {% if p.tipo_processo == 0 %}
<strong>Interessado:</strong> {{ p.interessado|default_if_none:"Não informado" }}</br> <strong>Interessado:</strong> {{ p.interessado|default_if_none:"Não informado" }}</br>
@ -51,8 +54,15 @@
<strong>Autor:</strong> {{ p.autor.nome|default_if_none:"Não informado" }}</br> <strong>Autor:</strong> {{ p.autor.nome|default_if_none:"Não informado" }}</br>
{% endif %} {% endif %}
>>>>>>> upstream2/master
<strong>Natureza do Processo:</strong> <strong>Natureza do Processo:</strong>
{% if p.tipo_processo == 0 %} Administrativo {% elif p.tipo_processo == 1 %} Matéria Legislativa {% endif %}</br> {% if p.tipo_processo == 0 %}
Administrativo</br>
<strong>Interessado:</strong> {{ p.interessado }}
{% elif p.tipo_processo == 1 %}
Matéria Legislativa
{% endif %}
</br>
<strong>Classificação:</strong> {{ p.tipo_documento|default_if_none:p.tipo_materia }} </br> <strong>Classificação:</strong> {{ p.tipo_documento|default_if_none:p.tipo_materia }} </br>
{% if p.anulado %} {% if p.anulado %}
<strong>Anulado por: </strong>{{ p.user_anulacao }} - IP {{ p.ip_anulacao }}</br> <strong>Anulado por: </strong>{{ p.user_anulacao }} - IP {{ p.ip_anulacao }}</br>

35
sapl/templates/sessao/presenca.html

@ -17,15 +17,35 @@
</label> </label>
</div> </div>
</div> </div>
<br /> <br />
<div class="controls">
<div class="checkbox">
<label for="id_ativos">
<input type="checkbox" name="ativos" id="id_ativos" onchange="escondeInativos()" checked /> Exibir somente parlamentares ativos
</label>
</div>
</div>
<br />
<div class="controls"> <div class="controls">
{% for parlamentar, check in view.get_presencas %} {% for parlamentar, check in view.get_presencas %}
{% if parlamentar.ativo %}
<div class="checkbox"> <div class="checkbox">
<label for="id_presenca_{{forloop.counter}}"> <label for="id_presenca_{{forloop.counter}}">
<input type="checkbox" id="id_presenca_{{forloop.counter}}" name="presenca" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/> <input type="checkbox" id="id_presenca_{{forloop.counter}}" name="presenca_ativos" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/>
{{ parlamentar.nome_parlamentar }} / {{ parlamentar.filiacao_atual }}
</label>
</div>
{% else %}
<div class="checkbox inativos" style="display:none;">
<label for="id_presenca_{{forloop.counter}}">
<input type="checkbox" id="id_presenca_{{forloop.counter}}" name="presenca_inativos" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/>
{{ parlamentar.nome_parlamentar }} / {{ parlamentar.filiacao_atual }} {{ parlamentar.nome_parlamentar }} / {{ parlamentar.filiacao_atual }}
</label> </label>
</div> </div>
{% endif %}
{% endfor %} {% endfor %}
</div> </div>
@ -55,10 +75,21 @@
{% block extra_js %} {% block extra_js %}
<script language="JavaScript"> <script language="JavaScript">
function checkAll(event) { function checkAll(event) {
$('[name=presenca]').each(function() { $('[name=presenca_ativos]').each(function() {
$(this).prop('checked', event.target.checked ? 'checked': null); $(this).prop('checked', event.target.checked ? 'checked': null);
$(this).trigger('click'); $(this).trigger('click');
}); });
if (($('[name=ativos]').is(':checked')) == false) {
$('[name=presenca_inativos]').each(function() {
$(this).prop('checked', event.target.checked ? 'checked': null);
$(this).trigger('click');
});
}
}
function escondeInativos() {
$(".inativos").toggle();
} }
</script> </script>
{% endblock %} {% endblock %}

37
sapl/templates/sessao/presenca_ordemdia.html

@ -17,16 +17,36 @@
</label> </label>
</div> </div>
</div> </div>
<br>
<br />
<div class="controls">
<div class="checkbox">
<label for="id_ativos">
<input type="checkbox" name="ativos" id="id_ativos" onchange="escondeInativos()" checked /> Exibir somente parlamentares ativos
</label>
</div>
</div>
<br />
<div class="controls"> <div class="controls">
{% for parlamentar, check in view.get_presencas_ordem %} {% for parlamentar, check in view.get_presencas_ordem %}
{% if parlamentar.ativo %}
<div class="checkbox"> <div class="checkbox">
<label for="id_presenca_{{forloop.counter}}"> <label for="id_presenca_{{forloop.counter}}">
<input type="checkbox" id="id_presenca_{{forloop.counter}}" name="presenca" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/> <input type="checkbox" id="id_presenca_{{forloop.counter}}" name="presenca_ativos" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/>
{{ parlamentar.nome_parlamentar }} / {{ parlamentar.filiacao_atual }} {{ parlamentar.nome_parlamentar }} / {{ parlamentar.filiacao_atual }}
</label> </label>
</div> </div>
{% else %}
<div class="checkbox inativos" style="display:none;">
<label for="id_presenca_{{forloop.counter}}">
<input type="checkbox" id="id_presenca_{{forloop.counter}}" name="presenca_inativos" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/>
{{ parlamentar.nome_parlamentar }} / {{ parlamentar.filiacao_atual }}
</label>
</div>
{% endif %}
{% endfor %} {% endfor %}
</div> </div>
@ -56,10 +76,21 @@
{% block extra_js %} {% block extra_js %}
<script language="JavaScript"> <script language="JavaScript">
function checkAll(event) { function checkAll(event) {
$('[name=presenca]').each(function() { $('[name=presenca_ativos]').each(function() {
$(this).prop('checked', event.target.checked ? 'checked': null); $(this).prop('checked', event.target.checked ? 'checked': null);
$(this).trigger('click'); $(this).trigger('click');
}); });
if (($('[name=ativos]').is(':checked')) == false) {
$('[name=presenca_inativos]').each(function() {
$(this).prop('checked', event.target.checked ? 'checked': null);
$(this).trigger('click');
});
}
}
function escondeInativos() {
$(".inativos").toggle();
} }
</script> </script>
{% endblock %} {% endblock %}

Loading…
Cancel
Save