Browse Source

Conserta detalhes da votacao nominal

pull/1174/head
Eduardo Calil 9 years ago
parent
commit
8881ae3802
  1. 5
      create_admin.py
  2. 1
      genkey.py
  3. 4
      sapl/api/forms.py
  4. 2
      sapl/api/serializers.py
  5. 5
      sapl/api/views.py
  6. 5
      sapl/base/search_indexes.py
  7. 7
      sapl/legacy/migracao_documentos.py
  8. 4
      sapl/legacy/migration.py
  9. 4
      sapl/materia/signals.py
  10. 2
      sapl/materia/views.py
  11. 4
      sapl/norma/signals.py
  12. 14
      sapl/painel/views.py
  13. 2
      sapl/parlamentares/models.py
  14. 15
      sapl/parlamentares/urls.py
  15. 2
      sapl/parlamentares/views.py
  16. 5
      sapl/relatorios/views.py
  17. 4
      sapl/rules/tests/test_rules.py
  18. 1
      sapl/sessao/serializers.py
  19. 17
      sapl/sessao/urls.py
  20. 49
      sapl/sessao/views.py
  21. 13
      sapl/utils.py

5
create_admin.py

@ -1,11 +1,12 @@
import sys
import os
import sys
import django
from django.contrib.auth.models import User
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "sapl.settings")
django.setup()
from django.contrib.auth.models import User
def create_superuser():
username = "admin"

1
genkey.py

