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. 55
      sapl/templates/sessao/presenca.html
  8. 55
      sapl/templates/sessao/presenca_ordemdia.html

4
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

21
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():

33
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'])

47
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(

3
sapl/templates/base.html

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

12
sapl/templates/protocoloadm/protocolo_filter.html

@ -44,6 +44,9 @@
</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>
<<<<<<< HEAD
<strong>Autor:</strong> {{p.autor.nome}} </br>
=======
{% if p.tipo_processo == 0 %}
<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>
{% endif %}
>>>>>>> upstream2/master
<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>
{% if p.anulado %}
<strong>Anulado por: </strong>{{ p.user_anulacao }} - IP {{ p.ip_anulacao }}</br>

55
sapl/templates/sessao/presenca.html

@ -17,17 +17,37 @@
</label>
</div>
</div>
<br />
<div class="controls">
{% for parlamentar, check in view.get_presencas %}
<div class="checkbox">
<label for="id_presenca_{{forloop.counter}}">
<input type="checkbox" id="id_presenca_{{forloop.counter}}" name="presenca" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/>
{{ parlamentar.nome_parlamentar }} / {{ parlamentar.filiacao_atual }}
</label>
</div>
{% endfor %}
</div>
<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">
{% for parlamentar, check in view.get_presencas %}
{% if parlamentar.ativo %}
<div class="checkbox">
<label for="id_presenca_{{forloop.counter}}">
<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 }}
</label>
</div>
{% endif %}
{% endfor %}
</div>
<br />
<input type="submit" value="Salvar" class="btn btn-primary" />
@ -55,10 +75,21 @@
{% block extra_js %}
<script language="JavaScript">
function checkAll(event) {
$('[name=presenca]').each(function() {
$('[name=presenca_ativos]').each(function() {
$(this).prop('checked', event.target.checked ? 'checked': null);
$(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>
{% endblock %}

55
sapl/templates/sessao/presenca_ordemdia.html

@ -17,19 +17,39 @@
</label>
</div>
</div>
<br>
<br />
<div class="controls">
{% for parlamentar, check in view.get_presencas_ordem %}
<div class="checkbox">
<label for="id_presenca_{{forloop.counter}}">
<input type="checkbox" id="id_presenca_{{forloop.counter}}" name="presenca" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/>
{{ parlamentar.nome_parlamentar }} / {{ parlamentar.filiacao_atual }}
</label>
<label for="id_ativos">
<input type="checkbox" name="ativos" id="id_ativos" onchange="escondeInativos()" checked /> Exibir somente parlamentares ativos
</label>
</div>
{% endfor %}
</div>
<br />
<div class="controls">
{% for parlamentar, check in view.get_presencas_ordem %}
{% if parlamentar.ativo %}
<div class="checkbox">
<label for="id_presenca_{{forloop.counter}}">
<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 }}
</label>
</div>
{% endif %}
{% endfor %}
</div>
<br />
<input type="submit" value="Salvar" class="btn btn-primary" />
</form>
@ -56,10 +76,21 @@
{% block extra_js %}
<script language="JavaScript">
function checkAll(event) {
$('[name=presenca]').each(function() {
$(this).prop('checked', event.target.checked ? 'checked': null);
$(this).trigger('click');
});
}
$('[name=presenca_ativos]').each(function() {
$(this).prop('checked', event.target.checked ? 'checked': null);
$(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>
{% endblock %}

Loading…
Cancel
Save