@ -1,5 +1,6 @@
import random
def generate_secret():
return ''.join([random.SystemRandom().choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)') for i in range(50)])

4
sapl/api/forms.py

@ -1,6 +1,6 @@
from django.db.models import Q
from django.forms.fields import MultiValueField, CharField
from django.forms.widgets import TextInput, MultiWidget
from django.forms.fields import CharField, MultiValueField
from django.forms.widgets import MultiWidget, TextInput
from django_filters.filters import MethodFilter, ModelChoiceFilter
from rest_framework.compat import django_filters
from rest_framework.filters import FilterSet

2
sapl/api/serializers.py

@ -2,7 +2,7 @@ from rest_framework import serializers
from sapl.base.models import Autor, CasaLegislativa
from sapl.materia.models import MateriaLegislativa
from sapl.sessao.models import SessaoPlenaria, OrdemDia
from sapl.sessao.models import OrdemDia, SessaoPlenaria
class ChoiceSerializer(serializers.Serializer):

5
sapl/api/views.py

@ -5,9 +5,8 @@ from django.utils.translation import ugettext_lazy as _
from rest_framework.filters import DjangoFilterBackend
from rest_framework.generics import ListAPIView
from rest_framework.mixins import ListModelMixin, RetrieveModelMixin
from rest_framework.permissions import (IsAuthenticated,
IsAuthenticatedOrReadOnly,
AllowAny)
from rest_framework.permissions import (AllowAny, IsAuthenticated,
IsAuthenticatedOrReadOnly)
from rest_framework.viewsets import GenericViewSet, ModelViewSet
from sapl.api.forms import AutorChoiceFilterSet, AutorSearchForFieldFilterSet

5
sapl/base/search_indexes.py

@ -4,13 +4,12 @@ import os.path
import textract
from django.template import Context, loader
from haystack import indexes
from textract.exceptions import ExtensionNotSupported
from sapl.materia.models import DocumentoAcessorio, MateriaLegislativa
from sapl.norma.models import NormaJuridica
from textract.exceptions import ExtensionNotSupported
from sapl.settings import BASE_DIR
logger = logging.getLogger(BASE_DIR.name)
class DocumentoAcessorioIndex(indexes.SearchIndex, indexes.Indexable):

7
sapl/legacy/migracao_documentos.py

@ -3,20 +3,19 @@ import os
import re
import magic
from django.db.models.signals import post_delete, post_save
from sapl.base.models import CasaLegislativa
from sapl.materia.models import (DocumentoAcessorio, MateriaLegislativa,
Proposicao)
from sapl.norma.models import NormaJuridica
from sapl.parlamentares.models import Parlamentar
from sapl.protocoloadm.models import DocumentoAdministrativo
from sapl.protocoloadm.models import DocumentoAcessorioAdministrativo
from sapl.protocoloadm.models import (DocumentoAcessorioAdministrativo,
DocumentoAdministrativo)
from sapl.sessao.models import SessaoPlenaria
from sapl.settings import MEDIA_ROOT
from sapl.utils import delete_texto, save_texto
# MIGRAÇÃO DE DOCUMENTOS ###################################################
EXTENSOES = {
'application/msword': '.doc',

4
sapl/legacy/migration.py

@ -24,8 +24,8 @@ from sapl.materia.models import (DocumentoAcessorio, MateriaLegislativa,
StatusTramitacao, TipoDocumento,
TipoMateriaLegislativa, TipoProposicao,
Tramitacao)
from sapl.norma.models import (AssuntoNorma, NormaJuridica,
TipoVinculoNormaJuridica, NormaRelacionada)
from sapl.norma.models import (AssuntoNorma, NormaJuridica, NormaRelacionada,
TipoVinculoNormaJuridica)
from sapl.parlamentares.models import Parlamentar, TipoAfastamento
from sapl.protocoloadm.models import Protocolo, StatusTramitacaoAdministrativo
from sapl.sessao.models import ExpedienteMateria, OrdemDia, RegistroVotacao

4
sapl/materia/signals.py

@ -1,8 +1,8 @@
from django.db.models.signals import post_delete, post_save
from sapl.utils import save_texto, delete_texto
from .models import DocumentoAcessorio, MateriaLegislativa
from sapl.utils import delete_texto, save_texto
from .models import DocumentoAcessorio, MateriaLegislativa
post_save.connect(save_texto, sender=MateriaLegislativa)
post_save.connect(save_texto, sender=DocumentoAcessorio)

2
sapl/materia/views.py

@ -7,7 +7,7 @@ from crispy_forms.layout import HTML
from django.contrib import messages
from django.contrib.auth.decorators import permission_required
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
from django.core.mail import send_mail
from django.core.urlresolvers import reverse
from django.http import HttpResponse, JsonResponse

4
sapl/norma/signals.py

@ -1,8 +1,8 @@
from django.db.models.signals import post_delete, post_save
from sapl.utils import save_texto, delete_texto
from .models import NormaJuridica
from sapl.utils import delete_texto, save_texto
from .models import NormaJuridica
post_save.connect(save_texto, sender=NormaJuridica)
post_delete.connect(delete_texto, sender=NormaJuridica)

14
sapl/painel/views.py

@ -102,6 +102,7 @@ def votante_view(request, pk):
'Nenhuma matéria com votação nominal aberta.'})
# Recupera o voto do parlamentar logado
voto = []
if ordem_dia:
voto = VotoParlamentar.objects.filter(
ordem=ordem_dia)
@ -109,12 +110,13 @@ def votante_view(request, pk):
voto = VotoParlamentar.objects.filter(
expediente=expediente)
try:
voto = voto.get(parlamentar=parlamentar)
except ObjectDoesNotExist:
context.update({'voto_parlamentar': 'Voto não computado.'})
else:
context.update({'voto_parlamentar': voto.voto})
if voto:
try:
voto = voto.get(parlamentar=parlamentar)
except ObjectDoesNotExist:
context.update({'voto_parlamentar': 'Voto não computado.'})
else:
context.update({'voto_parlamentar': voto.voto})
# Salva o voto
if request.method == 'POST':

2
sapl/parlamentares/models.py

@ -1,9 +1,9 @@
from datetime import datetime
import reversion
from django.db import models
from django.utils.translation import ugettext_lazy as _
from model_utils import Choices
import reversion
from sapl.base.models import Autor
from sapl.utils import (INDICADOR_AFASTAMENTO, UF, YES_NO_CHOICES,

15
sapl/parlamentares/urls.py

@ -1,22 +1,21 @@
from django.conf.urls import include, url
from sapl.parlamentares.views import (altera_field_mesa,
altera_field_mesa_public_view,
CargoMesaCrud, ColigacaoCrud,
from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud,
ComposicaoColigacaoCrud, DependenteCrud,
FiliacaoCrud, FrenteCrud, FrenteList,
LegislaturaCrud,
insere_parlamentar_composicao,
MandatoCrud,
LegislaturaCrud, MandatoCrud,
MesaDiretoraView, NivelInstrucaoCrud,
ParlamentarCrud,
ParticipacaoParlamentarCrud, PartidoCrud,
ProposicaoParlamentarCrud,
RelatoriaParlamentarCrud,
remove_parlamentar_composicao,
SessaoLegislativaCrud,
TipoAfastamentoCrud, TipoDependenteCrud,
TipoMilitarCrud, VotanteView)
TipoMilitarCrud, VotanteView,
altera_field_mesa,
altera_field_mesa_public_view,
insere_parlamentar_composicao,
remove_parlamentar_composicao)
from .apps import AppConfig

2
sapl/parlamentares/views.py

@ -1,5 +1,5 @@
from django.contrib import messages
from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
from django.core.urlresolvers import reverse, reverse_lazy
from django.db.models import F, Q
from django.http import JsonResponse

5
sapl/relatorios/views.py

@ -1,7 +1,6 @@
from datetime import datetime
import re
import html
import re
from datetime import datetime
from django.core.exceptions import ObjectDoesNotExist
from django.http import Http404, HttpResponse

4
sapl/rules/tests/test_rules.py

@ -6,8 +6,8 @@ from django.contrib.contenttypes.models import ContentType
from django.utils import six
from django.utils.translation import ugettext_lazy as _
from sapl.base.models import (CasaLegislativa, ProblemaMigracao, Argumento,
Constraint)
from sapl.base.models import (Argumento, CasaLegislativa, Constraint,
ProblemaMigracao)
from sapl.compilacao.models import (PerfilEstruturalTextoArticulado,
TipoDispositivo,
TipoDispositivoRelationship)

1
sapl/sessao/serializers.py

@ -2,6 +2,7 @@ from rest_framework import serializers
from .models import SessaoPlenaria
class SessaoPlenariaSerializer(serializers.Serializer):
class Meta:
model = SessaoPlenaria

17
sapl/sessao/urls.py

@ -1,8 +1,8 @@
from django.conf.urls import include, url
from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
AdicionarVariasMateriasOrdemDia,
BancadaCrud, BlocoCrud, CargoBancadaCrud,
AdicionarVariasMateriasOrdemDia, BancadaCrud,
BlocoCrud, CargoBancadaCrud,
ExpedienteMateriaCrud, ExpedienteView,
MateriaOrdemDiaCrud, MesaView, OradorCrud,
OradorExpedienteCrud, PainelView,
@ -11,18 +11,17 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
PesquisarPautaSessaoView,
PesquisarSessaoPlenariaView,
PresencaOrdemDiaView, PresencaView,
ResumoOrdenacaoView, ResumoView,
SessaoCrud, TipoExpedienteCrud,
TipoResultadoVotacaoCrud, TipoSessaoCrud,
VotacaoEditView, VotacaoExpedienteEditView,
ResumoOrdenacaoView, ResumoView, SessaoCrud,
TipoExpedienteCrud, TipoResultadoVotacaoCrud,
TipoSessaoCrud, VotacaoEditView,
VotacaoExpedienteEditView,
VotacaoExpedienteView, VotacaoNominalEditView,
VotacaoNominalExpedienteEditView,
VotacaoNominalExpedienteDetailView,
VotacaoNominalExpedienteEditView,
VotacaoNominalExpedienteView,
VotacaoNominalView, VotacaoView,
abrir_votacao_expediente_view,
abrir_votacao_ordem_view,
atualizar_mesa,
abrir_votacao_ordem_view, atualizar_mesa,
insere_parlamentar_composicao,
mudar_ordem_materia_sessao, recuperar_materia,
recuperar_numero_sessao,

49
sapl/sessao/views.py

@ -37,9 +37,8 @@ from sapl.sessao.forms import ExpedienteMateriaForm, OrdemDiaForm
from .forms import (AdicionarVariasMateriasFilterSet, ExpedienteForm,
ListMateriaForm, MesaForm, OradorExpedienteForm,
OradorForm, PautaSessaoFilterSet, PresencaForm,
ResumoOrdenacaoForm,
SessaoPlenariaFilterSet, VotacaoEditForm, VotacaoForm,
VotacaoNominalForm)
ResumoOrdenacaoForm, SessaoPlenariaFilterSet,
VotacaoEditForm, VotacaoForm, VotacaoNominalForm)
from .models import (Bancada, Bloco, CargoBancada, CargoMesa,
ExpedienteMateria, ExpedienteSessao, IntegranteMesa,
MateriaLegislativa, Orador, OradorExpediente, OrdemDia,
@ -1584,6 +1583,8 @@ def fechar_votacao_materia(materia):
for r in registro_votacao:
r.delete()
if materia.resultado:
materia.resultado = ''
materia.votacao_aberta = False
materia.save()
@ -1607,8 +1608,9 @@ class VotacaoNominalAbstract(SessaoPermissionMixin):
except ObjectDoesNotExist:
raise Http404()
total = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=ordem.sessao_plenaria_id).count()
presentes = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=ordem.sessao_plenaria_id)
total = presentes.count()
materia_votacao = ordem
@ -1627,8 +1629,9 @@ class VotacaoNominalAbstract(SessaoPermissionMixin):
except ObjectDoesNotExist:
raise Http404()
total = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=expediente.sessao_plenaria_id).count()
presentes = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=expediente.sessao_plenaria_id)
total = presentes.count()
materia_votacao = expediente
@ -1637,10 +1640,9 @@ class VotacaoNominalAbstract(SessaoPermissionMixin):
' ', ' ', strip_tags(
materia_votacao.observacao))}
context = {'materia': materia, 'object': self.get_object(),
'parlamentares': self.get_parlamentares(
materia_votacao.materia),
'tipos': self.get_tipos_votacao(),
'total': total}
'parlamentares': self.get_parlamentares(presentes),
'tipos': self.get_tipos_votacao(),
'total': total}
return self.render_to_response(context)
@ -1754,12 +1756,9 @@ class VotacaoNominalAbstract(SessaoPermissionMixin):
else:
return self.form_invalid(form)
def get_parlamentares(self, materia):
def get_parlamentares(self, presencas):
self.object = self.get_object()
presencas = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.object.id
)
presentes = [p.parlamentar for p in presencas]
if self.ordem:
@ -1858,7 +1857,7 @@ class VotacaoNominalEditAbstract(SessaoPermissionMixin):
ordem_id = kwargs['oid']
try:
ordem = OrdemDia.objects.get(id=ordem_id)
materia_votacao = OrdemDia.objects.get(id=ordem_id)
except ObjectDoesNotExist:
raise Http404()
@ -1866,25 +1865,13 @@ class VotacaoNominalEditAbstract(SessaoPermissionMixin):
expediente_id = kwargs['oid']
try:
expediente = ExpedienteMateria.objects.get(id=expediente_id)
materia_votacao = ExpedienteMateria.objects.get(
id=expediente_id)
except ObjectDoesNotExist:
raise Http404()
if(int(request.POST['anular_votacao']) == 1):
if self.ordem:
registro = RegistroVotacao.objects.get(
ordem=ordem)
materia_votacao = registro.ordem
elif self.expediente:
registro = RegistroVotacao.objects.get(
expediente=expediente)
materia_votacao = registro.expediente
materia_votacao.resultado = ''
materia_votacao.votacao_aberta = False
materia_votacao.save()
registro.delete()
fechar_votacao_materia(materia_votacao)
return self.form_valid(form)

13
sapl/utils.py

@ -1,13 +1,15 @@
import hashlib
import logging
import os
import re
from datetime import date
from functools import wraps
from subprocess import PIPE, call
from threading import Thread
from unicodedata import normalize as unicodedata_normalize
import hashlib
import logging
import os
import re
import django_filters
import magic
from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Button
from django import forms
@ -20,13 +22,10 @@ from django.core.exceptions import ValidationError
from django.utils.translation import ugettext_lazy as _
from floppyforms import ClearableFileInput
from reversion.admin import VersionAdmin
import django_filters
import magic
from sapl.crispy_layout_mixin import SaplFormLayout, form_actions, to_row
from sapl.settings import BASE_DIR, PROJECT_DIR
sapl_logger = logging.getLogger(BASE_DIR.name)

Loading…
Cancel
Save