Browse Source

Corrige erros de PEP 8 com autopep8

Correções feitas usando o scrip fix_qa.sh na raiz do projeto
que agora contém a linha

autopep8 --in-place --recursive . --exclude='migrations,ipython_log.py*'
pull/1416/head
Marcio Mazza 7 years ago
parent
commit
0677a85471
  1. 10
      create_admin.py
  2. 23
      sapl/api/serializers.py
  3. 2
      sapl/base/search_indexes.py
  4. 2
      sapl/base/templatetags/common_tags.py
  5. 6
      sapl/base/tests/teststub_urls.py
  6. 8
      sapl/comissoes/views.py
  7. 1
      sapl/compilacao/templatetags/compilacao_filters.py
  8. 2
      sapl/legacy/management/commands/migracao_25_31.py
  9. 2
      sapl/legacy/management/commands/migracao_documentos.py
  10. 2
      sapl/legacy/migracao_documentos.py
  11. 19
      sapl/legacy/migration.py
  12. 11
      sapl/legacy/scripts/street_sweeper.py
  13. 1
      sapl/materia/admin.py
  14. 3
      sapl/materia/email_utils.py
  15. 10
      sapl/materia/views.py
  16. 8
      sapl/norma/models.py
  17. 8
      sapl/parlamentares/forms.py
  18. 43
      sapl/protocoloadm/views.py
  19. 6
      sapl/redireciona_urls/exceptions.py
  20. 47
      sapl/redireciona_urls/tests.py
  21. 227
      sapl/relatorios/templates/pdf_capa_processo_preparar_pysc.py
  22. 456
      sapl/relatorios/templates/pdf_detalhe_materia_gerar.py
  23. 457
      sapl/relatorios/templates/pdf_detalhe_materia_preparar_pysc.py
  24. 221
      sapl/relatorios/templates/pdf_documento_administrativo_preparar_pysc.py
  25. 241
      sapl/relatorios/templates/pdf_espelho_gerar.py
  26. 290
      sapl/relatorios/templates/pdf_espelho_preparar_pysc.py
  27. 210
      sapl/relatorios/templates/pdf_etiqueta_protocolo_preparar_pysc.py
  28. 152
      sapl/relatorios/templates/pdf_materia_gerar.py
  29. 272
      sapl/relatorios/templates/pdf_materia_preparar_pysc.py
  30. 164
      sapl/relatorios/templates/pdf_norma_gerar.py
  31. 153
      sapl/relatorios/templates/pdf_norma_preparar_pysc.py
  32. 180
      sapl/relatorios/templates/pdf_ordem_dia_preparar_pysc.py
  33. 4
      sapl/relatorios/templates/pdf_pauta_sessao_gerar.py
  34. 183
      sapl/relatorios/templates/pdf_pauta_sessao_preparar_pysc.py
  35. 189
      sapl/relatorios/templates/pdf_protocolo_gerar.py
  36. 217
      sapl/relatorios/templates/pdf_protocolo_preparar_pysc.py
  37. 20
      sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py
  38. 285
      sapl/relatorios/templates/pdf_sessao_plenaria_preparar_pysc.py
  39. 28
      sapl/relatorios/views.py
  40. 8
      sapl/sessao/forms.py
  41. 13
      sapl/sessao/models.py
  42. 1
      sapl/sessao/serializers.py
  43. 89
      sapl/sessao/views.py

10
create_admin.py

@ -7,11 +7,13 @@ from sapl import settings
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "sapl.settings") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "sapl.settings")
def create_superuser(): def create_superuser():
from django.contrib.auth.models import User from django.contrib.auth.models import User
username = "admin" username = "admin"
password = os.environ['ADMIN_PASSWORD'] if 'ADMIN_PASSWORD' in os.environ else None password = os.environ[
'ADMIN_PASSWORD'] if 'ADMIN_PASSWORD' in os.environ else None
email = os.environ['ADMIN_EMAIL'] if 'ADMIN_EMAIL' in os.environ else '' email = os.environ['ADMIN_EMAIL'] if 'ADMIN_EMAIL' in os.environ else ''
if User.objects.filter(username=username).exists(): if User.objects.filter(username=username).exists():
@ -19,12 +21,14 @@ def create_superuser():
sys.exit('ADMIN_USER_EXISTS') sys.exit('ADMIN_USER_EXISTS')
else: else:
if not password: if not password:
print("[SUPERUSER] Environment variable $ADMIN_PASSWORD for user %s was not set. Leaving..." % username) print(
"[SUPERUSER] Environment variable $ADMIN_PASSWORD for user %s was not set. Leaving..." % username)
sys.exit('MISSING_ADMIN_PASSWORD') sys.exit('MISSING_ADMIN_PASSWORD')
print("[SUPERUSER] Creating superuser...") print("[SUPERUSER] Creating superuser...")
u = User.objects.create_superuser(username=username, password=password, email=email) u = User.objects.create_superuser(
username=username, password=password, email=email)
u.save() u.save()
print("[SUPERUSER] Done.") print("[SUPERUSER] Done.")

23
sapl/api/serializers.py

@ -64,14 +64,18 @@ class SessaoPlenariaSerializer(serializers.ModelSerializer):
txtSiglaOrgao = serializers.SerializerMethodField('get_sigla_orgao') txtSiglaOrgao = serializers.SerializerMethodField('get_sigla_orgao')
txtApelido = serializers.SerializerMethodField('get_name') txtApelido = serializers.SerializerMethodField('get_name')
txtNomeOrgao = serializers.SerializerMethodField('get_nome_orgao') txtNomeOrgao = serializers.SerializerMethodField('get_nome_orgao')
codEstadoReuniao = serializers.SerializerMethodField('get_estadoSessaoPlenaria') codEstadoReuniao = serializers.SerializerMethodField(
'get_estadoSessaoPlenaria')
txtTipoReuniao = serializers.SerializerMethodField('get_tipo_sessao') txtTipoReuniao = serializers.SerializerMethodField('get_tipo_sessao')
txtObjeto = serializers.SerializerMethodField('get_assunto_sessao') txtObjeto = serializers.SerializerMethodField('get_assunto_sessao')
txtLocal = serializers.SerializerMethodField('get_endereco_orgao') txtLocal = serializers.SerializerMethodField('get_endereco_orgao')
bolReuniaoConjunta = serializers.SerializerMethodField('get_reuniao_conjunta') bolReuniaoConjunta = serializers.SerializerMethodField(
bolHabilitarEventoInterativo = serializers.SerializerMethodField('get_iterativo') 'get_reuniao_conjunta')
bolHabilitarEventoInterativo = serializers.SerializerMethodField(
'get_iterativo')
idYoutube = serializers.SerializerMethodField('get_url') idYoutube = serializers.SerializerMethodField('get_url')
codEstadoTransmissaoYoutube = serializers.SerializerMethodField('get_estadoTransmissaoYoutube') codEstadoTransmissaoYoutube = serializers.SerializerMethodField(
'get_estadoTransmissaoYoutube')
datReuniaoString = serializers.SerializerMethodField('get_date') datReuniaoString = serializers.SerializerMethodField('get_date')
# Constantes SessaoPlenaria (de 1-9) (apenas 3 serão usados) # Constantes SessaoPlenaria (de 1-9) (apenas 3 serão usados)
@ -80,9 +84,9 @@ class SessaoPlenariaSerializer(serializers.ModelSerializer):
SESSAO_CONVOCADA = 2 SESSAO_CONVOCADA = 2
# Constantes EstadoTranmissaoYoutube (de 0 a 2) # Constantes EstadoTranmissaoYoutube (de 0 a 2)
TRANSMISSAO_ENCERRADA = 2 TRANSMISSAO_ENCERRADA = 2
TRANSMISSAO_EM_ANDAMENTO = 1 TRANSMISSAO_EM_ANDAMENTO = 1
SEM_TRANSMISSAO = 0 SEM_TRANSMISSAO = 0
class Meta: class Meta:
model = SessaoPlenaria model = SessaoPlenaria
@ -102,7 +106,7 @@ class SessaoPlenariaSerializer(serializers.ModelSerializer):
'idYoutube', 'idYoutube',
'codEstadoTransmissaoYoutube', 'codEstadoTransmissaoYoutube',
'datReuniaoString' 'datReuniaoString'
) )
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(SessaoPlenariaSerializer, self).__init__(args, kwargs) super(SessaoPlenariaSerializer, self).__init__(args, kwargs)
@ -136,7 +140,7 @@ class SessaoPlenariaSerializer(serializers.ModelSerializer):
obj.data_inicio.strftime("%d/%m/%Y"), obj.data_inicio.strftime("%d/%m/%Y"),
obj.hora_inicio, obj.hora_inicio,
":00" ":00"
) )
def get_estadoTransmissaoYoutube(self, obj): def get_estadoTransmissaoYoutube(self, obj):
if obj.url_video: if obj.url_video:
@ -146,6 +150,7 @@ class SessaoPlenariaSerializer(serializers.ModelSerializer):
return self.TRANSMISSAO_EM_ANDAMENTO return self.TRANSMISSAO_EM_ANDAMENTO
else: else:
return self.SEM_TRANSMISSAO return self.SEM_TRANSMISSAO
def get_assunto_sessao(self, obj): def get_assunto_sessao(self, obj):
pauta_sessao = '' pauta_sessao = ''
ordem_dia = OrdemDia.objects.filter(sessao_plenaria=obj.pk) ordem_dia = OrdemDia.objects.filter(sessao_plenaria=obj.pk)

2
sapl/base/search_indexes.py

@ -126,4 +126,4 @@ class NormaJuridicaIndex(DocumentoAcessorioIndex):
template_name = 'norma/normajuridica_text.txt' template_name = 'norma/normajuridica_text.txt'
def get_updated_field(self): def get_updated_field(self):
return 'data_ultima_atualizacao' return 'data_ultima_atualizacao'

2
sapl/base/templatetags/common_tags.py

@ -117,6 +117,7 @@ def str2intabs(value):
except: except:
return '' return ''
@register.filter @register.filter
def has_iframe(request): def has_iframe(request):
@ -181,6 +182,7 @@ def urldetail(obj):
return '%s:%s_detail' % ( return '%s:%s_detail' % (
obj._meta.app_config.name, obj._meta.model_name) obj._meta.app_config.name, obj._meta.model_name)
@register.filter @register.filter
def filiacao_data_filter(parlamentar, data_inicio): def filiacao_data_filter(parlamentar, data_inicio):
return filiacao_data(parlamentar, data_inicio) return filiacao_data(parlamentar, data_inicio)

6
sapl/base/tests/teststub_urls.py

@ -4,7 +4,7 @@ from django.views.generic.base import TemplateView
from sapl.urls import urlpatterns as original_patterns from sapl.urls import urlpatterns as original_patterns
urlpatterns = original_patterns + patterns('', url(r'^zzzz$', urlpatterns = original_patterns + patterns('', url(r'^zzzz$',
TemplateView.as_view( TemplateView.as_view(
template_name='index.html'), template_name='index.html'),
name='zzzz') name='zzzz')
) )

8
sapl/comissoes/views.py

@ -72,7 +72,7 @@ class ComposicaoCrud(MasterDetailCrud):
context['participacao_set'] = Participacao.objects.filter( context['participacao_set'] = Participacao.objects.filter(
composicao__pk=context['composicao_pk'] composicao__pk=context['composicao_pk']
).order_by('parlamentar') ).order_by('parlamentar')
return context return context
@ -82,21 +82,23 @@ class ComissaoCrud(Crud):
public = [RP_LIST, RP_DETAIL, ] public = [RP_LIST, RP_DETAIL, ]
class BaseMixin(Crud.BaseMixin): class BaseMixin(Crud.BaseMixin):
list_field_names = ['nome', 'sigla', 'tipo', 'data_criacao', 'data_extincao', 'ativa'] list_field_names = ['nome', 'sigla', 'tipo',
'data_criacao', 'data_extincao', 'ativa']
ordering = '-ativa', 'sigla' ordering = '-ativa', 'sigla'
class ListView(Crud.ListView): class ListView(Crud.ListView):
@xframe_options_exempt @xframe_options_exempt
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
return super().get(request, *args, **kwargs) return super().get(request, *args, **kwargs)
class DetailView(Crud.DetailView): class DetailView(Crud.DetailView):
@xframe_options_exempt @xframe_options_exempt
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
return super().get(request, *args, **kwargs) return super().get(request, *args, **kwargs)
class MateriasTramitacaoListView(ListView): class MateriasTramitacaoListView(ListView):
template_name = "comissoes/materias_em_tramitacao.html" template_name = "comissoes/materias_em_tramitacao.html"
paginate_by = 10 paginate_by = 10

1
sapl/compilacao/templatetags/compilacao_filters.py

@ -286,7 +286,6 @@ def nomenclatura_heranca(d, ignore_ultimo=0, ignore_primeiro=0):
return result return result
@register.filter @register.filter
def list(obj): def list(obj):
return [obj, ] return [obj, ]

2
sapl/legacy/management/commands/migracao_25_31.py

@ -5,7 +5,7 @@ from sapl.legacy import migration
class Command(BaseCommand): class Command(BaseCommand):
help ='Migração de dados do SAPL 2.5 para o SAPL 3.1' help = 'Migração de dados do SAPL 2.5 para o SAPL 3.1'
def add_arguments(self, parser): def add_arguments(self, parser):
parser.add_argument( parser.add_argument(

2
sapl/legacy/management/commands/migracao_documentos.py

@ -5,7 +5,7 @@ from sapl.legacy.migracao_documentos import migrar_documentos
class Command(BaseCommand): class Command(BaseCommand):
help ='Migração documentos do SAPL 2.5 para o SAPL 3.1' help = 'Migração documentos do SAPL 2.5 para o SAPL 3.1'
def handle(self, *args, **options): def handle(self, *args, **options):
migrar_documentos() migrar_documentos()

2
sapl/legacy/migracao_documentos.py

@ -205,7 +205,7 @@ def migrar_documentos():
SessaoPlenaria, SessaoPlenaria,
Proposicao, Proposicao,
DocumentoAdministrativo, DocumentoAdministrativo,
DocumentoAcessorioAdministrativo, DocumentoAcessorioAdministrativo,
]: ]:
migrar_docs_por_ids(tipo) migrar_docs_por_ids(tipo)

19
sapl/legacy/migration.py

@ -162,7 +162,7 @@ def get_fk_related(field, value, label=None):
value = TipoProposicao.objects.create( value = TipoProposicao.objects.create(
id=value, descricao='Erro', content_type=ct) id=value, descricao='Erro', content_type=ct)
ultimo_valor = get_last_value(type(value)) ultimo_valor = get_last_value(type(value))
alter_sequence(type(value), ultimo_valor+1) alter_sequence(type(value), ultimo_valor + 1)
else: else:
value = tipo[0] value = tipo[0]
else: else:
@ -252,7 +252,7 @@ def problema_duplicatas(model, lista_duplicatas, argumentos):
string_pks = "" string_pks = ""
problema = "%s de PK %s não é único." % (model.__name__, obj.pk) problema = "%s de PK %s não é único." % (model.__name__, obj.pk)
args_dict = {k: obj.__dict__[k] args_dict = {k: obj.__dict__[k]
for k in set(argumentos) & set(obj.__dict__.keys())} for k in set(argumentos) & set(obj.__dict__.keys())}
for dup in model.objects.filter(**args_dict): for dup in model.objects.filter(**args_dict):
pks.append(dup.pk) pks.append(dup.pk)
string_pks = "(" + ", ".join(map(str, pks)) + ")" string_pks = "(" + ", ".join(map(str, pks)) + ")"
@ -407,7 +407,7 @@ def fill_vinculo_norma_juridica():
'Julgada parcialmente inconstitucional')] 'Julgada parcialmente inconstitucional')]
lista_objs = [TipoVinculoNormaJuridica( lista_objs = [TipoVinculoNormaJuridica(
sigla=item[0], descricao_ativa=item[1], descricao_passiva=item[2]) sigla=item[0], descricao_ativa=item[1], descricao_passiva=item[2])
for item in lista] for item in lista]
TipoVinculoNormaJuridica.objects.bulk_create(lista_objs) TipoVinculoNormaJuridica.objects.bulk_create(lista_objs)
@ -610,7 +610,7 @@ class DataMigrator:
# necessário para ajustar sequence da tabela para o ultimo valor de id # necessário para ajustar sequence da tabela para o ultimo valor de id
ultimo_valor = get_last_value(model) ultimo_valor = get_last_value(model)
alter_sequence(model, ultimo_valor+1) alter_sequence(model, ultimo_valor + 1)
def delete_ind_excluido(self): def delete_ind_excluido(self):
excluidos = 0 excluidos = 0
@ -665,15 +665,15 @@ def adjust_documentoadministrativo(new, old):
except Exception: except Exception:
try: try:
protocolo = Protocolo.objects.get(numero=new.numero_protocolo, protocolo = Protocolo.objects.get(numero=new.numero_protocolo,
ano=new.ano+1) ano=new.ano + 1)
new.protocolo = protocolo new.protocolo = protocolo
except Exception: except Exception:
protocolo = mommy.make(Protocolo, numero=new.numero_protocolo, protocolo = mommy.make(Protocolo, numero=new.numero_protocolo,
ano=new.ano) ano=new.ano)
with reversion.create_revision(): with reversion.create_revision():
problema = 'Protocolo Vinculado [numero_protocolo=%s, '\ problema = 'Protocolo Vinculado [numero_protocolo=%s, '\
'ano=%s] não existe' % (new.numero_protocolo, 'ano=%s] não existe' % (new.numero_protocolo,
new.ano) new.ano)
descricao = 'O protocolo inexistente foi criado' descricao = 'O protocolo inexistente foi criado'
warn(problema + ' => ' + descricao) warn(problema + ' => ' + descricao)
save_relation(obj=protocolo, problema=problema, save_relation(obj=protocolo, problema=problema,
@ -751,7 +751,7 @@ def adjust_proposicao_antes_salvar(new, old):
def adjust_proposicao_depois_salvar(new, old): def adjust_proposicao_depois_salvar(new, old):
if not hasattr(old.dat_envio, 'year') or old.dat_envio.year == 1800: if not hasattr(old.dat_envio, 'year') or old.dat_envio.year == 1800:
msg = "O valor do campo data_envio (DateField) da model Proposicao"\ msg = "O valor do campo data_envio (DateField) da model Proposicao"\
" era inválido" " era inválido"
descricao = 'A data 1111-11-11 foi colocada no lugar' descricao = 'A data 1111-11-11 foi colocada no lugar'
problema = 'O valor da data era nulo ou inválido' problema = 'O valor da data era nulo ou inválido'
warn(msg + ' => ' + descricao) warn(msg + ' => ' + descricao)
@ -816,7 +816,6 @@ def adjust_tipoafastamento(new, old):
new.indicador = 'A' new.indicador = 'A'
def adjust_tipoproposicao(new, old): def adjust_tipoproposicao(new, old):
if old.ind_mat_ou_doc == 'M': if old.ind_mat_ou_doc == 'M':
new.tipo_conteudo_related = TipoMateriaLegislativa.objects.get( new.tipo_conteudo_related = TipoMateriaLegislativa.objects.get(
@ -870,7 +869,7 @@ def adjust_autor(new, old):
except Exception: except Exception:
with reversion.create_revision(): with reversion.create_revision():
msg = 'Um parlamentar relacionado de PK [%s] não existia' \ msg = 'Um parlamentar relacionado de PK [%s] não existia' \
% old.cod_parlamentar % old.cod_parlamentar
reversion.set_comment('Stub criado pela migração') reversion.set_comment('Stub criado pela migração')
value = make_stub(Parlamentar, old.cod_parlamentar) value = make_stub(Parlamentar, old.cod_parlamentar)
descricao = 'stub criado para entrada orfã!' descricao = 'stub criado para entrada orfã!'

11
sapl/legacy/scripts/street_sweeper.py

@ -19,7 +19,7 @@ EXCLUI_REGISTRO = "DELETE FROM %s WHERE ind_excluido=1"
NORMA_DEP = "DELETE FROM vinculo_norma_juridica WHERE cod_norma_referente in (%s) OR \ NORMA_DEP = "DELETE FROM vinculo_norma_juridica WHERE cod_norma_referente in (%s) OR \
cod_norma_referida in (%s) AND ind_excluido = 0 " cod_norma_referida in (%s) AND ind_excluido = 0 "
mapa = {} # mapa com tabela principal -> tabelas dependentes mapa = {} # mapa com tabela principal -> tabelas dependentes
mapa['tipo_autor'] = ['autor'] mapa['tipo_autor'] = ['autor']
mapa['materia_legislativa'] = ['acomp_materia', 'autoria', 'despacho_inicial', mapa['materia_legislativa'] = ['acomp_materia', 'autoria', 'despacho_inicial',
@ -43,6 +43,7 @@ mapa['parlamentar'] = ['autor', 'autoria', 'composicao_comissao',
'sessao_plenaria_presenca', 'unidade_tramitacao'] 'sessao_plenaria_presenca', 'unidade_tramitacao']
""" """
def get_ids_excluidos(cursor, query): def get_ids_excluidos(cursor, query):
""" """
recupera as PKs de registros com ind_excluido = 1 da tabela principal recupera as PKs de registros com ind_excluido = 1 da tabela principal
@ -58,7 +59,8 @@ def remove_tabelas(cursor, tabela_principal, pk, query_dependentes=None):
QUERY = SELECT_EXCLUIDOS % (pk, tabela_principal, pk) QUERY = SELECT_EXCLUIDOS % (pk, tabela_principal, pk)
ids_excluidos = get_ids_excluidos(cursor, QUERY) ids_excluidos = get_ids_excluidos(cursor, QUERY)
print("\nRegistros da tabela '%s' com ind_excluido = 1: %s" % (tabela_principal.upper(), len(ids_excluidos))) print("\nRegistros da tabela '%s' com ind_excluido = 1: %s" %
(tabela_principal.upper(), len(ids_excluidos)))
""" """
Remove registros de tabelas que dependem da tabela principal, Remove registros de tabelas que dependem da tabela principal,
@ -69,12 +71,13 @@ def remove_tabelas(cursor, tabela_principal, pk, query_dependentes=None):
print("Dependencias inconsistentes") print("Dependencias inconsistentes")
for tabela in mapa[tabela_principal]: for tabela in mapa[tabela_principal]:
QUERY_DEP = REGISTROS_INCONSISTENTES % (tabela, pk, ','.join(ids_excluidos)) QUERY_DEP = REGISTROS_INCONSISTENTES % (
tabela, pk, ','.join(ids_excluidos))
# Trata caso especifico de norma_juridica # Trata caso especifico de norma_juridica
if query_dependentes: if query_dependentes:
QUERY_DEP = query_dependentes % (','.join(ids_excluidos), QUERY_DEP = query_dependentes % (','.join(ids_excluidos),
','.join(ids_excluidos)) ','.join(ids_excluidos))
print(tabela.upper(), cursor.execute(QUERY_DEP)) print(tabela.upper(), cursor.execute(QUERY_DEP))

1
sapl/materia/admin.py

@ -11,6 +11,7 @@ if not DEBUG:
admin.site.unregister(Proposicao) admin.site.unregister(Proposicao)
class ProposicaoAdmin(admin.ModelAdmin): class ProposicaoAdmin(admin.ModelAdmin):
def has_add_permission(self, request, obj=None): def has_add_permission(self, request, obj=None):
return False return False

3
sapl/materia/email_utils.py

@ -206,6 +206,7 @@ def do_envia_email_tramitacao(base_url, materia, status, unidade_destino):
# a conexão será fechada # a conexão será fechada
except Exception: except Exception:
connection.close() connection.close()
raise Exception('Erro ao enviar e-mail de acompanhamento de matéria.') raise Exception(
'Erro ao enviar e-mail de acompanhamento de matéria.')
connection.close() connection.close()

10
sapl/materia/views.py

@ -1060,11 +1060,11 @@ class DocumentoAcessorioCrud(MasterDetailCrud):
def __init__(self, **kwargs): def __init__(self, **kwargs):
super(MasterDetailCrud.CreateView, self).__init__(**kwargs) super(MasterDetailCrud.CreateView, self).__init__(**kwargs)
def get_initial(self): def get_initial(self):
self.initial['data'] = datetime.now().date() self.initial['data'] = datetime.now().date()
return self.initial return self.initial
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super( context = super(
@ -1735,9 +1735,9 @@ class TramitacaoEmLoteView(PrimeiraTramitacaoEmLoteView):
if ('tramitacao__status' in qr and if ('tramitacao__status' in qr and
'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']
): ):
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'])

8
sapl/norma/models.py

@ -59,8 +59,10 @@ class TipoNormaJuridica(models.Model):
def __str__(self): def __str__(self):
return self.descricao return self.descricao
def norma_upload_path(instance, filename): def norma_upload_path(instance, filename):
return texto_upload_path(instance, filename, subpath=instance.ano) return texto_upload_path(instance, filename, subpath=instance.ano)
@reversion.register() @reversion.register()
class NormaJuridica(models.Model): class NormaJuridica(models.Model):
@ -133,9 +135,9 @@ class NormaJuridica(models.Model):
def get_normas_relacionadas(self): def get_normas_relacionadas(self):
principais = NormaRelacionada.objects.filter( principais = NormaRelacionada.objects.filter(
norma_principal=self.id) norma_principal=self.id)
relacionadas = NormaRelacionada.objects.filter( relacionadas = NormaRelacionada.objects.filter(
norma_relacionada=self.id) norma_relacionada=self.id)
return (principais, relacionadas) return (principais, relacionadas)
def __str__(self): def __str__(self):

8
sapl/parlamentares/forms.py

@ -65,9 +65,9 @@ class MandatoForm(ModelForm):
data = self.cleaned_data data = self.cleaned_data
try: try:
if 'legislatura' in data and 'parlamentar' in data: if 'legislatura' in data and 'parlamentar' in data:
Mandato.objects.get( Mandato.objects.get(
parlamentar__pk=self.initial['parlamentar'].pk, parlamentar__pk=self.initial['parlamentar'].pk,
legislatura__pk=data['legislatura'].pk) legislatura__pk=data['legislatura'].pk)
except ObjectDoesNotExist: except ObjectDoesNotExist:
pass pass
else: else:
@ -323,7 +323,7 @@ class VotanteForm(ModelForm):
def clean(self): def clean(self):
super(VotanteForm, self).clean() super(VotanteForm, self).clean()
cd = self.cleaned_data cd = self.cleaned_data
username = cd['username'] username = cd['username']

43
sapl/protocoloadm/views.py

@ -118,6 +118,7 @@ class DocumentoAdministrativoCrud(Crud):
'numero_protocolo': p.numero} 'numero_protocolo': p.numero}
class DetailView(DocumentoAdministrativoMixin, Crud.DetailView): class DetailView(DocumentoAdministrativoMixin, Crud.DetailView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)
self.layout_display[0]['rows'][-1][0]['text'] = ( self.layout_display[0]['rows'][-1][0]['text'] = (
@ -127,6 +128,7 @@ class DocumentoAdministrativoCrud(Crud):
return context return context
class DeleteView(DocumentoAdministrativoMixin, Crud.DeleteView): class DeleteView(DocumentoAdministrativoMixin, Crud.DeleteView):
def get_success_url(self): def get_success_url(self):
return reverse('sapl.protocoloadm:pesq_doc_adm', kwargs={}) return reverse('sapl.protocoloadm:pesq_doc_adm', kwargs={})
@ -451,28 +453,33 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView):
return redirect(self.get_success_url(protocolo)) return redirect(self.get_success_url(protocolo))
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(CreateView, self).get_context_data(**kwargs) context = super(CreateView, self).get_context_data(**kwargs)
autores_ativos = self.autores_ativos() autores_ativos = self.autores_ativos()
autores = [] autores = []
autores.append(['0', '------']) autores.append(['0', '------'])
for a in autores_ativos: for a in autores_ativos:
autores.append([a.id, a.__str__()]) autores.append([a.id, a.__str__()])
context['form'].fields['autor'].choices = autores context['form'].fields['autor'].choices = autores
return context return context
def autores_ativos(self): def autores_ativos(self):
lista_parlamentares = Parlamentar.objects.filter(ativo=True).values_list('id', flat=True) lista_parlamentares = Parlamentar.objects.filter(
model_parlamentar = ContentType.objects.get_for_model(Parlamentar) ativo=True).values_list('id', flat=True)
autor_parlamentar = Autor.objects.filter(content_type=model_parlamentar, object_id__in=lista_parlamentares) model_parlamentar = ContentType.objects.get_for_model(Parlamentar)
autor_parlamentar = Autor.objects.filter(
lista_comissoes = Comissao.objects.filter(Q(data_extincao__isnull=True)|Q(data_extincao__gt=date.today())).values_list('id', flat=True) content_type=model_parlamentar, object_id__in=lista_parlamentares)
model_comissao = ContentType.objects.get_for_model(Comissao)
autor_comissoes = Autor.objects.filter(content_type=model_comissao, object_id__in=lista_comissoes) lista_comissoes = Comissao.objects.filter(Q(data_extincao__isnull=True) | Q(
autores_outros = Autor.objects.exclude(content_type__in=[model_parlamentar, model_comissao]) data_extincao__gt=date.today())).values_list('id', flat=True)
q = autor_parlamentar | autor_comissoes | autores_outros model_comissao = ContentType.objects.get_for_model(Comissao)
return q autor_comissoes = Autor.objects.filter(
content_type=model_comissao, object_id__in=lista_comissoes)
autores_outros = Autor.objects.exclude(
content_type__in=[model_parlamentar, model_comissao])
q = autor_parlamentar | autor_comissoes | autores_outros
return q
class ProtocoloMateriaTemplateView(PermissionRequiredMixin, TemplateView): class ProtocoloMateriaTemplateView(PermissionRequiredMixin, TemplateView):

6
sapl/redireciona_urls/exceptions.py

@ -8,6 +8,6 @@ class UnknownUrlNameError(Exception):
def __str__(self): def __str__(self):
return repr( return repr(
_("Funcionalidade") _("Funcionalidade")
+ " '%s' " % (self.url_name) + " '%s' " % (self.url_name)
+ _("pode ter sido removida ou movida para outra url.")) + _("pode ter sido removida ou movida para outra url."))

47
sapl/redireciona_urls/tests.py

@ -6,6 +6,7 @@ EMPTY_STRING = ''
class RedirecionaURLsTests(TestCase): class RedirecionaURLsTests(TestCase):
def test_redireciona_index_SAPL(self): def test_redireciona_index_SAPL(self):
response = self.client.get(reverse( response = self.client.get(reverse(
'sapl.redireciona_urls:redireciona_sapl_index') 'sapl.redireciona_urls:redireciona_sapl_index')
@ -34,7 +35,7 @@ class RedirecionaParlamentarTests(TestCase):
url = "%s%s" % ( url = "%s%s" % (
url, url,
"?hdn_num_legislatura=%s" % (numero_legislatura) "?hdn_num_legislatura=%s" % (numero_legislatura)
) )
url_e = "%s%s" % (url_e, "?pk=%s" % numero_legislatura) url_e = "%s%s" % (url_e, "?pk=%s" % numero_legislatura)
response = self.client.get(url) response = self.client.get(url)
@ -49,7 +50,7 @@ class RedirecionaParlamentarTests(TestCase):
url_e = reverse( url_e = reverse(
'sapl.parlamentares:parlamentar_detail', 'sapl.parlamentares:parlamentar_detail',
kwargs={'pk': pk_parlamentar} kwargs={'pk': pk_parlamentar}
) )
response = self.client.get(url) response = self.client.get(url)
self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode)
self.assertEqual(response.url, url_e) self.assertEqual(response.url, url_e)
@ -65,7 +66,7 @@ class RedirecionaComissaoTests(TestCase):
url_e = reverse( url_e = reverse(
'sapl.comissoes:comissao_detail', 'sapl.comissoes:comissao_detail',
kwargs={'pk': pk_comissao} kwargs={'pk': pk_comissao}
) )
response = self.client.get(url) response = self.client.get(url)
self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode)
self.assertEqual(response.url, url_e) self.assertEqual(response.url, url_e)
@ -89,7 +90,7 @@ class RedirecionaPautaSessaoTests(TestCase):
url_e = reverse( url_e = reverse(
'sapl.sessao:pauta_sessao_detail', 'sapl.sessao:pauta_sessao_detail',
kwargs={'pk': pk_pauta_sessao} kwargs={'pk': pk_pauta_sessao}
) )
response = self.client.get(url) response = self.client.get(url)
self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode)
self.assertEqual(response.url, url_e) self.assertEqual(response.url, url_e)
@ -153,7 +154,7 @@ class RedirecionaMesaDiretoraParlamentarTests(TestCase):
url_e = reverse( url_e = reverse(
'sapl.parlamentares:parlamentar_detail', 'sapl.parlamentares:parlamentar_detail',
kwargs={'pk': pk_parlamentar} kwargs={'pk': pk_parlamentar}
) )
response = self.client.get(url) response = self.client.get(url)
@ -313,7 +314,7 @@ class RedirecionaNormasJuridicasDetailTests(TestCase):
'sapl.norma:normajuridica_detail', 'sapl.norma:normajuridica_detail',
kwargs={ kwargs={
'pk': pk_norma} 'pk': pk_norma}
) )
response = self.client.get(url) response = self.client.get(url)
self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode)
@ -345,7 +346,7 @@ class RedirecionaSessaoPlenariaTests(TestCase):
url_e = reverse( url_e = reverse(
'sapl.sessao:sessaoplenaria_detail', 'sapl.sessao:sessaoplenaria_detail',
kwargs={'pk': pk_sessao_plenaria} kwargs={'pk': pk_sessao_plenaria}
) )
response = self.client.get(url) response = self.client.get(url)
@ -532,18 +533,18 @@ class RedirecionaHistoricoTramitacoesListTests(TestCase):
status_tramitacao = status_tramitacao.lstrip("0") status_tramitacao = status_tramitacao.lstrip("0")
if ( if (
(inicio_dt_tramitacao != EMPTY_STRING) or (inicio_dt_tramitacao != EMPTY_STRING) or
(fim_dt_tramitacao != EMPTY_STRING) or (fim_dt_tramitacao != EMPTY_STRING) or
(tipo_materia != EMPTY_STRING) or (tipo_materia != EMPTY_STRING) or
(unidade_local_tramitacao != EMPTY_STRING) or (unidade_local_tramitacao != EMPTY_STRING) or
(status_tramitacao != EMPTY_STRING)): (status_tramitacao != EMPTY_STRING)):
args_e += "?tramitacao__data_tramitacao_0=%s" % ( args_e += "?tramitacao__data_tramitacao_0=%s" % (
inicio_dt_tramitacao) inicio_dt_tramitacao)
args_e += "&tramitacao__data_tramitacao_1=%s" % ( args_e += "&tramitacao__data_tramitacao_1=%s" % (
fim_dt_tramitacao) fim_dt_tramitacao)
args_e += "&tipo=%s" % (tipo_materia) args_e += "&tipo=%s" % (tipo_materia)
args_e += "&tramitacao__unidade_tramitacao_local=%s" % ( args_e += "&tramitacao__unidade_tramitacao_local=%s" % (
unidade_local_tramitacao) unidade_local_tramitacao)
args_e += "&tramitacao__status=%s" % (status_tramitacao) args_e += "&tramitacao__status=%s" % (status_tramitacao)
args_e += "&salvar=%s" % ('Pesquisar') args_e += "&salvar=%s" % ('Pesquisar')
@ -581,18 +582,18 @@ class RedirecionaHistoricoTramitacoesListTests(TestCase):
status_tramitacao = status_tramitacao.lstrip("0") status_tramitacao = status_tramitacao.lstrip("0")
if ( if (
(inicio_dt_tramitacao != EMPTY_STRING) or (inicio_dt_tramitacao != EMPTY_STRING) or
(fim_dt_tramitacao != EMPTY_STRING) or (fim_dt_tramitacao != EMPTY_STRING) or
(tipo_materia != EMPTY_STRING) or (tipo_materia != EMPTY_STRING) or
(unidade_local_tramitacao != EMPTY_STRING) or (unidade_local_tramitacao != EMPTY_STRING) or
(status_tramitacao != EMPTY_STRING)): (status_tramitacao != EMPTY_STRING)):
args_e += "?tramitacao__data_tramitacao_0=%s" % ( args_e += "?tramitacao__data_tramitacao_0=%s" % (
inicio_dt_tramitacao) inicio_dt_tramitacao)
args_e += "&tramitacao__data_tramitacao_1=%s" % ( args_e += "&tramitacao__data_tramitacao_1=%s" % (
fim_dt_tramitacao) fim_dt_tramitacao)
args_e += "&tipo=%s" % (tipo_materia) args_e += "&tipo=%s" % (tipo_materia)
args_e += "&tramitacao__unidade_tramitacao_local=%s" % ( args_e += "&tramitacao__unidade_tramitacao_local=%s" % (
unidade_local_tramitacao) unidade_local_tramitacao)
args_e += "&tramitacao__status=%s" % (status_tramitacao) args_e += "&tramitacao__status=%s" % (status_tramitacao)
args_e += "&salvar=%s" % ('Pesquisar') args_e += "&salvar=%s" % ('Pesquisar')

227
sapl/relatorios/templates/pdf_capa_processo_preparar_pysc.py

@ -1,138 +1,149 @@
import os import os
request=context.REQUEST request = context.REQUEST
response=request.RESPONSE response = request.RESPONSE
session= request.SESSION session = request.SESSION
data=DateTime().strftime('%d/%m/%Y') data = DateTime().strftime('%d/%m/%Y')
#Abaixo é gerada a string para o rodapé da página # Abaixo é gerada a string para o rodapé da página
casa={} casa = {}
aux=context.sapl_documentos.props_sapl.propertyItems() aux = context.sapl_documentos.props_sapl.propertyItems()
for item in aux: for item in aux:
casa[item[0]]=item[1] casa[item[0]] = item[1]
localidade=context.zsql.localidade_obter_zsql(cod_localidade=casa["cod_localidade"]) localidade = context.zsql.localidade_obter_zsql(
if len(casa["num_cep"])==8: cod_localidade=casa["cod_localidade"])
cep=casa["num_cep"][:4]+"-"+casa["num_cep"][5:] if len(casa["num_cep"]) == 8:
cep = casa["num_cep"][:4] + "-" + casa["num_cep"][5:]
else: else:
cep="" cep = ""
linha1=casa["end_casa"] linha1 = casa["end_casa"]
if cep!="": if cep != "":
if casa["end_casa"]!="" and casa["end_casa"]!=None: if casa["end_casa"] != "" and casa["end_casa"] != None:
linha1 = linha1 + " - " linha1 = linha1 + " - "
linha1 = linha1 + "CEP "+cep linha1 = linha1 + "CEP " + cep
if localidade[0].nom_localidade!="" and localidade[0].nom_localidade!=None: if localidade[0].nom_localidade != "" and localidade[0].nom_localidade != None:
linha1 = linha1 + " - "+localidade[0].nom_localidade+" "+localidade[0].sgl_uf linha1 = linha1 + " - " + \
if casa["num_tel"]!="" and casa["num_tel"]!=None: localidade[0].nom_localidade + " " + localidade[0].sgl_uf
linha1 = linha1 + " Tel.: "+ casa["num_tel"] if casa["num_tel"] != "" and casa["num_tel"] != None:
linha1 = linha1 + " Tel.: " + casa["num_tel"]
linha2=casa["end_web_casa"]
if casa["end_email_casa"]!="" and casa["end_email_casa"]!=None: linha2 = casa["end_web_casa"]
if casa["end_web_casa"]!="" and casa["end_web_casa"]!=None: if casa["end_email_casa"] != "" and casa["end_email_casa"] != None:
linha2 = linha2 + " - " if casa["end_web_casa"] != "" and casa["end_web_casa"] != None:
linha2 = linha2 + "E-mail: "+casa["end_email_casa"] linha2 = linha2 + " - "
linha2 = linha2 + "E-mail: " + casa["end_email_casa"]
data_emissao=DateTime().strftime("%d/%m/%Y")
rodape=[linha1,linha2,data_emissao] data_emissao = DateTime().strftime("%d/%m/%Y")
rodape = [linha1, linha2, data_emissao]
#Por fim, gera-se as entradas para o cabeçalho
estados=context.zsql.localidade_obter_zsql(tip_localidade="u") # Por fim, gera-se as entradas para o cabeçalho
estados = context.zsql.localidade_obter_zsql(tip_localidade="u")
for uf in estados: for uf in estados:
if localidade[0].sgl_uf==uf.sgl_uf: if localidade[0].sgl_uf == uf.sgl_uf:
nom_estado=uf.nom_localidade nom_estado = uf.nom_localidade
break break
cabecalho={} cabecalho = {}
cabecalho["nom_casa"]=casa["nom_casa"] cabecalho["nom_casa"] = casa["nom_casa"]
cabecalho["nom_estado"]="Estado de "+nom_estado cabecalho["nom_estado"] = "Estado de " + nom_estado
# tenta buscar o logotipo da casa LOGO_CASA # tenta buscar o logotipo da casa LOGO_CASA
if hasattr(context.sapl_documentos.props_sapl,'logo_casa.gif'): if hasattr(context.sapl_documentos.props_sapl, 'logo_casa.gif'):
imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url() imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url()
else: else:
imagem = context.imagens.absolute_url() + "/brasao_transp.gif" imagem = context.imagens.absolute_url() + "/brasao_transp.gif"
#Por fim, utiliza o PythonScript para pesquisar os protocolos e gerar os dados # Por fim, utiliza o PythonScript para pesquisar os protocolos e gerar os dados
protocolos=[] protocolos = []
REQUEST=context.REQUEST REQUEST = context.REQUEST
for protocolo in context.zsql.protocolo_pesquisar_zsql(tip_protocolo=REQUEST['rad_tip_protocolo'], for protocolo in context.zsql.protocolo_pesquisar_zsql(tip_protocolo=REQUEST['rad_tip_protocolo'],
cod_protocolo=REQUEST['txt_num_protocolo'], ano_protocolo=REQUEST['txt_ano_protocolo'], cod_protocolo=REQUEST['txt_num_protocolo'], ano_protocolo=REQUEST[
tip_documento=REQUEST['lst_tip_documento'], tip_processo=REQUEST['rad_tip_processo'], 'txt_ano_protocolo'],
tip_materia=REQUEST['lst_tip_materia'], des_assunto=REQUEST['txt_assunto'], tip_documento=REQUEST['lst_tip_documento'], tip_processo=REQUEST[
cod_autor=REQUEST['hdn_cod_autor'], des_interessado=REQUEST['txa_txt_interessado'], 'rad_tip_processo'],
dat_apres=REQUEST['dt_apres'], dat_apres2=REQUEST['dt_apres2']): tip_materia=REQUEST[
dic={} 'lst_tip_materia'], des_assunto=REQUEST['txt_assunto'],
cod_autor=REQUEST['hdn_cod_autor'], des_interessado=REQUEST[
'txa_txt_interessado'],
dat_apres=REQUEST['dt_apres'], dat_apres2=REQUEST['dt_apres2']):
dic = {}
dic['titulo']=str(protocolo.cod_protocolo) dic['titulo'] = str(protocolo.cod_protocolo)
dic['ano']=str(protocolo.ano_protocolo) dic['ano'] = str(protocolo.ano_protocolo)
dic['data']=context.pysc.iso_to_port_pysc(protocolo.dat_protocolo)+' - '+protocolo.hor_protocolo dic['data'] = context.pysc.iso_to_port_pysc(
protocolo.dat_protocolo) + ' - ' + protocolo.hor_protocolo
dic['txt_assunto']=protocolo.txt_assunto_ementa dic['txt_assunto'] = protocolo.txt_assunto_ementa
dic['txt_interessado']=protocolo.txt_interessado dic['txt_interessado'] = protocolo.txt_interessado
dic['nom_autor'] = " " dic['nom_autor'] = " "
if protocolo.cod_autor!=None: if protocolo.cod_autor != None:
for autor in context.zsql.autor_obter_zsql(cod_autor=protocolo.cod_autor): for autor in context.zsql.autor_obter_zsql(cod_autor=protocolo.cod_autor):
if autor.des_tipo_autor=='Parlamentar': if autor.des_tipo_autor == 'Parlamentar':
for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar): for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar):
dic['nom_autor']=parlamentar.nom_completo dic['nom_autor'] = parlamentar.nom_completo
elif autor.des_tipo_autor=='Comissao': elif autor.des_tipo_autor == 'Comissao':
for comissao in context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao): for comissao in context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao):
dic['nom_autor']=comissao.nom_comissao dic['nom_autor'] = comissao.nom_comissao
else: else:
dic['nom_autor']=autor.nom_autor dic['nom_autor'] = autor.nom_autor
else: else:
dic['nom_autor']=protocolo.txt_interessado dic['nom_autor'] = protocolo.txt_interessado
dic['natureza']='' dic['natureza'] = ''
if protocolo.tip_processo==0: if protocolo.tip_processo == 0:
dic['natureza']='Administrativo' dic['natureza'] = 'Administrativo'
if protocolo.tip_processo==1: if protocolo.tip_processo == 1:
dic['natureza']='Legislativo' dic['natureza'] = 'Legislativo'
dic['ident_processo']=protocolo.des_tipo_materia or protocolo.des_tipo_documento
dic['sgl_processo']=protocolo.sgl_tipo_materia or protocolo.sgl_tipo_documento dic['ident_processo'] = protocolo.des_tipo_materia or protocolo.des_tipo_documento
dic['num_materia']='' dic['sgl_processo'] = protocolo.sgl_tipo_materia or protocolo.sgl_tipo_documento
for materia in context.zsql.materia_obter_zsql(num_protocolo=protocolo.cod_protocolo,ano_ident_basica=protocolo.ano_protocolo):
dic['num_materia']=str(materia.num_ident_basica)+'/'+ str(materia.ano_ident_basica)
dic['num_documento']='' dic['num_materia'] = ''
for documento in context.zsql.documento_administrativo_obter_zsql(num_protocolo=protocolo.cod_protocolo): for materia in context.zsql.materia_obter_zsql(num_protocolo=protocolo.cod_protocolo, ano_ident_basica=protocolo.ano_protocolo):
dic['num_documento']=str(documento.num_documento)+'/'+ str(documento.ano_documento) dic['num_materia'] = str(materia.num_ident_basica) + \
'/' + str(materia.ano_ident_basica)
dic['num_processo']=dic['num_materia'] or dic['num_documento'] dic['num_documento'] = ''
for documento in context.zsql.documento_administrativo_obter_zsql(num_protocolo=protocolo.cod_protocolo):
dic['num_documento'] = str(
documento.num_documento) + '/' + str(documento.ano_documento)
dic['numeracao']='' dic['num_processo'] = dic['num_materia'] or dic['num_documento']
for materia_num in context.zsql.materia_obter_zsql(num_protocolo=protocolo.cod_protocolo,ano_ident_basica=protocolo.ano_protocolo):
for numera in context.zsql.numeracao_obter_zsql(cod_materia=materia_num.cod_materia,ind_excluido=0):
dic['numeracao']='PROCESSO N° ' +str(numera.num_materia)+'/'+ str(numera.ano_materia)
dic['anulado']='' dic['numeracao'] = ''
if protocolo.ind_anulado==1: for materia_num in context.zsql.materia_obter_zsql(num_protocolo=protocolo.cod_protocolo, ano_ident_basica=protocolo.ano_protocolo):
dic['anulado']='Nulo' for numera in context.zsql.numeracao_obter_zsql(cod_materia=materia_num.cod_materia, ind_excluido=0):
dic['numeracao'] = 'PROCESSO N° ' + \
str(numera.num_materia) + '/' + str(numera.ano_materia)
protocolos.append(dic) dic['anulado'] = ''
if protocolo.ind_anulado == 1:
dic['anulado'] = 'Nulo'
filtro={} # Dicionário que conterá os dados do filtro protocolos.append(dic)
filtro = {} # Dicionário que conterá os dados do filtro
# Atribuições diretas do REQUEST # Atribuições diretas do REQUEST
filtro['numero']=REQUEST.txt_num_protocolo filtro['numero'] = REQUEST.txt_num_protocolo
filtro['ano']=REQUEST.txt_ano_protocolo filtro['ano'] = REQUEST.txt_ano_protocolo
filtro['tipo_protocolo']=REQUEST.rad_tip_protocolo filtro['tipo_protocolo'] = REQUEST.rad_tip_protocolo
filtro['tipo_processo']=REQUEST.rad_tip_processo filtro['tipo_processo'] = REQUEST.rad_tip_processo
filtro['assunto']=REQUEST.txt_assunto filtro['assunto'] = REQUEST.txt_assunto
filtro['autor']=REQUEST.hdn_cod_autor filtro['autor'] = REQUEST.hdn_cod_autor
filtro['interessado']=REQUEST.txa_txt_interessado filtro['interessado'] = REQUEST.txa_txt_interessado
sessao=session.id sessao = session.id
caminho = context.pdf_capa_processo_gerar(sessao,imagem,data,protocolos,cabecalho,rodape,filtro) caminho = context.pdf_capa_processo_gerar(
if caminho=='aviso': sessao, imagem, data, protocolos, cabecalho, rodape, filtro)
return response.redirect('mensagem_emitir_proc') if caminho == 'aviso':
return response.redirect('mensagem_emitir_proc')
else: else:
response.redirect(caminho) response.redirect(caminho)

456
sapl/relatorios/templates/pdf_detalhe_materia_gerar.py

@ -11,326 +11,402 @@ import time
from trml2pdf import parseString from trml2pdf import parseString
def cabecalho(dic_inf_basicas,imagem): def cabecalho(dic_inf_basicas, imagem):
""" """
Função que gera o código rml do cabeçalho da página Função que gera o código rml do cabeçalho da página
""" """
tmp='' tmp = ''
tmp+='\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + imagem + '"/>\n' tmp += '\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + imagem + '"/>\n'
tmp+='\t\t\t\t<lines>2cm 24.5cm 19cm 24.5cm</lines>\n' tmp += '\t\t\t\t<lines>2cm 24.5cm 19cm 24.5cm</lines>\n'
if dic_inf_basicas['nom_camara']!="" and dic_inf_basicas['nom_camara']!=None: if dic_inf_basicas['nom_camara'] != "" and dic_inf_basicas['nom_camara'] != None:
tmp+='\t\t\t\t<setFont name="Helvetica" size="16"/>\n' tmp += '\t\t\t\t<setFont name="Helvetica" size="16"/>\n'
tmp+='\t\t\t\t<drawString x="5cm" y="27.2cm">' + dic_inf_basicas['nom_camara'] + '</drawString>\n' tmp += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \
tmp+='\t\t\t\t<setFont name="Helvetica" size="14"/>\n' dic_inf_basicas['nom_camara'] + '</drawString>\n'
tmp+='\t\t\t\t<drawString x="5cm" y="26.5cm">Sistema de Apoio ao Processo Legislativo</drawString>\n' tmp += '\t\t\t\t<setFont name="Helvetica" size="14"/>\n'
tmp += '\t\t\t\t<drawString x="5cm" y="26.5cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
if str(dic_inf_basicas['nom_projeto']) != "" and str(dic_inf_basicas['nom_projeto']) != None: if str(dic_inf_basicas['nom_projeto']) != "" and str(dic_inf_basicas['nom_projeto']) != None:
tmp+='\t\t\t\t<setFont name="Helvetica" size="15"/>\n' tmp += '\t\t\t\t<setFont name="Helvetica" size="15"/>\n'
tmp+='\t\t\t\t<drawCentredString x="10.5cm" y="25.2cm">' + str(dic_inf_basicas['nom_projeto']) + '</drawCentredString>\n' tmp += '\t\t\t\t<drawCentredString x="10.5cm" y="25.2cm">' + \
str(dic_inf_basicas['nom_projeto']) + '</drawCentredString>\n'
if str(dic_inf_basicas['cod_projeto']) != "" and str(dic_inf_basicas['cod_projeto']) != None: if str(dic_inf_basicas['cod_projeto']) != "" and str(dic_inf_basicas['cod_projeto']) != None:
tmp+='\t\t\t\t<setFont name="Helvetica" size="15"/>\n' tmp += '\t\t\t\t<setFont name="Helvetica" size="15"/>\n'
tmp+='\t\t\t\t<drawCentredString x="10.5cm" y="24.7cm">' + str(dic_inf_basicas['cod_projeto']) + '</drawCentredString>\n' tmp += '\t\t\t\t<drawCentredString x="10.5cm" y="24.7cm">' + \
str(dic_inf_basicas['cod_projeto']) + '</drawCentredString>\n'
return tmp return tmp
def rodape(dic_rodape): def rodape(dic_rodape):
""" """
Função que gera o codigo rml do rodape da pagina. Função que gera o codigo rml do rodape da pagina.
""" """
tmp='' tmp = ''
linha1 = dic_rodape['end_casa'] linha1 = dic_rodape['end_casa']
if dic_rodape['end_casa']!="" and dic_rodape['end_casa']!=None: if dic_rodape['end_casa'] != "" and dic_rodape['end_casa'] != None:
linha1 = linha1 + " - " linha1 = linha1 + " - "
if dic_rodape['num_cep']!="" and dic_rodape['num_cep']!=None: if dic_rodape['num_cep'] != "" and dic_rodape['num_cep'] != None:
linha1 = linha1 + "CEP " + dic_rodape['num_cep'] linha1 = linha1 + "CEP " + dic_rodape['num_cep']
if dic_rodape['nom_localidade']!="" and dic_rodape['nom_localidade']!=None: if dic_rodape['nom_localidade'] != "" and dic_rodape['nom_localidade'] != None:
linha1 = linha1 + " - " + dic_rodape['nom_localidade'] linha1 = linha1 + " - " + dic_rodape['nom_localidade']
if dic_rodape['sgl_uf']!="" and dic_rodape['sgl_uf']!=None: if dic_rodape['sgl_uf'] != "" and dic_rodape['sgl_uf'] != None:
inha1 = linha1 + " " + dic_rodape['sgl_uf'] inha1 = linha1 + " " + dic_rodape['sgl_uf']
if dic_rodape['num_tel']!="" and dic_rodape['num_tel']!=None: if dic_rodape['num_tel'] != "" and dic_rodape['num_tel'] != None:
linha1 = linha1 + " Tel: "+ dic_rodape['num_tel'] linha1 = linha1 + " Tel: " + dic_rodape['num_tel']
if dic_rodape['end_web_casa']!="" and dic_rodape['end_web_casa']!=None: if dic_rodape['end_web_casa'] != "" and dic_rodape['end_web_casa'] != None:
linha2 = dic_rodape['end_web_casa'] linha2 = dic_rodape['end_web_casa']
if dic_rodape['end_email_casa']!="" and dic_rodape['end_email_casa']!=None: if dic_rodape['end_email_casa'] != "" and dic_rodape['end_email_casa'] != None:
linha2 = linha2 + " - E-mail: " + dic_rodape['end_email_casa'] linha2 = linha2 + " - E-mail: " + dic_rodape['end_email_casa']
if dic_rodape['data_emissao']!="" and dic_rodape['data_emissao']!=None: if dic_rodape['data_emissao'] != "" and dic_rodape['data_emissao'] != None:
data_emissao = dic_rodape['data_emissao'] data_emissao = dic_rodape['data_emissao']
tmp+='\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n' tmp += '\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n'
tmp+='\t\t\t\t<setFont name="Helvetica" size="8"/>\n' tmp += '\t\t\t\t<setFont name="Helvetica" size="8"/>\n'
tmp+='\t\t\t\t<drawString x="2cm" y="3.3cm">' + data_emissao + '</drawString>\n' tmp += '\t\t\t\t<drawString x="2cm" y="3.3cm">' + data_emissao + '</drawString>\n'
tmp+='\t\t\t\t<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n' tmp += '\t\t\t\t<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n'
tmp+='\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + linha1 + '</drawCentredString>\n' tmp += '\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + \
tmp+='\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + linha2 + '</drawCentredString>\n' linha1 + '</drawCentredString>\n'
tmp += '\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + \
linha2 + '</drawCentredString>\n'
return tmp return tmp
def paraStyle(): def paraStyle():
"""Função que gera o código rml que define o estilo dos parágrafos""" """Função que gera o código rml que define o estilo dos parágrafos"""
tmp='' tmp = ''
tmp+='\t<stylesheet>\n' tmp += '\t<stylesheet>\n'
tmp+='\t\t<blockTableStyle id="Standard_Outline">\n' tmp += '\t\t<blockTableStyle id="Standard_Outline">\n'
tmp+='\t\t\t<blockAlignment value="LEFT"/>\n' tmp += '\t\t\t<blockAlignment value="LEFT"/>\n'
tmp+='\t\t\t<blockValign value="TOP"/>\n' tmp += '\t\t\t<blockValign value="TOP"/>\n'
tmp+='\t\t</blockTableStyle>\n' tmp += '\t\t</blockTableStyle>\n'
tmp+='\t\t<initialize>\n' tmp += '\t\t<initialize>\n'
tmp+='\t\t\t<paraStyle name="all" alignment="justify"/>\n' tmp += '\t\t\t<paraStyle name="all" alignment="justify"/>\n'
tmp+='\t\t</initialize>\n' tmp += '\t\t</initialize>\n'
#titulo do parágrafo: é por default centralizado # titulo do parágrafo: é por default centralizado
tmp+='\t\t<paraStyle name="style.Title" fontName="Helvetica" fontSize="11" leading="13" alignment="RIGHT"/>\n' tmp += '\t\t<paraStyle name="style.Title" fontName="Helvetica" fontSize="11" leading="13" alignment="RIGHT"/>\n'
tmp+='\t\t<paraStyle name="P1" fontName="Helvetica-Bold" fontSize="12.0" textColor="gray" leading="14" spaceBefore="6" alignment="LEFT"/>\n' tmp += '\t\t<paraStyle name="P1" fontName="Helvetica-Bold" fontSize="12.0" textColor="gray" leading="14" spaceBefore="6" alignment="LEFT"/>\n'
tmp+='\t\t<paraStyle name="P2" fontName="Helvetica" fontSize="10.0" leading="10" alignment="LEFT"/>\n' tmp += '\t\t<paraStyle name="P2" fontName="Helvetica" fontSize="10.0" leading="10" alignment="LEFT"/>\n'
tmp+='\t\t<paraStyle name="texto_projeto" fontName="Helvetica" fontSize="12.0" leading="12" spaceAfter="10" alignment="JUSTIFY"/>\n' tmp += '\t\t<paraStyle name="texto_projeto" fontName="Helvetica" fontSize="12.0" leading="12" spaceAfter="10" alignment="JUSTIFY"/>\n'
tmp+='\t</stylesheet>\n' tmp += '\t</stylesheet>\n'
return tmp return tmp
def inf_basicas(dic_inf_basicas): def inf_basicas(dic_inf_basicas):
""" """
Função que gera o código rml das funções básicas do relatório Função que gera o código rml das funções básicas do relatório
""" """
tmp='' tmp = ''
#Texto do projeto # Texto do projeto
texto_projeto = str(dic_inf_basicas['texto_projeto']) texto_projeto = str(dic_inf_basicas['texto_projeto'])
if texto_projeto != "" and texto_projeto != None : if texto_projeto != "" and texto_projeto != None:
tmp+='\t\t<para style="texto_projeto">' + texto_projeto.replace('&','&amp;') + '</para>\n' tmp += '\t\t<para style="texto_projeto">' + \
texto_projeto.replace('&', '&amp;') + '</para>\n'
#início das informações básicas # início das informações básicas
tmp+='\t\t<para style="P1">Informações Básicas</para>\n' tmp += '\t\t<para style="P1">Informações Básicas</para>\n'
if str(dic_inf_basicas['apresentada']) != "" and str(dic_inf_basicas['apresentada']) != None: if str(dic_inf_basicas['apresentada']) != "" and str(dic_inf_basicas['apresentada']) != None:
tmp+='\t\t<para style="P2"><b>Apresentada em: </b> ' + str(dic_inf_basicas['apresentada']) + '</para>\n' tmp += '\t\t<para style="P2"><b>Apresentada em: </b> ' + \
str(dic_inf_basicas['apresentada']) + '</para>\n'
if str(dic_inf_basicas['formato']) != "" and str(dic_inf_basicas['formato']) != None: if str(dic_inf_basicas['formato']) != "" and str(dic_inf_basicas['formato']) != None:
tmp+='\t\t<para style="P2"><b>Formato: </b> ' + str(dic_inf_basicas['formato']) + '</para>\n' tmp += '\t\t<para style="P2"><b>Formato: </b> ' + \
str(dic_inf_basicas['formato']) + '</para>\n'
if dic_inf_basicas['publicada']==0: if dic_inf_basicas['publicada'] == 0:
tmp+='\t\t<para style="P2"><b>Publicada:</b> Não</para>\n' tmp += '\t\t<para style="P2"><b>Publicada:</b> Não</para>\n'
else: else:
tmp+='\t\t<para style="P2"><b>Publicada:</b> Sim</para>\n' tmp += '\t\t<para style="P2"><b>Publicada:</b> Sim</para>\n'
if str(dic_inf_basicas['objeto']) != "" and str(dic_inf_basicas['objeto']) != None: if str(dic_inf_basicas['objeto']) != "" and str(dic_inf_basicas['objeto']) != None:
tmp+='\t\t<para style="P2"><b>Objeto: </b> ' + str(dic_inf_basicas['objeto']) + '</para>\n' tmp += '\t\t<para style="P2"><b>Objeto: </b> ' + \
str(dic_inf_basicas['objeto']) + '</para>\n'
if dic_inf_basicas['tramitacao']==0: if dic_inf_basicas['tramitacao'] == 0:
tmp+='\t\t<para style="P2"><b>Tramitação:</b> Não</para>\n' tmp += '\t\t<para style="P2"><b>Tramitação:</b> Não</para>\n'
else: else:
tmp+='\t\t<para style="P2"><b>Tramitação:</b> Sim</para>\n' tmp += '\t\t<para style="P2"><b>Tramitação:</b> Sim</para>\n'
if str(dic_inf_basicas['reg_tramitacao']) != "" and str(dic_inf_basicas['reg_tramitacao']) != None: if str(dic_inf_basicas['reg_tramitacao']) != "" and str(dic_inf_basicas['reg_tramitacao']) != None:
tmp+='\t\t<para style="P2"><b>Regime: </b> ' + str(dic_inf_basicas['reg_tramitacao']) + '</para>\n' tmp += '\t\t<para style="P2"><b>Regime: </b> ' + \
str(dic_inf_basicas['reg_tramitacao']) + '</para>\n'
if str(dic_inf_basicas['prazo']) != "" and str(dic_inf_basicas['prazo']) != None: if str(dic_inf_basicas['prazo']) != "" and str(dic_inf_basicas['prazo']) != None:
tmp+='\t\t<para style="P2"><b>Dias de prazo: </b> ' + str(dic_inf_basicas['prazo']) + '</para>\n' tmp += '\t\t<para style="P2"><b>Dias de prazo: </b> ' + \
str(dic_inf_basicas['prazo']) + '</para>\n'
if str(dic_inf_basicas['fim_prazo']) != "" and str(dic_inf_basicas['fim_prazo']) != None: if str(dic_inf_basicas['fim_prazo']) != "" and str(dic_inf_basicas['fim_prazo']) != None:
tmp+='\t\t<para style="P2"><b>Data do fim do prazo: </b> ' + str(dic_inf_basicas['fim_prazo']) + '</para>\n' tmp += '\t\t<para style="P2"><b>Data do fim do prazo: </b> ' + \
str(dic_inf_basicas['fim_prazo']) + '</para>\n'
if dic_inf_basicas['mat_complementar'] == 0: if dic_inf_basicas['mat_complementar'] == 0:
tmp+='\t\t<para style="P2"><b>Matéria Complementar:</b> Não</para>\n' tmp += '\t\t<para style="P2"><b>Matéria Complementar:</b> Não</para>\n'
else: else:
tmp+='\t\t<para style="P2"><b>Matéria Complementar:</b> Sim</para>\n' tmp += '\t\t<para style="P2"><b>Matéria Complementar:</b> Sim</para>\n'
if dic_inf_basicas['polemica'] == 0: if dic_inf_basicas['polemica'] == 0:
tmp+='\t\t<para style="P2"><b>Polêmica:</b> Não</para>\n' tmp += '\t\t<para style="P2"><b>Polêmica:</b> Não</para>\n'
else: else:
tmp+='\t\t<para style="P2"><b>Polêmica:</b> Sim</para>\n' tmp += '\t\t<para style="P2"><b>Polêmica:</b> Sim</para>\n'
apelido = dic_inf_basicas['apelido'] apelido = dic_inf_basicas['apelido']
if apelido != "" and apelido != None: if apelido != "" and apelido != None:
tmp+='\t\t<para style="P2"><b>Apelido: </b> ' + apelido.replace('&','&amp;') + '</para>\n' tmp += '\t\t<para style="P2"><b>Apelido: </b> ' + \
apelido.replace('&', '&amp;') + '</para>\n'
indexacao = dic_inf_basicas['indexacao'] indexacao = dic_inf_basicas['indexacao']
if indexacao != "" and indexacao != None: if indexacao != "" and indexacao != None:
tmp+='\t\t<para style="P2"><b>Indexação: </b> ' + indexacao.replace('&','&amp;') + '</para>\n' tmp += '\t\t<para style="P2"><b>Indexação: </b> ' + \
indexacao.replace('&', '&amp;') + '</para>\n'
observacao = dic_inf_basicas['observacao'] observacao = dic_inf_basicas['observacao']
if observacao != "" and observacao != None: if observacao != "" and observacao != None:
tmp+='\t\t<para style="P2"><b>Observação: </b> ' + observacao.replace('&','&amp;') + '</para>\n' tmp += '\t\t<para style="P2"><b>Observação: </b> ' + \
observacao.replace('&', '&amp;') + '</para>\n'
return tmp return tmp
def orig_externa(dic_orig_externa): def orig_externa(dic_orig_externa):
""" """
Função que gera o código rml da origem externa Função que gera o código rml da origem externa
""" """
tmp='' tmp = ''
tmp+='\t\t<para style="P1">Origem Externa</para>\n' tmp += '\t\t<para style="P1">Origem Externa</para>\n'
try: try:
if dic_orig_externa['local'] != "" and dic_orig_externa['local'] != None: if dic_orig_externa['local'] != "" and dic_orig_externa['local'] != None:
tmp+='\t\t<para style="P2"><b>Local:</b> ' + dic_orig_externa['local'] + '</para>\n' tmp += '\t\t<para style="P2"><b>Local:</b> ' + \
dic_orig_externa['local'] + '</para>\n'
if dic_orig_externa['data'] != "" and dic_orig_externa['data'] != None: if dic_orig_externa['data'] != "" and dic_orig_externa['data'] != None:
tmp+='\t\t<para style="P2"><b>Data:</b> ' + dic_orig_externa['data'] + '</para>\n' tmp += '\t\t<para style="P2"><b>Data:</b> ' + \
dic_orig_externa['data'] + '</para>\n'
if dic_orig_externa['tipo'] != "" and dic_orig_externa['tipo'] != None: if dic_orig_externa['tipo'] != "" and dic_orig_externa['tipo'] != None:
tmp+='\t\t<para style="P2"><b>Tipo:</b> ' + dic_orig_externa['tipo'] + '</para>\n' tmp += '\t\t<para style="P2"><b>Tipo:</b> ' + \
dic_orig_externa['tipo'] + '</para>\n'
if dic_orig_externa['numero_ano'] != "" and dic_orig_externa['numero_ano'] != None: if dic_orig_externa['numero_ano'] != "" and dic_orig_externa['numero_ano'] != None:
tmp+='\t\t<para style="P2"><b>Número/Ano:</b> ' + dic_orig_externa['numero_ano'] + '</para>\n' tmp += '\t\t<para style="P2"><b>Número/Ano:</b> ' + \
except: pass dic_orig_externa['numero_ano'] + '</para>\n'
except:
pass
return tmp return tmp
def mat_anexadas(lst_mat_anexadas): def mat_anexadas(lst_mat_anexadas):
tmp='' tmp = ''
tmp+='\t\t<para style="P1">Matérias Anexadas</para>\n' tmp += '\t\t<para style="P1">Matérias Anexadas</para>\n'
for dic_mat in lst_mat_anexadas: for dic_mat in lst_mat_anexadas:
if dic_mat['nom_mat']!="" and dic_mat['nom_mat']!= None: if dic_mat['nom_mat'] != "" and dic_mat['nom_mat'] != None:
tmp+='\t\t<para style="P2"><b>Nome da matéria:</b> ' + dic_mat['nom_mat'] + '</para>\n' tmp += '\t\t<para style="P2"><b>Nome da matéria:</b> ' + \
tmp+='\t\t<para style="P2"><b>Data:</b> ' + dic_mat['data'] + '</para>\n' dic_mat['nom_mat'] + '</para>\n'
tmp+='\t\t<para style="P2"><b>Data final:</b> ' + str(dic_mat['data_fim']) + '</para>\n' tmp += '\t\t<para style="P2"><b>Data:</b> ' + \
dic_mat['data'] + '</para>\n'
tmp += '\t\t<para style="P2"><b>Data final:</b> ' + \
str(dic_mat['data_fim']) + '</para>\n'
return tmp return tmp
def autoria(lst_autoria): def autoria(lst_autoria):
tmp='' tmp = ''
tmp+='\t\t<para style="P1">Autores</para>\n' tmp += '\t\t<para style="P1">Autores</para>\n'
for dic_autor in lst_autoria: for dic_autor in lst_autoria:
if dic_autor['nom_autor'] != "" and dic_autor['nom_autor'] != None: if dic_autor['nom_autor'] != "" and dic_autor['nom_autor'] != None:
tmp+='\t\t<para style="P2"><b>Nome do Autor:</b> ' + dic_autor['nom_autor'] + '</para>\n' tmp += '\t\t<para style="P2"><b>Nome do Autor:</b> ' + \
dic_autor['nom_autor'] + '</para>\n'
if dic_autor['nom_autor'] != "" and dic_autor['cargo'] != None: if dic_autor['nom_autor'] != "" and dic_autor['cargo'] != None:
tmp+='\t\t<para style="P2"><b>Cargo:</b> ' + dic_autor['cargo'] + '</para>\n' tmp += '\t\t<para style="P2"><b>Cargo:</b> ' + \
dic_autor['cargo'] + '</para>\n'
if dic_autor['nom_autor'] != "" and dic_autor['tipo'] != None: if dic_autor['nom_autor'] != "" and dic_autor['tipo'] != None:
tmp+='\t\t<para style="P2"><b>Tipo:</b> ' + dic_autor['tipo'] + '</para>\n' tmp += '\t\t<para style="P2"><b>Tipo:</b> ' + \
dic_autor['tipo'] + '</para>\n'
return tmp return tmp
def despachos_iniciais(lst_des_iniciais): def despachos_iniciais(lst_des_iniciais):
tmp='' tmp = ''
tmp+='\t\t<para style="P1">Despachos Iniciais</para>\n' tmp += '\t\t<para style="P1">Despachos Iniciais</para>\n'
for dic_dados in lst_des_iniciais: for dic_dados in lst_des_iniciais:
if dic_dados['nom_comissao']==None: if dic_dados['nom_comissao'] == None:
dic_dados['nom_comissao']=" " dic_dados['nom_comissao'] = " "
tmp+='\t\t<para style="P2"><b>Nome da comissão:</b> ' + dic_dados['nom_comissao'] + '</para>\n' tmp += '\t\t<para style="P2"><b>Nome da comissão:</b> ' + \
dic_dados['nom_comissao'] + '</para>\n'
return tmp return tmp
def tramitacoes(dic_tramitacoes): def tramitacoes(dic_tramitacoes):
tmp='' tmp = ''
tmp+='\t\t<para style="P1">Última Tramitação</para>\n' tmp += '\t\t<para style="P1">Última Tramitação</para>\n'
try: try:
tmp+='\t\t<para style="P2"><b>Data Ação:</b> ' + str(dic_tramitacoes['data']) + '</para>\n' tmp += '\t\t<para style="P2"><b>Data Ação:</b> ' + \
tmp+='\t\t<para style="P2"><b>Unidade Local:</b> ' + dic_tramitacoes['unidade'] + '</para>\n' str(dic_tramitacoes['data']) + '</para>\n'
tmp+='\t\t<para style="P2"><b>Encaminhada em:</b> ' + str(dic_tramitacoes['data_enc']) + '</para>\n' tmp += '\t\t<para style="P2"><b>Unidade Local:</b> ' + \
tmp+='\t\t<para style="P2"><b>Destino:</b> ' + dic_tramitacoes['destino'] + '</para>\n' dic_tramitacoes['unidade'] + '</para>\n'
tmp+='\t\t<para style="P2"><b>Turno:</b> ' + dic_tramitacoes['turno'] + '</para>\n' tmp += '\t\t<para style="P2"><b>Encaminhada em:</b> ' + \
tmp+='\t\t<para style="P2"><b>Status:</b> ' + dic_tramitacoes['status'] + '</para>\n' str(dic_tramitacoes['data_enc']) + '</para>\n'
if dic_tramitacoes['urgente']==0: tmp += '\t\t<para style="P2"><b>Destino:</b> ' + \
tmp+='\t\t<para style="P2"><b>Urgente:</b> Não</para>\n' dic_tramitacoes['destino'] + '</para>\n'
else: tmp += '\t\t<para style="P2"><b>Turno:</b> ' + \
tmp+='\t\t<para style="P2"><b>Urgente:</b> Sim</para>\n' dic_tramitacoes['turno'] + '</para>\n'
tmp += '\t\t<para style="P2"><b>Status:</b> ' + \
tmp+='\t\t<para style="P2"><b>Data do fim do prazo:</b> ' + str(dic_tramitacoes['data_fim']) + '</para>\n' dic_tramitacoes['status'] + '</para>\n'
if dic_tramitacoes['texto_acao'] != "" and dic_tramitacoes['texto_acao'] != None : if dic_tramitacoes['urgente'] == 0:
tmp+='\t\t<para style="P2"><b>Texto da Ação:</b> ' + dic_tramitacoes['texto_acao'].replace('&','&amp;') + '</para>\n' tmp += '\t\t<para style="P2"><b>Urgente:</b> Não</para>\n'
else:
except: pass tmp += '\t\t<para style="P2"><b>Urgente:</b> Sim</para>\n'
tmp += '\t\t<para style="P2"><b>Data do fim do prazo:</b> ' + \
str(dic_tramitacoes['data_fim']) + '</para>\n'
if dic_tramitacoes['texto_acao'] != "" and dic_tramitacoes['texto_acao'] != None:
tmp += '\t\t<para style="P2"><b>Texto da Ação:</b> ' + \
dic_tramitacoes['texto_acao'].replace(
'&', '&amp;') + '</para>\n'
except:
pass
return tmp return tmp
def relatorias(lst_relatorias): def relatorias(lst_relatorias):
tmp='' tmp = ''
tmp+='\t\t<para style="P1">Relatorias</para>\n' tmp += '\t\t<para style="P1">Relatorias</para>\n'
for dic_comissao in lst_relatorias: for dic_comissao in lst_relatorias:
tmp+='\t\t<para style="P2"><b>Comissão:</b> ' + dic_comissao['nom_comissao'] + '</para>\n' tmp += '\t\t<para style="P2"><b>Comissão:</b> ' + \
tmp+='\t\t<para style="P2"><b>Data Designação:</b> ' + str(dic_comissao['data_desig']) + '</para>\n' dic_comissao['nom_comissao'] + '</para>\n'
tmp+='\t\t<para style="P2"><b>Parlamentar:</b> ' + dic_comissao['parlamentar'] + '</para>\n' tmp += '\t\t<para style="P2"><b>Data Designação:</b> ' + \
tmp+='\t\t<para style="P2"><b>Data Destituição:</b> ' + str(dic_comissao['data_dest']) + '</para>\n' str(dic_comissao['data_desig']) + '</para>\n'
tmp+='\t\t<para style="P2"><b>Motivo Fim Relatoria:</b> ' + dic_comissao['motivo'] + '</para>\n' tmp += '\t\t<para style="P2"><b>Parlamentar:</b> ' + \
dic_comissao['parlamentar'] + '</para>\n'
tmp += '\t\t<para style="P2"><b>Data Destituição:</b> ' + \
str(dic_comissao['data_dest']) + '</para>\n'
tmp += '\t\t<para style="P2"><b>Motivo Fim Relatoria:</b> ' + \
dic_comissao['motivo'] + '</para>\n'
return tmp return tmp
def numeracoes(lst_numeracoes): def numeracoes(lst_numeracoes):
tmp='' tmp = ''
tmp+='\t\t<para style="P1">Numerações</para>\n' tmp += '\t\t<para style="P1">Numerações</para>\n'
for dic_dados in lst_numeracoes: for dic_dados in lst_numeracoes:
tmp+='\t\t<para style="P2"><b>Nome:</b> ' + dic_dados['nome'] + '</para>\n' tmp += '\t\t<para style="P2"><b>Nome:</b> ' + \
tmp+='\t\t<para style="P2"><b>Ano:</b> ' + str(dic_dados['ano']) + '</para>\n' dic_dados['nome'] + '</para>\n'
tmp += '\t\t<para style="P2"><b>Ano:</b> ' + \
str(dic_dados['ano']) + '</para>\n'
return tmp return tmp
def legislacoes_citadas(lst_leg_citadas): def legislacoes_citadas(lst_leg_citadas):
tmp='' tmp = ''
tmp+='\t\t<para style="P1">Legislações Citadas</para>\n' tmp += '\t\t<para style="P1">Legislações Citadas</para>\n'
for dic_dados in lst_leg_citadas: for dic_dados in lst_leg_citadas:
tmp+='\t\t<para style="P2"><b>Tipo Norma:</b> ' + str(dic_dados['nome_lei']) + '</para>\n' tmp += '\t\t<para style="P2"><b>Tipo Norma:</b> ' + \
tmp+='\t\t<para style="P2"><b>Disposição:</b> ' + str(dic_dados['disposicao']) + '</para>\n' str(dic_dados['nome_lei']) + '</para>\n'
tmp+='\t\t<para style="P2"><b>Parte:</b> ' + str(dic_dados['parte']) + '</para>\n' tmp += '\t\t<para style="P2"><b>Disposição:</b> ' + \
tmp+='\t\t<para style="P2"><b>Livro:</b> ' + str(dic_dados['livro']) + '</para>\n' str(dic_dados['disposicao']) + '</para>\n'
tmp+='\t\t<para style="P2"><b>Tí­tulo:</b> ' + str(dic_dados['titulo']) + '</para>\n' tmp += '\t\t<para style="P2"><b>Parte:</b> ' + \
tmp+='\t\t<para style="P2"><b>Capí­tulo:</b> ' + str(dic_dados['capitulo']) + '</para>\n' str(dic_dados['parte']) + '</para>\n'
tmp+='\t\t<para style="P2"><b>Seção:</b> ' + str(dic_dados['secao']) + '</para>\n' tmp += '\t\t<para style="P2"><b>Livro:</b> ' + \
tmp+='\t\t<para style="P2"><b>Subseção:</b> ' + str(dic_dados['subsecao']) + '</para>\n' str(dic_dados['livro']) + '</para>\n'
tmp+='\t\t<para style="P2"><b>Artigo:</b> ' + str(dic_dados['artigo']) + '</para>\n' tmp += '\t\t<para style="P2"><b>Tí­tulo:</b> ' + \
tmp+='\t\t<para style="P2"><b>Parágrafo:</b> ' + str(dic_dados['paragrafo']) + '</para>\n' str(dic_dados['titulo']) + '</para>\n'
tmp+='\t\t<para style="P2"><b>Inciso:</b> ' + str(dic_dados['inciso']) + '</para>\n' tmp += '\t\t<para style="P2"><b>Capí­tulo:</b> ' + \
tmp+='\t\t<para style="P2"><b>Alí­nea:</b> ' + str(dic_dados['alinea']) + '</para>\n' str(dic_dados['capitulo']) + '</para>\n'
tmp+='\t\t<para style="P2"><b>Item:</b> ' + str(dic_dados['item']) + '</para>\n' tmp += '\t\t<para style="P2"><b>Seção:</b> ' + \
str(dic_dados['secao']) + '</para>\n'
tmp += '\t\t<para style="P2"><b>Subseção:</b> ' + \
str(dic_dados['subsecao']) + '</para>\n'
tmp += '\t\t<para style="P2"><b>Artigo:</b> ' + \
str(dic_dados['artigo']) + '</para>\n'
tmp += '\t\t<para style="P2"><b>Parágrafo:</b> ' + \
str(dic_dados['paragrafo']) + '</para>\n'
tmp += '\t\t<para style="P2"><b>Inciso:</b> ' + \
str(dic_dados['inciso']) + '</para>\n'
tmp += '\t\t<para style="P2"><b>Alí­nea:</b> ' + \
str(dic_dados['alinea']) + '</para>\n'
tmp += '\t\t<para style="P2"><b>Item:</b> ' + \
str(dic_dados['item']) + '</para>\n'
return tmp return tmp
def documentos_acessorios(lst_acessorios): def documentos_acessorios(lst_acessorios):
tmp='' tmp = ''
tmp+='\t\t<para style="P1">Documentos Acessórios</para>\n' tmp += '\t\t<para style="P1">Documentos Acessórios</para>\n'
for dic_dados in lst_acessorios: for dic_dados in lst_acessorios:
if dic_dados['tipo']!=None: if dic_dados['tipo'] != None:
tmp+='\t\t<para style="P2"><b>Tipo:</b> ' + dic_dados['tipo'] + '</para>\n' tmp += '\t\t<para style="P2"><b>Tipo:</b> ' + \
dic_dados['tipo'] + '</para>\n'
if dic_dados['nome']!=None:
tmp+='\t\t<para style="P2"><b>Nome:</b> ' + dic_dados['nome'] + '</para>\n' if dic_dados['nome'] != None:
tmp += '\t\t<para style="P2"><b>Nome:</b> ' + \
tmp+='\t\t<para style="P2"><b>Data:</b> ' + dic_dados['data'] + '</para>\n' dic_dados['nome'] + '</para>\n'
if dic_dados['autor']!=None:
tmp+='\t\t<para style="P2"><b>Autor:</b> ' + dic_dados['autor'] + '</para>\n' tmp += '\t\t<para style="P2"><b>Data:</b> ' + \
dic_dados['data'] + '</para>\n'
if dic_dados['ementa']!=None: if dic_dados['autor'] != None:
tmp+='\t\t<para style="P2"><b>Ementa:</b> ' + dic_dados['ementa'].replace('&','&amp;') + '</para>\n' tmp += '\t\t<para style="P2"><b>Autor:</b> ' + \
if dic_dados['indexacao']!=None: dic_dados['autor'] + '</para>\n'
tmp+='\t\t<para style="P2"><b>Ementa:</b> ' + dic_dados['indexacao'].replace('&','&amp;') + '</para>\n'
if dic_dados['ementa'] != None:
tmp += '\t\t<para style="P2"><b>Ementa:</b> ' + \
dic_dados['ementa'].replace('&', '&amp;') + '</para>\n'
if dic_dados['indexacao'] != None:
tmp += '\t\t<para style="P2"><b>Ementa:</b> ' + \
dic_dados['indexacao'].replace('&', '&amp;') + '</para>\n'
return tmp return tmp
def principal(imagem, dic_rodape,dic_inf_basicas,dic_orig_externa,lst_mat_anexadas,lst_autoria,lst_des_iniciais,
dic_tramitacoes,lst_relatorias,lst_numeracoes,lst_leg_citadas,lst_acessorios,sessao=''): def principal(imagem, dic_rodape, dic_inf_basicas, dic_orig_externa, lst_mat_anexadas, lst_autoria, lst_des_iniciais,
dic_tramitacoes, lst_relatorias, lst_numeracoes, lst_leg_citadas, lst_acessorios, sessao=''):
""" """
Função principal responsável por chamar as funções que irão gerar o código rml apropriado Função principal responsável por chamar as funções que irão gerar o código rml apropriado
""" """
arquivoPdf=str(int(time.time()*100))+".pdf" arquivoPdf = str(int(time.time() * 100)) + ".pdf"
tmp='' tmp = ''
tmp+='<?xml version="1.0" encoding="utf-8" standalone="no" ?>\n' tmp += '<?xml version="1.0" encoding="utf-8" standalone="no" ?>\n'
tmp+='<!DOCTYPE document SYSTEM "rml_1_0.dtd">\n' tmp += '<!DOCTYPE document SYSTEM "rml_1_0.dtd">\n'
tmp+='<document filename="relatorio.pdf">\n' tmp += '<document filename="relatorio.pdf">\n'
tmp+='\t<template pageSize="(21cm, 29.7cm)" title="Relatorio de Materias" author="Interlegis" allowSplitting="20">\n' tmp += '\t<template pageSize="(21cm, 29.7cm)" title="Relatorio de Materias" author="Interlegis" allowSplitting="20">\n'
tmp+='\t\t<pageTemplate id="first">\n' tmp += '\t\t<pageTemplate id="first">\n'
tmp+='\t\t\t<pageGraphics>\n' tmp += '\t\t\t<pageGraphics>\n'
tmp+=cabecalho(dic_inf_basicas,imagem) tmp += cabecalho(dic_inf_basicas, imagem)
tmp+=rodape(dic_rodape) tmp += rodape(dic_rodape)
tmp+='\t\t\t</pageGraphics>\n' tmp += '\t\t\t</pageGraphics>\n'
tmp+='\t\t\t<frame id="first" x1="2cm" y1="4cm" width="17cm" height="20.5cm"/>\n' tmp += '\t\t\t<frame id="first" x1="2cm" y1="4cm" width="17cm" height="20.5cm"/>\n'
tmp+='\t\t</pageTemplate>\n' tmp += '\t\t</pageTemplate>\n'
tmp+='\t</template>\n' tmp += '\t</template>\n'
tmp+=paraStyle() tmp += paraStyle()
tmp+='\t<story>\n' tmp += '\t<story>\n'
tmp+=inf_basicas(dic_inf_basicas) tmp += inf_basicas(dic_inf_basicas)
tmp+=orig_externa(dic_orig_externa) tmp += orig_externa(dic_orig_externa)
tmp+=mat_anexadas(lst_mat_anexadas) tmp += mat_anexadas(lst_mat_anexadas)
tmp+=autoria(lst_autoria) tmp += autoria(lst_autoria)
tmp+=despachos_iniciais(lst_des_iniciais) tmp += despachos_iniciais(lst_des_iniciais)
tmp+=tramitacoes(dic_tramitacoes) tmp += tramitacoes(dic_tramitacoes)
tmp+=relatorias(lst_relatorias) tmp += relatorias(lst_relatorias)
tmp+=numeracoes(lst_numeracoes) tmp += numeracoes(lst_numeracoes)
tmp+=legislacoes_citadas(lst_leg_citadas) tmp += legislacoes_citadas(lst_leg_citadas)
tmp+=documentos_acessorios(lst_acessorios) tmp += documentos_acessorios(lst_acessorios)
tmp+='\t</story>\n' tmp += '\t</story>\n'
tmp+='</document>\n' tmp += '</document>\n'
tmp_pdf=parseString(tmp) tmp_pdf = parseString(tmp)
return tmp_pdf return tmp_pdf
# if hasattr(context.temp_folder,arquivoPdf): # if hasattr(context.temp_folder,arquivoPdf):
@ -339,9 +415,9 @@ def principal(imagem, dic_rodape,dic_inf_basicas,dic_orig_externa,lst_mat_anexad
# arq=context.temp_folder[arquivoPdf] # arq=context.temp_folder[arquivoPdf]
# arq.manage_edit(title='Arquivo PDF temporário.',filedata=tmp_pdf,content_type='application/pdf') # arq.manage_edit(title='Arquivo PDF temporário.',filedata=tmp_pdf,content_type='application/pdf')
# # try: # # try:
# # tmp_pdf=parseString(unicode(tmp, 'utf-8')) # # tmp_pdf=parseString(unicode(tmp, 'utf-8'))
# # except: # # except:
# # tmp_pdf=parseString(unicode(tmp, 'utf-8')) # # tmp_pdf=parseString(unicode(tmp, 'utf-8'))
# return "/temp_folder/"+arquivoPdf # return "/temp_folder/"+arquivoPdf

457
sapl/relatorios/templates/pdf_detalhe_materia_preparar_pysc.py

@ -1,89 +1,94 @@
import os import os
request=context.REQUEST request = context.REQUEST
response=request.RESPONSE response = request.RESPONSE
session= request.SESSION session = request.SESSION
cabecalho={} cabecalho = {}
# tenta buscar o logotipo da casa LOGO_CASA # tenta buscar o logotipo da casa LOGO_CASA
if hasattr(context.sapl_documentos.props_sapl,'logo_casa.gif'): if hasattr(context.sapl_documentos.props_sapl, 'logo_casa.gif'):
imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url() imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url()
else: else:
imagem = context.imagens.absolute_url() + "/brasao_transp.gif" imagem = context.imagens.absolute_url() + "/brasao_transp.gif"
#Abaixo é gerado o dic do rodapé da página (linha 7) # Abaixo é gerado o dic do rodapé da página (linha 7)
casa={} casa = {}
aux=context.sapl_documentos.props_sapl.propertyItems() aux = context.sapl_documentos.props_sapl.propertyItems()
for item in aux: for item in aux:
casa[item[0]]=item[1] casa[item[0]] = item[1]
localidade=context.zsql.localidade_obter_zsql(cod_localidade=casa["cod_localidade"]) localidade = context.zsql.localidade_obter_zsql(
data_emissao= DateTime().strftime("%d/%m/%Y") cod_localidade=casa["cod_localidade"])
rodape= casa data_emissao = DateTime().strftime("%d/%m/%Y")
rodape['data_emissao']= data_emissao rodape = casa
rodape['data_emissao'] = data_emissao
inf_basicas_dic = {} inf_basicas_dic = {}
inf_basicas_dic['nom_camara']= casa['nom_casa'] inf_basicas_dic['nom_camara'] = casa['nom_casa']
REQUEST=context.REQUEST REQUEST = context.REQUEST
for local in context.zsql.localidade_obter_zsql(cod_localidade = casa['cod_localidade']): for local in context.zsql.localidade_obter_zsql(cod_localidade=casa['cod_localidade']):
rodape['nom_localidade']= " "+local.nom_localidade rodape['nom_localidade'] = " " + local.nom_localidade
rodape['sgl_uf']= local.sgl_uf rodape['sgl_uf'] = local.sgl_uf
orig_externa_dic = {} orig_externa_dic = {}
for materia in context.zsql.materia_obter_zsql(cod_materia=REQUEST['cod_materia']): for materia in context.zsql.materia_obter_zsql(cod_materia=REQUEST['cod_materia']):
#Abaixo é gerado os dados para o bloco Informações Básicas (ln 23) # Abaixo é gerado os dados para o bloco Informações Básicas (ln 23)
inf_basicas_dic['texto_projeto']= materia.txt_ementa inf_basicas_dic['texto_projeto'] = materia.txt_ementa
inf_basicas_dic['apresentada']= materia.dat_apresentacao inf_basicas_dic['apresentada'] = materia.dat_apresentacao
inf_basicas_dic['formato']= materia.tip_apresentacao inf_basicas_dic['formato'] = materia.tip_apresentacao
inf_basicas_dic['publicada']= materia.dat_publicacao inf_basicas_dic['publicada'] = materia.dat_publicacao
inf_basicas_dic['objeto']= materia.des_objeto inf_basicas_dic['objeto'] = materia.des_objeto
inf_basicas_dic['tramitacao']= materia.ind_tramitacao inf_basicas_dic['tramitacao'] = materia.ind_tramitacao
inf_basicas_dic['cod_projeto']= materia.sgl_tipo_materia+" "+ str(materia.num_ident_basica)+" de "+ str(materia.ano_ident_basica) inf_basicas_dic['cod_projeto'] = materia.sgl_tipo_materia + " " + \
inf_basicas_dic['nom_projeto']= materia.des_tipo_materia str(materia.num_ident_basica) + " de " + str(materia.ano_ident_basica)
inf_basicas_dic['nom_projeto'] = materia.des_tipo_materia
for tramitacao in context.zsql.regime_tramitacao_obter_zsql(cod_regime_tramitacao=materia.cod_regime_tramitacao):
# """#tratando possíveis erros""" for tramitacao in context.zsql.regime_tramitacao_obter_zsql(cod_regime_tramitacao=materia.cod_regime_tramitacao):
# if tramitacao.des_regime_tramitacao==None: tramitacao.des_regime_tramitacao="" # """#tratando possíveis erros"""
# if materia.num_dias_prazo==None: materia.num_dias_prazo="" # if tramitacao.des_regime_tramitacao==None: tramitacao.des_regime_tramitacao=""
# if materia.dat_fim_prazo==None: materia.dat_fim_prazo="" # if materia.num_dias_prazo==None: materia.num_dias_prazo=""
# if materia.ind_complementar==None: materia.ind_complementar="" # if materia.dat_fim_prazo==None: materia.dat_fim_prazo=""
# if materia.ind_polemica==None: materia.ind_polemica="" # if materia.ind_complementar==None: materia.ind_complementar=""
# if materia.nom_apelido==None: materia.nom_apelido="" # if materia.ind_polemica==None: materia.ind_polemica=""
# if materia.txt_indexacao==None: materia.txt_indexacao="" # if materia.nom_apelido==None: materia.nom_apelido=""
# if materia.txt_observacao==None: materia.txt_observacao="" # if materia.txt_indexacao==None: materia.txt_indexacao=""
# """#atribuindo valores""" # if materia.txt_observacao==None: materia.txt_observacao=""
inf_basicas_dic['reg_tramitacao']= tramitacao.des_regime_tramitacao # """#atribuindo valores"""
inf_basicas_dic['prazo']= materia.num_dias_prazo inf_basicas_dic['reg_tramitacao'] = tramitacao.des_regime_tramitacao
inf_basicas_dic['fim_prazo']= materia.dat_fim_prazo inf_basicas_dic['prazo'] = materia.num_dias_prazo
inf_basicas_dic['mat_complementar']= materia.ind_complementar inf_basicas_dic['fim_prazo'] = materia.dat_fim_prazo
inf_basicas_dic['polemica']= materia.ind_polemica inf_basicas_dic['mat_complementar'] = materia.ind_complementar
inf_basicas_dic['apelido']= materia.nom_apelido inf_basicas_dic['polemica'] = materia.ind_polemica
inf_basicas_dic['indexacao']= materia.txt_indexacao inf_basicas_dic['apelido'] = materia.nom_apelido
inf_basicas_dic['observacao']= materia.txt_observacao inf_basicas_dic['indexacao'] = materia.txt_indexacao
inf_basicas_dic['observacao'] = materia.txt_observacao
# #o bloco abaixo gera o dicionario da origem externa (ln 47) # #o bloco abaixo gera o dicionario da origem externa (ln 47)
for origem in context.zsql.origem_obter_zsql(cod_origem = materia.cod_local_origem_externa): for origem in context.zsql.origem_obter_zsql(cod_origem=materia.cod_local_origem_externa):
# #tratando possíveis erros # #tratando possíveis erros
# if origem.sgl_origem==None: origem.sgl_origem="" # if origem.sgl_origem==None: origem.sgl_origem=""
# if origem.nom_origem==None: origem.nom_origem="" # if origem.nom_origem==None: origem.nom_origem=""
# if materia.tip_origem_externa==None: materia.tip_origem_externa="" # if materia.tip_origem_externa==None: materia.tip_origem_externa=""
# if materia.dat_origem_externa==None: materia.dat_origem_externa="" # if materia.dat_origem_externa==None: materia.dat_origem_externa=""
# if materia.num_origem_externa==None: materia.num_origem_externa="" # if materia.num_origem_externa==None: materia.num_origem_externa=""
# if materia.ano_origem_externa==None: materia.ano_origem_externa="" # if materia.ano_origem_externa==None: materia.ano_origem_externa=""
orig_externa_dic['local']= origem.sgl_origem+ "-"+ origem.nom_origem orig_externa_dic['local'] = origem.sgl_origem + "-" + origem.nom_origem
orig_externa_dic['tipo']= materia.tip_origem_externa orig_externa_dic['tipo'] = materia.tip_origem_externa
orig_externa_dic['data']= materia.dat_origem_externa orig_externa_dic['data'] = materia.dat_origem_externa
orig_externa_dic['numero_ano']= str(materia.num_origem_externa)+ "/"+ str(materia.ano_origem_externa) orig_externa_dic['numero_ano'] = str(
materia.num_origem_externa) + "/" + str(materia.ano_origem_externa)
# #o bloco abaixo gera o dicionario das materias anexadas (ln 55) # #o bloco abaixo gera o dicionario das materias anexadas (ln 55)
lst_mat_anexadas = [] lst_mat_anexadas = []
dic_mat = {} dic_mat = {}
for anexada in context.zsql.anexada_obter_zsql(cod_materia_principal=materia.cod_materia): for anexada in context.zsql.anexada_obter_zsql(cod_materia_principal=materia.cod_materia):
aux1 = context.zsql.materia_obter_zsql(cod_materia = anexada.cod_materia_anexada) aux1 = context.zsql.materia_obter_zsql(
aux2 = context.zsql.tipo_materia_legislativa_obter_zsql(tip_materia = aux1[0].tip_id_basica) cod_materia=anexada.cod_materia_anexada)
aux2 = context.zsql.tipo_materia_legislativa_obter_zsql(
tip_materia=aux1[0].tip_id_basica)
# """#tratando possíveis erros""" # """#tratando possíveis erros"""
# if aux2.sgl_tipo_materia==None: aux2.sgl_tipo_materia="" # if aux2.sgl_tipo_materia==None: aux2.sgl_tipo_materia=""
# if aux2.num_ident_basica==None: aux2.num_ident_basica="" # if aux2.num_ident_basica==None: aux2.num_ident_basica=""
@ -91,33 +96,34 @@ for materia in context.zsql.materia_obter_zsql(cod_materia=REQUEST['cod_materia'
# if anexadas.dat_anexacao==None: anexadas.dat_anexacao="" # if anexadas.dat_anexacao==None: anexadas.dat_anexacao=""
# if anexadas.dat_desanexacao==None: anexadas.dat_desanexacao="" # if anexadas.dat_desanexacao==None: anexadas.dat_desanexacao=""
# """#""" # """#"""
dic_mat['nom_mat']= aux2[0].sgl_tipo_materia+ "/"+ str(aux1[0].num_ident_basica)+ "/"+ str(aux1[0].ano_ident_basica) dic_mat['nom_mat'] = aux2[0].sgl_tipo_materia + "/" + \
dic_mat['data']= anexada.dat_anexacao str(aux1[0].num_ident_basica) + "/" + str(aux1[0].ano_ident_basica)
dic_mat['data_fim']= anexada.dat_desanexacao dic_mat['data'] = anexada.dat_anexacao
lst_mat_anexadas.append(dic_mat) dic_mat['data_fim'] = anexada.dat_desanexacao
lst_mat_anexadas.append(dic_mat)
# #o bloco abaixo gera o dicionario dos autores(ln 66) # #o bloco abaixo gera o dicionario dos autores(ln 66)
lst_autoria = [] lst_autoria = []
# dic_autor = {} # dic_autor = {}
for autoria in context.zsql.autoria_obter_zsql(cod_materia = materia.cod_materia): for autoria in context.zsql.autoria_obter_zsql(cod_materia=materia.cod_materia):
dic_autor = {} dic_autor = {}
if autoria.ind_primeiro_autor: if autoria.ind_primeiro_autor:
dic_autor['tipo']= "primeiro autor" dic_autor['tipo'] = "primeiro autor"
else: else:
dic_autor['tipo']= " " dic_autor['tipo'] = " "
for autor in context.zsql.autor_obter_zsql(cod_autor = autoria.cod_autor): for autor in context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor):
dic_autor['cargo']= " " dic_autor['cargo'] = " "
if autor.des_tipo_autor=='Parlamentar': if autor.des_tipo_autor == 'Parlamentar':
for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar): for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar):
dic_autor['nom_autor']=parlamentar.nom_completo dic_autor['nom_autor'] = parlamentar.nom_completo
elif autor.des_tipo_autor=='Comissao': elif autor.des_tipo_autor == 'Comissao':
for comissao in context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao): for comissao in context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao):
dic_autor['nom_autor']=comissao.nom_comissao dic_autor['nom_autor'] = comissao.nom_comissao
else: else:
dic_autor['nom_autor']=autor.nom_autor dic_autor['nom_autor'] = autor.nom_autor
dic_autor['cargo']= autor.des_cargo dic_autor['cargo'] = autor.des_cargo
lst_autoria.append(dic_autor) lst_autoria.append(dic_autor)
# """#tratando possíveis erros""" # """#tratando possíveis erros"""
# if autor.nom_autor==None: autor.nom_autor="" # if autor.nom_autor==None: autor.nom_autor=""
@ -127,141 +133,152 @@ for materia in context.zsql.materia_obter_zsql(cod_materia=REQUEST['cod_materia'
# dic_autor['cargo']= autor.des_cargo # dic_autor['cargo']= autor.des_cargo
# if autoria.ind_primeiro_autor: # if autoria.ind_primeiro_autor:
# dic_autor['tipo']= "primeiro autor" # dic_autor['tipo']= "primeiro autor"
# else: # else:
# dic_autor['tipo']= " " # dic_autor['tipo']= " "
# #o bloco abaixo gera o dicionario de despachos iniciais (ln 79) # #o bloco abaixo gera o dicionario de despachos iniciais (ln 79)
lst_des_iniciais=[] lst_des_iniciais = []
for despacho in context.zsql.despacho_inicial_obter_zsql(cod_materia = materia.cod_materia): for despacho in context.zsql.despacho_inicial_obter_zsql(cod_materia=materia.cod_materia):
for comissao in context.zsql.comissao_obter_zsql(cod_comissao = despacho.cod_comissao_sel): for comissao in context.zsql.comissao_obter_zsql(cod_comissao=despacho.cod_comissao_sel):
dic_dados={} dic_dados = {}
if comissao.nom_comissao==None: if comissao.nom_comissao == None:
comissao.nom_comissao='' comissao.nom_comissao = ''
if comissao.sgl_comissao==None: if comissao.sgl_comissao == None:
comissao.sgl_comissao='' comissao.sgl_comissao = ''
dic_dados['nom_comissao']=comissao.nom_comissao+ " - "+ comissao.sgl_comissao dic_dados['nom_comissao'] = comissao.nom_comissao + \
lst_des_iniciais.append(dic_dados) " - " + comissao.sgl_comissao
lst_des_iniciais.append(dic_dados)
# #o bloco abaixo gera o dicionário de Tramitacoes(ln 87) # #o bloco abaixo gera o dicionário de Tramitacoes(ln 87)
dic_tramitacoes = {} dic_tramitacoes = {}
for tramitacao in context.zsql.tramitacao_obter_zsql(cod_materia=REQUEST['cod_materia'], ind_ult_tramitacao=1): for tramitacao in context.zsql.tramitacao_obter_zsql(cod_materia=REQUEST['cod_materia'], ind_ult_tramitacao=1):
dic_tramitacoes['data']= tramitacao.dat_tramitacao dic_tramitacoes['data'] = tramitacao.dat_tramitacao
dic_tramitacoes['data_enc']= tramitacao.dat_encaminha dic_tramitacoes['data_enc'] = tramitacao.dat_encaminha
dic_tramitacoes['turno']= tramitacao.sgl_turno dic_tramitacoes['turno'] = tramitacao.sgl_turno
dic_tramitacoes['status']= tramitacao.des_status dic_tramitacoes['status'] = tramitacao.des_status
dic_tramitacoes['urgente']= tramitacao.ind_urgencia dic_tramitacoes['urgente'] = tramitacao.ind_urgencia
dic_tramitacoes['data_fim']= tramitacao.dat_fim_prazo dic_tramitacoes['data_fim'] = tramitacao.dat_fim_prazo
dic_tramitacoes['texto_acao']= tramitacao.txt_tramitacao dic_tramitacoes['texto_acao'] = tramitacao.txt_tramitacao
for unidade in context.zsql.unidade_tramitacao_obter_zsql(cod_unid_tramitacao=tramitacao.cod_unid_tram_local):
#-----------------se unidade for comissao--------------------------
if unidade.cod_orgao == None:
for comissao in context.zsql.comissao_obter_zsql(cod_comissao=unidade.cod_comissao):
if tramitacao.cod_unid_tram_dest != None:
for unidade_dest in context.zsql.unidade_tramitacao_obter_zsql(cod_unid_tramitacao=tramitacao.cod_unid_tram_dest):
# se unidade destino for comissao
if unidade_dest.cod_orgao == None:
for comissao_dest in context.zsql.comissao_obter_zsql(cod_comissao=unidade_dest.cod_comissao):
dic_tramitacoes[
'unidade'] = comissao.nom_comissao
dic_tramitacoes[
'destino'] = comissao_dest.nom_comissao
# se unidade destino for orgao
if unidade_dest.cod_comissao == None:
for orgao_dest in context.zsql.orgao_obter_zsql(cod_orgao=unidade_dest.cod_orgao):
dic_tramitacoes[
'unidade'] = comissao.nom_comissao
dic_tramitacoes[
'destino'] = orgao_dest.nom_orgao
else:
dic_tramitacoes['unidade'] = comissao.nom_comissao
dic_tramitacoes['destino'] = "None"
#---------------se unidade for orgao-------------------------------
if unidade.cod_comissao == None:
for orgao in context.zsql.orgao_obter_zsql(cod_orgao=unidade.cod_orgao):
if tramitacao.cod_unid_tram_dest != None:
for unidade_dest in context.zsql.unidade_tramitacao_obter_zsql(cod_unid_tramitacao=tramitacao.cod_unid_tram_dest):
# se unidade destino for comissao
if unidade_dest.cod_orgao == None:
for comissao_dest in context.zsql.comissao_obter_zsql(cod_comissao=unidade_dest.cod_comissao):
dic_tramitacoes[
'unidade'] = orgao.nom_orgao
dic_tramitacoes[
'destino'] = comissao_dest.nom_comissao
# se unidade destino for orgao
if unidade_dest.cod_comissao == None:
for orgao_dest in context.zsql.orgao_obter_zsql(cod_orgao=unidade_dest.cod_orgao):
dic_tramitacoes[
'unidade'] = orgao.nom_orgao
dic_tramitacoes[
'destino'] = orgao_dest.nom_orgao
else:
dic_tramitacoes['unidade'] = orgao.nom_orgao
dic_tramitacoes['destino'] = "None"
for unidade in context.zsql.unidade_tramitacao_obter_zsql(cod_unid_tramitacao = tramitacao.cod_unid_tram_local):
#-----------------se unidade for comissao---------------------------------
if unidade.cod_orgao==None:
for comissao in context.zsql.comissao_obter_zsql(cod_comissao = unidade.cod_comissao):
if tramitacao.cod_unid_tram_dest!=None:
for unidade_dest in context.zsql.unidade_tramitacao_obter_zsql(cod_unid_tramitacao = tramitacao.cod_unid_tram_dest):
#se unidade destino for comissao
if unidade_dest.cod_orgao==None:
for comissao_dest in context.zsql.comissao_obter_zsql(cod_comissao = unidade_dest.cod_comissao):
dic_tramitacoes['unidade']= comissao.nom_comissao
dic_tramitacoes['destino']= comissao_dest.nom_comissao
#se unidade destino for orgao
if unidade_dest.cod_comissao==None:
for orgao_dest in context.zsql.orgao_obter_zsql(cod_orgao = unidade_dest.cod_orgao):
dic_tramitacoes['unidade']= comissao.nom_comissao
dic_tramitacoes['destino']= orgao_dest.nom_orgao
else:
dic_tramitacoes['unidade']= comissao.nom_comissao
dic_tramitacoes['destino']= "None"
#---------------se unidade for orgao-----------------------------------------
if unidade.cod_comissao==None:
for orgao in context.zsql.orgao_obter_zsql(cod_orgao = unidade.cod_orgao):
if tramitacao.cod_unid_tram_dest!=None:
for unidade_dest in context.zsql.unidade_tramitacao_obter_zsql(cod_unid_tramitacao = tramitacao.cod_unid_tram_dest):
#se unidade destino for comissao
if unidade_dest.cod_orgao==None:
for comissao_dest in context.zsql.comissao_obter_zsql(cod_comissao = unidade_dest.cod_comissao):
dic_tramitacoes['unidade']= orgao.nom_orgao
dic_tramitacoes['destino']= comissao_dest.nom_comissao
#se unidade destino for orgao
if unidade_dest.cod_comissao==None:
for orgao_dest in context.zsql.orgao_obter_zsql(cod_orgao = unidade_dest.cod_orgao):
dic_tramitacoes['unidade']= orgao.nom_orgao
dic_tramitacoes['destino']= orgao_dest.nom_orgao
else:
dic_tramitacoes['unidade']= orgao.nom_orgao
dic_tramitacoes['destino']= "None"
# #o bloco abaixo gera o dicionario de relatorias(ln 106) # #o bloco abaixo gera o dicionario de relatorias(ln 106)
lst_relatorias = [] lst_relatorias = []
dic_comissao = {} dic_comissao = {}
for relatoria in context.zsql.relatoria_obter_zsql(cod_materia = materia.cod_materia): for relatoria in context.zsql.relatoria_obter_zsql(cod_materia=materia.cod_materia):
for comissao in context.zsql.comissao_obter_zsql(cod_comissao = relatoria.cod_comissao): for comissao in context.zsql.comissao_obter_zsql(cod_comissao=relatoria.cod_comissao):
for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar = relatoria.cod_parlamentar): for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=relatoria.cod_parlamentar):
dic_comissao['nom_comissao']= comissao.nom_comissao dic_comissao['nom_comissao'] = comissao.nom_comissao
dic_comissao['data_desig']= relatoria.dat_desig_relator dic_comissao['data_desig'] = relatoria.dat_desig_relator
dic_comissao['parlamentar']= parlamentar.nom_completo dic_comissao['parlamentar'] = parlamentar.nom_completo
dic_comissao['data_dest']= relatoria.dat_destit_relator dic_comissao['data_dest'] = relatoria.dat_destit_relator
if relatoria.tip_fim_relatoria==None or relatoria.tip_fim_relatoria=='0': if relatoria.tip_fim_relatoria == None or relatoria.tip_fim_relatoria == '0':
num = 0 num = 0
dic_comissao['motivo']="" dic_comissao['motivo'] = ""
else: else:
num=relatoria.tip_fim_relatoria num = relatoria.tip_fim_relatoria
for tipo_fim in context.zsql.tipo_fim_relatoria_obter_zsql(tip_fim_relatoria = num): for tipo_fim in context.zsql.tipo_fim_relatoria_obter_zsql(tip_fim_relatoria=num):
dic_comissao['motivo']= tipo_fim.des_fim_relatoria dic_comissao['motivo'] = tipo_fim.des_fim_relatoria
lst_relatorias.append(dic_comissao) lst_relatorias.append(dic_comissao)
# #o bloco abaixo gera o dicionario de Numeracoes(ln 121) # #o bloco abaixo gera o dicionario de Numeracoes(ln 121)
lst_numeracoes = [] lst_numeracoes = []
dic_dados={} dic_dados = {}
for numeracao in context.zsql.numeracao_obter_zsql(cod_materia = materia.cod_materia): for numeracao in context.zsql.numeracao_obter_zsql(cod_materia=materia.cod_materia):
for tipo_materia in context.zsql.tipo_materia_legislativa_obter_zsql(tip_materia = numeracao.tip_materia): for tipo_materia in context.zsql.tipo_materia_legislativa_obter_zsql(tip_materia=numeracao.tip_materia):
dic_dados['nome']= tipo_materia.sgl_tipo_materia+ "-"+ tipo_materia.des_tipo_materia+ ""+ numeracao.num_materia dic_dados['nome'] = tipo_materia.sgl_tipo_materia + "-" + \
dic_dados['ano']= numeracao.ano_materia tipo_materia.des_tipo_materia + "" + numeracao.num_materia
lst_numeracoes.append(dic_dados) dic_dados['ano'] = numeracao.ano_materia
lst_numeracoes.append(dic_dados)
# #o bloco abaixo gera o dicionário de legislacoes citadas(132) # #o bloco abaixo gera o dicionário de legislacoes citadas(132)
lst_legis_citadas = [] lst_legis_citadas = []
dic_dados = {} dic_dados = {}
for legislacao in context.zsql.legislacao_citada_obter_zsql(cod_materia = materia.cod_materia): for legislacao in context.zsql.legislacao_citada_obter_zsql(cod_materia=materia.cod_materia):
norma = context.zsql.norma_juridica_obter_zsql(cod_norma = legislacao.cod_norma_sel) norma = context.zsql.norma_juridica_obter_zsql(
dic_dados['nome_lei']= str(norma[0].tip_norma_sel) + ""+ str(norma[0].num_norma) + " de"+ str(norma[0].ano_norma) cod_norma=legislacao.cod_norma_sel)
dic_dados['disposicao']= legislacao.des_disposicoes dic_dados['nome_lei'] = str(norma[0].tip_norma_sel) + "" + \
dic_dados['parte']= legislacao.des_parte str(norma[0].num_norma) + " de" + str(norma[0].ano_norma)
dic_dados['livro']= legislacao.des_livro dic_dados['disposicao'] = legislacao.des_disposicoes
dic_dados['titulo']= legislacao.des_titulo dic_dados['parte'] = legislacao.des_parte
dic_dados['capitulo']= legislacao.des_capitulo dic_dados['livro'] = legislacao.des_livro
dic_dados['secao']= legislacao.des_secao dic_dados['titulo'] = legislacao.des_titulo
dic_dados['subsecao']= legislacao.des_subsecao dic_dados['capitulo'] = legislacao.des_capitulo
dic_dados['artigo']= legislacao.des_artigo dic_dados['secao'] = legislacao.des_secao
dic_dados['paragrafo']= legislacao.des_paragrafo dic_dados['subsecao'] = legislacao.des_subsecao
dic_dados['inciso']= legislacao.des_inciso dic_dados['artigo'] = legislacao.des_artigo
dic_dados['alinea']= legislacao.des_alinea dic_dados['paragrafo'] = legislacao.des_paragrafo
dic_dados['item']= legislacao.des_item dic_dados['inciso'] = legislacao.des_inciso
lst_legis_citadas.append(dic_dados) dic_dados['alinea'] = legislacao.des_alinea
dic_dados['item'] = legislacao.des_item
lst_legis_citadas.append(dic_dados)
# #o bloco abaixo gera o dicionario de Documentos Acessórios(153) # #o bloco abaixo gera o dicionario de Documentos Acessórios(153)
lst_acessorios = []
for documento in context.zsql.documento_acessorio_obter_zsql(cod_materia = materia.cod_materia):
dic_dados = {}
dic_dados['tipo']= documento.tip_documento
dic_dados['nome']= documento.nom_documento
dic_dados['data']= documento.dat_documento
dic_dados['autor']= documento.nom_autor_documento
dic_dados['ementa']= documento.txt_ementa
dic_dados['indexacao']= documento.txt_indexacao
lst_acessorios.append(dic_dados)
caminho=context.pdf_detalhe_materia_gerar(imagem, rodape,inf_basicas_dic,orig_externa_dic,lst_mat_anexadas,lst_autoria, lst_acessorios = []
lst_des_iniciais,dic_tramitacoes,lst_relatorias,lst_numeracoes, for documento in context.zsql.documento_acessorio_obter_zsql(cod_materia=materia.cod_materia):
lst_legis_citadas,lst_acessorios,sessao=session.id) dic_dados = {}
if caminho=='aviso': dic_dados['tipo'] = documento.tip_documento
return response.redirect('mensagem_emitir_proc') dic_dados['nome'] = documento.nom_documento
dic_dados['data'] = documento.dat_documento
dic_dados['autor'] = documento.nom_autor_documento
dic_dados['ementa'] = documento.txt_ementa
dic_dados['indexacao'] = documento.txt_indexacao
lst_acessorios.append(dic_dados)
caminho = context.pdf_detalhe_materia_gerar(imagem, rodape, inf_basicas_dic, orig_externa_dic, lst_mat_anexadas, lst_autoria,
lst_des_iniciais, dic_tramitacoes, lst_relatorias, lst_numeracoes,
lst_legis_citadas, lst_acessorios, sessao=session.id)
if caminho == 'aviso':
return response.redirect('mensagem_emitir_proc')
else: else:
response.redirect(caminho) response.redirect(caminho)

221
sapl/relatorios/templates/pdf_documento_administrativo_preparar_pysc.py

@ -1,124 +1,135 @@
import os import os
request=context.REQUEST request = context.REQUEST
response=request.RESPONSE response = request.RESPONSE
session= request.SESSION session = request.SESSION
data=DateTime().strftime('%d/%m/%Y') data = DateTime().strftime('%d/%m/%Y')
#Abaixo é gerada a string para o rodapé da página # Abaixo é gerada a string para o rodapé da página
casa={} casa = {}
aux=context.sapl_documentos.props_sapl.propertyItems() aux = context.sapl_documentos.props_sapl.propertyItems()
for item in aux: for item in aux:
casa[item[0]]=item[1] casa[item[0]] = item[1]
localidade=context.zsql.localidade_obter_zsql(cod_localidade=casa["cod_localidade"]) localidade = context.zsql.localidade_obter_zsql(
if len(casa["num_cep"])==8: cod_localidade=casa["cod_localidade"])
cep=casa["num_cep"][:4]+"-"+casa["num_cep"][5:] if len(casa["num_cep"]) == 8:
cep = casa["num_cep"][:4] + "-" + casa["num_cep"][5:]
else: else:
cep="" cep = ""
linha1=casa["end_casa"] linha1 = casa["end_casa"]
if cep!="": if cep != "":
if casa["end_casa"]!="" and casa["end_casa"]!=None: if casa["end_casa"] != "" and casa["end_casa"] != None:
linha1 = linha1 + " - " linha1 = linha1 + " - "
linha1 = linha1 + "CEP "+cep linha1 = linha1 + "CEP " + cep
if localidade[0].nom_localidade!="" and localidade[0].nom_localidade!=None: if localidade[0].nom_localidade != "" and localidade[0].nom_localidade != None:
linha1 = linha1 + " - "+localidade[0].nom_localidade+" "+localidade[0].sgl_uf linha1 = linha1 + " - " + \
if casa["num_tel"]!="" and casa["num_tel"]!=None: localidade[0].nom_localidade + " " + localidade[0].sgl_uf
linha1 = linha1 + " Tel.: "+ casa["num_tel"] if casa["num_tel"] != "" and casa["num_tel"] != None:
linha1 = linha1 + " Tel.: " + casa["num_tel"]
linha2=casa["end_web_casa"]
if casa["end_email_casa"]!="" and casa["end_email_casa"]!=None: linha2 = casa["end_web_casa"]
if casa["end_web_casa"]!="" and casa["end_web_casa"]!=None: if casa["end_email_casa"] != "" and casa["end_email_casa"] != None:
linha2 = linha2 + " - " if casa["end_web_casa"] != "" and casa["end_web_casa"] != None:
linha2 = linha2 + "E-mail: "+casa["end_email_casa"] linha2 = linha2 + " - "
linha2 = linha2 + "E-mail: " + casa["end_email_casa"]
data_emissao=DateTime().strftime("%d/%m/%Y")
rodape=[linha1,linha2,data_emissao] data_emissao = DateTime().strftime("%d/%m/%Y")
rodape = [linha1, linha2, data_emissao]
#Por fim, gera-se as entradas para o cabeçalho
estados=context.zsql.localidade_obter_zsql(tip_localidade="u") # Por fim, gera-se as entradas para o cabeçalho
estados = context.zsql.localidade_obter_zsql(tip_localidade="u")
for uf in estados: for uf in estados:
if localidade[0].sgl_uf==uf.sgl_uf: if localidade[0].sgl_uf == uf.sgl_uf:
nom_estado=uf.nom_localidade nom_estado = uf.nom_localidade
break break
cabecalho={} cabecalho = {}
cabecalho["nom_casa"]=casa["nom_casa"] cabecalho["nom_casa"] = casa["nom_casa"]
cabecalho["nom_estado"]="Estado de "+nom_estado cabecalho["nom_estado"] = "Estado de " + nom_estado
# tenta buscar o logotipo da casa LOGO_CASA # tenta buscar o logotipo da casa LOGO_CASA
if hasattr(context.sapl_documentos.props_sapl,'logo_casa.gif'): if hasattr(context.sapl_documentos.props_sapl, 'logo_casa.gif'):
imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url() imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url()
else: else:
imagem = context.imagens.absolute_url() + "/brasao_transp.gif" imagem = context.imagens.absolute_url() + "/brasao_transp.gif"
#Por fim, utiliza o PythonScript para pesquisar os documentos e gerar os dados # Por fim, utiliza o PythonScript para pesquisar os documentos e gerar os dados
documentos=[] documentos = []
REQUEST=context.REQUEST REQUEST = context.REQUEST
for documento in context.zsql.documento_administrativo_pesquisar_zsql(tip_documento=REQUEST['lst_tip_documento'], for documento in context.zsql.documento_administrativo_pesquisar_zsql(tip_documento=REQUEST['lst_tip_documento'],
num_documento=REQUEST['txt_num_documento'], ano_documento=REQUEST['txt_ano_documento'], num_documento=REQUEST['txt_num_documento'], ano_documento=REQUEST[
num_protocolo=REQUEST['txt_num_protocolo'], ind_tramitacao=REQUEST['rad_tramitando'], 'txt_ano_documento'],
des_assunto=REQUEST['txa_txt_assunto'], cod_status=REQUEST['lst_status'], num_protocolo=REQUEST[
txt_interessado=REQUEST['txa_txt_interessado'], dat_apres1=REQUEST['dt_apres1'], 'txt_num_protocolo'], ind_tramitacao=REQUEST['rad_tramitando'],
dat_apres2=REQUEST['dt_apres2'], rd_ordem=REQUEST['rd_ordenacao']): des_assunto=REQUEST[
dic={} 'txa_txt_assunto'], cod_status=REQUEST['lst_status'],
txt_interessado=REQUEST[
dic['titulo']=documento.sgl_tipo_documento+" "+str(documento.num_documento)+" "+str(documento.ano_documento)+" - "+documento.des_tipo_documento 'txa_txt_interessado'], dat_apres1=REQUEST['dt_apres1'],
dic['txt_assunto']=documento.txt_assunto dat_apres2=REQUEST['dt_apres2'], rd_ordem=REQUEST['rd_ordenacao']):
dic['txt_interessado']=documento.txt_interessado dic = {}
des_status = '' dic['titulo'] = documento.sgl_tipo_documento + " " + \
txt_tramitacao='' str(documento.num_documento) + " " + \
str(documento.ano_documento) + " - " + documento.des_tipo_documento
dic['localizacao_atual']=" " dic['txt_assunto'] = documento.txt_assunto
for tramitacao in context.zsql.tramitacao_administrativo_obter_zsql(cod_documento=documento.cod_documento,ind_ult_tramitacao=1): dic['txt_interessado'] = documento.txt_interessado
if tramitacao.cod_unid_tram_dest:
cod_unid_tram = tramitacao.cod_unid_tram_dest des_status = ''
txt_tramitacao = ''
dic['localizacao_atual'] = " "
for tramitacao in context.zsql.tramitacao_administrativo_obter_zsql(cod_documento=documento.cod_documento, ind_ult_tramitacao=1):
if tramitacao.cod_unid_tram_dest:
cod_unid_tram = tramitacao.cod_unid_tram_dest
else:
cod_unid_tram = tramitacao.cod_unid_tram_local
for unidade_tramitacao in context.zsql.unidade_tramitacao_obter_zsql(cod_unid_tramitacao=cod_unid_tram):
if unidade_tramitacao.cod_orgao:
dic['localizacao_atual'] = unidade_tramitacao.nom_orgao
else: else:
cod_unid_tram = tramitacao.cod_unid_tram_local dic['localizacao_atual'] = unidade_tramitacao.nom_comissao
for unidade_tramitacao in context.zsql.unidade_tramitacao_obter_zsql(cod_unid_tramitacao = cod_unid_tram):
if unidade_tramitacao.cod_orgao:
dic['localizacao_atual']=unidade_tramitacao.nom_orgao
else:
dic['localizacao_atual']=unidade_tramitacao.nom_comissao
des_status=tramitacao.des_status
txt_tramitacao=tramitacao.txt_tramitacao
dic['des_situacao']=des_status des_status = tramitacao.des_status
dic['ultima_acao']=txt_tramitacao txt_tramitacao = tramitacao.txt_tramitacao
documentos.append(dic) dic['des_situacao'] = des_status
dic['ultima_acao'] = txt_tramitacao
filtro={} # Dicionário que conterá os dados do filtro documentos.append(dic)
filtro = {} # Dicionário que conterá os dados do filtro
# Atribuições diretas do REQUEST # Atribuições diretas do REQUEST
filtro['numero']=REQUEST.txt_num_documento filtro['numero'] = REQUEST.txt_num_documento
filtro['ano']=REQUEST.txt_ano_documento filtro['ano'] = REQUEST.txt_ano_documento
filtro['interessado']=REQUEST.txa_txt_interessado filtro['interessado'] = REQUEST.txa_txt_interessado
filtro['assunto']=REQUEST.txa_txt_assunto filtro['assunto'] = REQUEST.txa_txt_assunto
filtro['tipo_documento']='' filtro['tipo_documento'] = ''
if REQUEST.lst_tip_documento!='': if REQUEST.lst_tip_documento != '':
for tipo_documento in context.zsql.tipo_documento_administrativo_obter_zsql(ind_excluido=0, tip_documento=REQUEST.lst_tip_documento): for tipo_documento in context.zsql.tipo_documento_administrativo_obter_zsql(ind_excluido=0, tip_documento=REQUEST.lst_tip_documento):
filtro['tipo_documento']= tipo_documento.sgl_tipo_documento + ' - ' + tipo_documento.des_tipo_documento filtro['tipo_documento'] = tipo_documento.sgl_tipo_documento + \
' - ' + tipo_documento.des_tipo_documento
filtro['tramitando']=''
if REQUEST.rad_tramitando=='1': filtro['tramitando'] = ''
filtro['tramitacao']='Sim' if REQUEST.rad_tramitando == '1':
elif REQUEST['rad_tramitando']=='0': filtro['tramitacao'] = 'Sim'
filtro['tramitacao']='Não' elif REQUEST['rad_tramitando'] == '0':
filtro['tramitacao'] = 'Não'
filtro['situacao_atual']=''
if REQUEST.lst_status!='': filtro['situacao_atual'] = ''
for status in context.zsql.status_tramitacao_administrativo_obter_zsql(ind_exluido=0,cod_status=REQUEST.lst_status): if REQUEST.lst_status != '':
filtro['situacao_atual']=status.sgl_status + ' - ' + status.des_status for status in context.zsql.status_tramitacao_administrativo_obter_zsql(ind_exluido=0, cod_status=REQUEST.lst_status):
filtro['situacao_atual'] = status.sgl_status + \
sessao=session.id ' - ' + status.des_status
caminho = context.pdf_documento_administrativo_gerar(sessao,imagem,data,documentos,cabecalho,rodape,filtro)
if caminho=='aviso': sessao = session.id
return response.redirect('mensagem_emitir_proc') caminho = context.pdf_documento_administrativo_gerar(
sessao, imagem, data, documentos, cabecalho, rodape, filtro)
if caminho == 'aviso':
return response.redirect('mensagem_emitir_proc')
else: else:
response.redirect(caminho) response.redirect(caminho)

241
sapl/relatorios/templates/pdf_espelho_gerar.py

@ -12,147 +12,147 @@ from trml2pdf import parseString
def cabecalho(dic_cabecalho, imagem): def cabecalho(dic_cabecalho, imagem):
"""Gera o codigo rml do cabecalho""" """Gera o codigo rml do cabecalho"""
tmp_data = '' tmp_data = ''
tmp_data += '\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + \ tmp_data += '\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + \
imagem + '"/>\n' imagem + '"/>\n'
tmp_data += '\t\t\t\t<lines>2cm 25cm 19cm 25cm</lines>\n' tmp_data += '\t\t\t\t<lines>2cm 25cm 19cm 25cm</lines>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica" size="18"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica" size="18"/>\n'
tmp_data += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \ tmp_data += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \
dic_cabecalho['nom_casa'] + '</drawString>\n' dic_cabecalho['nom_casa'] + '</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica" size="16"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica" size="16"/>\n'
tmp_data += '\t\t\t\t<drawString x="07cm" y="26.5cm">' + \ tmp_data += '\t\t\t\t<drawString x="07cm" y="26.5cm">' + \
dic_cabecalho['nom_estado'] + '</drawString>\n' dic_cabecalho['nom_estado'] + '</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica" size="15"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica" size="15"/>\n'
tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="25.2cm">SECRETARIA</drawCentredString>\n' tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="25.2cm">SECRETARIA</drawCentredString>\n'
return tmp_data return tmp_data
def rodape(lst_rodape): def rodape(lst_rodape):
"""Gera o codigo rml do rodape""" """Gera o codigo rml do rodape"""
tmp_data = '' tmp_data = ''
tmp_data += '\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n' tmp_data += '\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica" size="8"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica" size="8"/>\n'
tmp_data += '\t\t\t\t<drawString x="2cm" y="3.3cm">' + \ tmp_data += '\t\t\t\t<drawString x="2cm" y="3.3cm">' + \
lst_rodape[2] + '</drawString>\n' lst_rodape[2] + '</drawString>\n'
tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + \ tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + \
lst_rodape[0] + '</drawCentredString>\n' lst_rodape[0] + '</drawCentredString>\n'
tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + \ tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + \
lst_rodape[1] + '</drawCentredString>\n' lst_rodape[1] + '</drawCentredString>\n'
return tmp_data return tmp_data
def paraStyle(): def paraStyle():
"""Gera o codigo rml que define o estilo dos paragrafos""" """Gera o codigo rml que define o estilo dos paragrafos"""
tmp_data = '' tmp_data = ''
tmp_data += '\t<stylesheet>\n' tmp_data += '\t<stylesheet>\n'
tmp_data += '\t\t<blockTableStyle id="Standard_Outline">\n' tmp_data += '\t\t<blockTableStyle id="Standard_Outline">\n'
tmp_data += '\t\t\t<blockAlignment value="LEFT"/>\n' tmp_data += '\t\t\t<blockAlignment value="LEFT"/>\n'
tmp_data += '\t\t\t<blockValign value="TOP"/>\n' tmp_data += '\t\t\t<blockValign value="TOP"/>\n'
tmp_data += '\t\t</blockTableStyle>\n' tmp_data += '\t\t</blockTableStyle>\n'
tmp_data += '\t\t<initialize>\n' tmp_data += '\t\t<initialize>\n'
tmp_data += '\t\t\t<paraStyle name="all" alignment="justify"/>\n' tmp_data += '\t\t\t<paraStyle name="all" alignment="justify"/>\n'
tmp_data += '\t\t</initialize>\n' tmp_data += '\t\t</initialize>\n'
tmp_data += '\t\t<paraStyle name="P1" fontName="Helvetica-Bold" fontSize="10.0" leading="10" alignment="CENTER"/>\n' tmp_data += '\t\t<paraStyle name="P1" fontName="Helvetica-Bold" fontSize="10.0" leading="10" alignment="CENTER"/>\n'
tmp_data += '\t\t<paraStyle name="P2" fontName="Helvetica" fontSize="13.0" leading="13" alignment="LEFT"/>\n' tmp_data += '\t\t<paraStyle name="P2" fontName="Helvetica" fontSize="13.0" leading="13" alignment="LEFT"/>\n'
tmp_data += '\t</stylesheet>\n' tmp_data += '\t</stylesheet>\n'
return tmp_data return tmp_data
def materias(lst_materias): def materias(lst_materias):
"""Gera o codigo rml do conteudo da pesquisa de materias""" """Gera o codigo rml do conteudo da pesquisa de materias"""
tmp_data = '' tmp_data = ''
# inicio do bloco que contem os flowables # inicio do bloco que contem os flowables
tmp_data += '\t<story>\n' tmp_data += '\t<story>\n'
for dic in lst_materias: for dic in lst_materias:
# espaco inicial # espaco inicial
# tmp_data+='\t\t<para style="P2">\n' # tmp_data+='\t\t<para style="P2">\n'
# tmp_data+='\t\t\t<font color="white"> </font>\n' # tmp_data+='\t\t\t<font color="white"> </font>\n'
# tmp_data+='\t\t</para>\n' # tmp_data+='\t\t</para>\n'
# tmp_data+='\t\t<para style="P2">\n' # tmp_data+='\t\t<para style="P2">\n'
# tmp_data+='\t\t\t<font color="white"> </font>\n' # tmp_data+='\t\t\t<font color="white"> </font>\n'
# tmp_data+='\t\t</para>\n' # tmp_data+='\t\t</para>\n'
# condicao para a quebra de pagina # condicao para a quebra de pagina
tmp_data += '\t\t<condPageBreak height="16cm"/>\n' tmp_data += '\t\t<condPageBreak height="16cm"/>\n'
# materias # materias
# if dic['titulo']!=None: # if dic['titulo']!=None:
# tmp_data+='\t\t<para style="P1">' + dic['titulo'] + '</para>\n' # tmp_data+='\t\t<para style="P1">' + dic['titulo'] + '</para>\n'
# tmp_data+='\t\t<para style="P1">\n' # tmp_data+='\t\t<para style="P1">\n'
# tmp_data+='\t\t\t<font color="white"> </font>\n' # tmp_data+='\t\t\t<font color="white"> </font>\n'
# tmp_data+='\t\t</para>\n' # tmp_data+='\t\t</para>\n'
if dic['materia'] != None: if dic['materia'] != None:
tmp_data += '\t\t<para style="P2">\n' tmp_data += '\t\t<para style="P2">\n'
tmp_data += '\t\t\t<font color="white"> </font>\n' tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data += '\t\t</para>\n' tmp_data += '\t\t</para>\n'
tmp_data += '\t\t<para style="P2"><b>INDICAÇÃO:</b> ' + \ tmp_data += '\t\t<para style="P2"><b>INDICAÇÃO:</b> ' + \
dic['materia'] + '</para>\n' dic['materia'] + '</para>\n'
tmp_data += '\t\t<para style="P2">\n' tmp_data += '\t\t<para style="P2">\n'
tmp_data += '\t\t\t<font color="white"> </font>\n' tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data += '\t\t</para>\n' tmp_data += '\t\t</para>\n'
if dic['dat_apresentacao'] != None: if dic['dat_apresentacao'] != None:
tmp_data += '\t\t<para style="P2"><b>DATA DE ENTRADA:</b> ' + \ tmp_data += '\t\t<para style="P2"><b>DATA DE ENTRADA:</b> ' + \
dic['dat_apresentacao'] + '</para>\n' dic['dat_apresentacao'] + '</para>\n'
tmp_data += '\t\t<para style="P2">\n' tmp_data += '\t\t<para style="P2">\n'
tmp_data += '\t\t\t<font color="white"> </font>\n' tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data += '\t\t</para>\n' tmp_data += '\t\t</para>\n'
if dic['nom_autor'] != None: if dic['nom_autor'] != None:
tmp_data += '\t\t<para style="P2"><b>AUTOR:</b> ' + \ tmp_data += '\t\t<para style="P2"><b>AUTOR:</b> ' + \
dic['nom_autor'] + '</para>\n' dic['nom_autor'] + '</para>\n'
tmp_data += '\t\t<para style="P2">\n' tmp_data += '\t\t<para style="P2">\n'
tmp_data += '\t\t\t<font color="white"> </font>\n' tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data += '\t\t</para>\n' tmp_data += '\t\t</para>\n'
if dic['txt_ementa'] != None: if dic['txt_ementa'] != None:
txt_ementa = dic['txt_ementa'].replace('&', '&amp;') txt_ementa = dic['txt_ementa'].replace('&', '&amp;')
tmp_data += '\t\t<para style="P2"><b>EMENTA:</b> ' + \ tmp_data += '\t\t<para style="P2"><b>EMENTA:</b> ' + \
dic['txt_ementa'] + '</para>\n' dic['txt_ementa'] + '</para>\n'
tmp_data += '\t\t<para style="P2">\n' tmp_data += '\t\t<para style="P2">\n'
tmp_data += '\t\t\t<font color="white"> </font>\n' tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data += '\t\t</para>\n' tmp_data += '\t\t</para>\n'
tmp_data += '\t</story>\n' tmp_data += '\t</story>\n'
return tmp_data return tmp_data
def principal(imagem, lst_materias, dic_cabecalho, lst_rodape): def principal(imagem, lst_materias, dic_cabecalho, lst_rodape):
"""Funcao pricipal que gera a estrutura global do arquivo rml""" """Funcao pricipal que gera a estrutura global do arquivo rml"""
# if sessao: # if sessao:
# arquivoPdf=sessao+".pdf" # arquivoPdf=sessao+".pdf"
# else: # else:
# arquivoPdf=str(int(time.time()*100))+".pdf" # arquivoPdf=str(int(time.time()*100))+".pdf"
arquivoPdf = str(int(time.time() * 100)) + ".pdf" arquivoPdf = str(int(time.time() * 100)) + ".pdf"
tmp_data = '' tmp_data = ''
tmp_data += '<?xml version="1.0" encoding="utf-8" standalone="no" ?>\n' tmp_data += '<?xml version="1.0" encoding="utf-8" standalone="no" ?>\n'
tmp_data += '<!DOCTYPE document SYSTEM "rml_1_0.dtd">\n' tmp_data += '<!DOCTYPE document SYSTEM "rml_1_0.dtd">\n'
tmp_data += '<document filename="relatorio.pdf">\n' tmp_data += '<document filename="relatorio.pdf">\n'
tmp_data += '\t<template pageSize="(21cm, 29.7cm)" title="Relatorio de Materias" author="Interlegis" allowSplitting="20">\n' tmp_data += '\t<template pageSize="(21cm, 29.7cm)" title="Relatorio de Materias" author="Interlegis" allowSplitting="20">\n'
tmp_data += '\t\t<pageTemplate id="first">\n' tmp_data += '\t\t<pageTemplate id="first">\n'
tmp_data += '\t\t\t<pageGraphics>\n' tmp_data += '\t\t\t<pageGraphics>\n'
tmp_data += cabecalho(dic_cabecalho, imagem) tmp_data += cabecalho(dic_cabecalho, imagem)
tmp_data += rodape(lst_rodape) tmp_data += rodape(lst_rodape)
tmp_data += '\t\t\t</pageGraphics>\n' tmp_data += '\t\t\t</pageGraphics>\n'
tmp_data += '\t\t\t<frame id="first" x1="2cm" y1="4cm" width="17cm" height="21cm"/>\n' tmp_data += '\t\t\t<frame id="first" x1="2cm" y1="4cm" width="17cm" height="21cm"/>\n'
tmp_data += '\t\t</pageTemplate>\n' tmp_data += '\t\t</pageTemplate>\n'
tmp_data += '\t</template>\n' tmp_data += '\t</template>\n'
tmp_data += paraStyle() tmp_data += paraStyle()
tmp_data += materias(lst_materias) tmp_data += materias(lst_materias)
tmp_data += '</document>\n' tmp_data += '</document>\n'
tmp_pdf = parseString(tmp_data) tmp_pdf = parseString(tmp_data)
return tmp_pdf return tmp_pdf
# try: # try:
# tmp_pdf=parseString(unicode(tmp_data, 'utf-8')) # tmp_pdf=parseString(unicode(tmp_data, 'utf-8'))
# except: # except:
# tmp_pdf=parseString(unicode(tmp_data, 'utf-8')) # tmp_pdf=parseString(unicode(tmp_data, 'utf-8'))
# if hasattr(context.temp_folder,arquivoPdf): # if hasattr(context.temp_folder,arquivoPdf):
@ -163,4 +163,5 @@ def principal(imagem, lst_materias, dic_cabecalho, lst_rodape):
# return "/temp_folder/"+arquivoPdf # return "/temp_folder/"+arquivoPdf
# return principal(sessao,imagem,data,lst_materias,dic_cabecalho,lst_rodape,dic_filtro) # return
# principal(sessao,imagem,data,lst_materias,dic_cabecalho,lst_rodape,dic_filtro)

290
sapl/relatorios/templates/pdf_espelho_preparar_pysc.py

@ -1,200 +1,210 @@
import os import os
request=context.REQUEST request = context.REQUEST
response=request.RESPONSE response = request.RESPONSE
session= request.SESSION session = request.SESSION
data=DateTime().strftime('%d/%m/%Y') data = DateTime().strftime('%d/%m/%Y')
#Abaixo é gerada a string para o rodapé da página # Abaixo é gerada a string para o rodapé da página
casa={} casa = {}
aux=context.sapl_documentos.props_sapl.propertyItems() aux = context.sapl_documentos.props_sapl.propertyItems()
for item in aux: for item in aux:
casa[item[0]]=item[1] casa[item[0]] = item[1]
localidade=context.zsql.localidade_obter_zsql(cod_localidade=casa["cod_localidade"]) localidade = context.zsql.localidade_obter_zsql(
if len(casa["num_cep"])==8: cod_localidade=casa["cod_localidade"])
cep=casa["num_cep"][:4]+"-"+casa["num_cep"][5:] if len(casa["num_cep"]) == 8:
cep = casa["num_cep"][:4] + "-" + casa["num_cep"][5:]
else: else:
cep="" cep = ""
linha1=casa["end_casa"] linha1 = casa["end_casa"]
if cep!="": if cep != "":
if casa["end_casa"]!="" and casa["end_casa"]!=None: if casa["end_casa"] != "" and casa["end_casa"] != None:
linha1 = linha1 + " - " linha1 = linha1 + " - "
linha1 = linha1 + "CEP "+cep linha1 = linha1 + "CEP " + cep
if localidade[0].nom_localidade!="" and localidade[0].nom_localidade!=None: if localidade[0].nom_localidade != "" and localidade[0].nom_localidade != None:
linha1 = linha1 + " - "+localidade[0].nom_localidade+" "+localidade[0].sgl_uf linha1 = linha1 + " - " + \
if casa["num_tel"]!="" and casa["num_tel"]!=None: localidade[0].nom_localidade + " " + localidade[0].sgl_uf
linha1 = linha1 + " Tel.: "+ casa["num_tel"] if casa["num_tel"] != "" and casa["num_tel"] != None:
linha1 = linha1 + " Tel.: " + casa["num_tel"]
linha2=casa["end_web_casa"]
if casa["end_email_casa"]!="" and casa["end_email_casa"]!=None: linha2 = casa["end_web_casa"]
if casa["end_web_casa"]!="" and casa["end_web_casa"]!=None: if casa["end_email_casa"] != "" and casa["end_email_casa"] != None:
linha2 = linha2 + " - " if casa["end_web_casa"] != "" and casa["end_web_casa"] != None:
linha2 = linha2 + "E-mail: "+casa["end_email_casa"] linha2 = linha2 + " - "
linha2 = linha2 + "E-mail: " + casa["end_email_casa"]
data_emissao=DateTime().strftime("%d/%m/%Y")
rodape=[linha1,linha2,data_emissao] data_emissao = DateTime().strftime("%d/%m/%Y")
rodape = [linha1, linha2, data_emissao]
#Por fim, gera-se as entradas para o cabeçalho
estados=context.zsql.localidade_obter_zsql(tip_localidade="u") # Por fim, gera-se as entradas para o cabeçalho
estados = context.zsql.localidade_obter_zsql(tip_localidade="u")
for uf in estados: for uf in estados:
if localidade[0].sgl_uf==uf.sgl_uf: if localidade[0].sgl_uf == uf.sgl_uf:
nom_estado=uf.nom_localidade nom_estado = uf.nom_localidade
break break
cabecalho={} cabecalho = {}
cabecalho["nom_casa"]=casa["nom_casa"] cabecalho["nom_casa"] = casa["nom_casa"]
cabecalho["nom_estado"]="Estado de "+nom_estado cabecalho["nom_estado"] = "Estado de " + nom_estado
# tenta buscar o logotipo da casa LOGO_CASA # tenta buscar o logotipo da casa LOGO_CASA
if hasattr(context.sapl_documentos.props_sapl,'logo_casa.gif'): if hasattr(context.sapl_documentos.props_sapl, 'logo_casa.gif'):
imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url() imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url()
else: else:
imagem = context.sapl_site.sapl_skin.imagens.absolute_url() + "/brasao_transp.gif" imagem = context.sapl_site.sapl_skin.imagens.absolute_url() + "/brasao_transp.gif"
#Verifica o tamanho da lista das materias selecionadas vindas do form # Verifica o tamanho da lista das materias selecionadas vindas do form
REQUEST=context.REQUEST REQUEST = context.REQUEST
if REQUEST.txt_check=='1': if REQUEST.txt_check == '1':
cod_mat = REQUEST['check_ind'] cod_mat = REQUEST['check_ind']
materias=[] materias = []
REQUEST=context.REQUEST REQUEST = context.REQUEST
for materia in context.zsql.materia_obter_zsql(cod_materia=cod_mat): for materia in context.zsql.materia_obter_zsql(cod_materia=cod_mat):
dic={} dic = {}
dic['titulo']="INDICAÇÃO: "+str(materia.num_ident_basica)+" "+str(materia.ano_ident_basica) dic['titulo'] = "INDICAÇÃO: " + \
dic['materia']=str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica) str(materia.num_ident_basica) + " " + str(materia.ano_ident_basica)
dic['dat_apresentacao']=materia.dat_apresentacao dic['materia'] = str(materia.num_ident_basica) + \
dic['txt_ementa']=materia.txt_ementa "/" + str(materia.ano_ident_basica)
dic['dat_apresentacao'] = materia.dat_apresentacao
dic['txt_ementa'] = materia.txt_ementa
dic['nom_autor'] = " " dic['nom_autor'] = " "
for autoria in context.zsql.autoria_obter_zsql(cod_materia=materia.cod_materia, ind_primeiro_autor=1): for autoria in context.zsql.autoria_obter_zsql(cod_materia=materia.cod_materia, ind_primeiro_autor=1):
for autor in context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor): for autor in context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor):
if autor.des_tipo_autor=='Parlamentar': if autor.des_tipo_autor == 'Parlamentar':
for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar): for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar):
dic['nom_autor']=parlamentar.nom_completo dic['nom_autor'] = parlamentar.nom_completo
elif autor.des_tipo_autor=='Comissao': elif autor.des_tipo_autor == 'Comissao':
for comissao in context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao): for comissao in context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao):
dic['nom_autor']=comissao.nom_comissao dic['nom_autor'] = comissao.nom_comissao
else: else:
dic['nom_autor']=autor.nom_autor dic['nom_autor'] = autor.nom_autor
des_status = '' des_status = ''
txt_tramitacao='' txt_tramitacao = ''
data_ultima_acao = '' data_ultima_acao = ''
dic['localizacao_atual']=" " dic['localizacao_atual'] = " "
for tramitacao in context.zsql.tramitacao_obter_zsql(cod_materia=materia.cod_materia,ind_ult_tramitacao=1): for tramitacao in context.zsql.tramitacao_obter_zsql(cod_materia=materia.cod_materia, ind_ult_tramitacao=1):
if tramitacao.cod_unid_tram_dest: if tramitacao.cod_unid_tram_dest:
cod_unid_tram = tramitacao.cod_unid_tram_dest cod_unid_tram = tramitacao.cod_unid_tram_dest
else: else:
cod_unid_tram = tramitacao.cod_unid_tram_local cod_unid_tram = tramitacao.cod_unid_tram_local
for unidade_tramitacao in context.zsql.unidade_tramitacao_obter_zsql(cod_unid_tramitacao = cod_unid_tram): for unidade_tramitacao in context.zsql.unidade_tramitacao_obter_zsql(cod_unid_tramitacao=cod_unid_tram):
if unidade_tramitacao.cod_orgao: if unidade_tramitacao.cod_orgao:
dic['localizacao_atual']=unidade_tramitacao.nom_orgao dic['localizacao_atual'] = unidade_tramitacao.nom_orgao
elif unidade_tramitacao.cod_parlamentar: elif unidade_tramitacao.cod_parlamentar:
dic['localizacao_atual']=unidade_tramitacao.nom_parlamentar dic['localizacao_atual'] = unidade_tramitacao.nom_parlamentar
else: else:
dic['localizacao_atual']=unidade_tramitacao.nom_comissao dic['localizacao_atual'] = unidade_tramitacao.nom_comissao
des_status=tramitacao.des_status des_status = tramitacao.des_status
txt_tramitacao=tramitacao.txt_tramitacao txt_tramitacao = tramitacao.txt_tramitacao
data_ultima_acao = tramitacao.dat_tramitacao data_ultima_acao = tramitacao.dat_tramitacao
dic['des_situacao']=des_status dic['des_situacao'] = des_status
dic['ultima_acao']=txt_tramitacao dic['ultima_acao'] = txt_tramitacao
dic['data_ultima_acao']=data_ultima_acao dic['data_ultima_acao'] = data_ultima_acao
dic['norma_juridica_vinculada'] = "Não há nenhuma norma jurídica vinculada" dic['norma_juridica_vinculada'] = "Não há nenhuma norma jurídica vinculada"
for norma in context.zsql.materia_buscar_norma_juridica_zsql(cod_materia=materia.cod_materia): for norma in context.zsql.materia_buscar_norma_juridica_zsql(cod_materia=materia.cod_materia):
dic['norma_juridica_vinculada']=norma.des_norma+" "+str(norma.num_norma)+"/"+str(norma.ano_norma) dic['norma_juridica_vinculada'] = norma.des_norma + " " + \
str(norma.num_norma) + "/" + str(norma.ano_norma)
materias.append(dic) materias.append(dic)
else: else:
codigo = REQUEST.check_ind codigo = REQUEST.check_ind
materias=[] materias = []
REQUEST=context.REQUEST REQUEST = context.REQUEST
for cod_mat in codigo: for cod_mat in codigo:
for materia in context.zsql.materia_obter_zsql(cod_materia=cod_mat): for materia in context.zsql.materia_obter_zsql(cod_materia=cod_mat):
dic={} dic = {}
dic['titulo']="INDICAÇÃO: "+str(materia.num_ident_basica)+" "+str(materia.ano_ident_basica) dic['titulo'] = "INDICAÇÃO: " + \
dic['materia']=str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica) str(materia.num_ident_basica) + " " + \
dic['dat_apresentacao']=materia.dat_apresentacao str(materia.ano_ident_basica)
dic['txt_ementa']=materia.txt_ementa dic['materia'] = str(materia.num_ident_basica) + \
"/" + str(materia.ano_ident_basica)
dic['nom_autor'] = " " dic['dat_apresentacao'] = materia.dat_apresentacao
for autoria in context.zsql.autoria_obter_zsql(cod_materia=materia.cod_materia, ind_primeiro_autor=1): dic['txt_ementa'] = materia.txt_ementa
for autor in context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor):
if autor.des_tipo_autor=='Parlamentar': dic['nom_autor'] = " "
for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar): for autoria in context.zsql.autoria_obter_zsql(cod_materia=materia.cod_materia, ind_primeiro_autor=1):
dic['nom_autor']=parlamentar.nom_completo for autor in context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor):
elif autor.des_tipo_autor=='Comissao': if autor.des_tipo_autor == 'Parlamentar':
for comissao in context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao): for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar):
dic['nom_autor']=comissao.nom_comissao dic['nom_autor'] = parlamentar.nom_completo
elif autor.des_tipo_autor == 'Comissao':
for comissao in context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao):
dic['nom_autor'] = comissao.nom_comissao
else:
dic['nom_autor'] = autor.nom_autor
des_status = ''
txt_tramitacao = ''
data_ultima_acao = ''
dic['localizacao_atual'] = " "
for tramitacao in context.zsql.tramitacao_obter_zsql(cod_materia=materia.cod_materia, ind_ult_tramitacao=1):
if tramitacao.cod_unid_tram_dest:
cod_unid_tram = tramitacao.cod_unid_tram_dest
else: else:
dic['nom_autor']=autor.nom_autor cod_unid_tram = tramitacao.cod_unid_tram_local
des_status = ''
txt_tramitacao=''
data_ultima_acao = ''
dic['localizacao_atual']=" " for unidade_tramitacao in context.zsql.unidade_tramitacao_obter_zsql(cod_unid_tramitacao=cod_unid_tram):
for tramitacao in context.zsql.tramitacao_obter_zsql(cod_materia=materia.cod_materia,ind_ult_tramitacao=1): if unidade_tramitacao.cod_orgao:
if tramitacao.cod_unid_tram_dest: dic['localizacao_atual'] = unidade_tramitacao.nom_orgao
cod_unid_tram = tramitacao.cod_unid_tram_dest elif unidade_tramitacao.cod_parlamentar:
else: dic['localizacao_atual'] = unidade_tramitacao.nom_parlamentar
cod_unid_tram = tramitacao.cod_unid_tram_local else:
dic['localizacao_atual'] = unidade_tramitacao.nom_comissao
for unidade_tramitacao in context.zsql.unidade_tramitacao_obter_zsql(cod_unid_tramitacao = cod_unid_tram):
if unidade_tramitacao.cod_orgao:
dic['localizacao_atual']=unidade_tramitacao.nom_orgao
elif unidade_tramitacao.cod_parlamentar:
dic['localizacao_atual']=unidade_tramitacao.nom_parlamentar
else:
dic['localizacao_atual']=unidade_tramitacao.nom_comissao
des_status=tramitacao.des_status
txt_tramitacao=tramitacao.txt_tramitacao
data_ultima_acao = tramitacao.dat_tramitacao
dic['des_situacao']=des_status des_status = tramitacao.des_status
dic['ultima_acao']=txt_tramitacao txt_tramitacao = tramitacao.txt_tramitacao
dic['data_ultima_acao']=data_ultima_acao data_ultima_acao = tramitacao.dat_tramitacao
dic['norma_juridica_vinculada'] = "Não há nenhuma norma jurídica vinculada" dic['des_situacao'] = des_status
for norma in context.zsql.materia_buscar_norma_juridica_zsql(cod_materia=materia.cod_materia): dic['ultima_acao'] = txt_tramitacao
dic['norma_juridica_vinculada']=norma.des_norma+" "+str(norma.num_norma)+"/"+str(norma.ano_norma) dic['data_ultima_acao'] = data_ultima_acao
materias.append(dic) dic['norma_juridica_vinculada'] = "Não há nenhuma norma jurídica vinculada"
for norma in context.zsql.materia_buscar_norma_juridica_zsql(cod_materia=materia.cod_materia):
dic['norma_juridica_vinculada'] = norma.des_norma + " " + \
str(norma.num_norma) + "/" + str(norma.ano_norma)
materias.append(dic)
filtro={} # Dicionário que conterá os dados do filtro filtro = {} # Dicionário que conterá os dados do filtro
# Atribuições diretas do REQUEST # Atribuições diretas do REQUEST
#filtro['data_apres']=REQUEST.data # filtro['data_apres']=REQUEST.data
#filtro['tipo_materia']='' # filtro['tipo_materia']=''
#for tipo_materia in context.zsql.tipo_materia_legislativa_obter_zsql(ind_excluido=0, tip_materia=9): # for tipo_materia in context.zsql.tipo_materia_legislativa_obter_zsql(ind_excluido=0, tip_materia=9):
# filtro['tipo_materia']= tipo_materia.sgl_tipo_materia + ' - ' + tipo_materia.des_tipo_materia # filtro['tipo_materia']= tipo_materia.sgl_tipo_materia + ' - ' + tipo_materia.des_tipo_materia
#filtro['partido']='' # filtro['partido']=''
#if REQUEST.lst_cod_partido!='': # if REQUEST.lst_cod_partido!='':
# for partido in context.zsql.partido_obter_zsql(ind_excluido=0,cod_partido=REQUEST.lst_cod_partido): # for partido in context.zsql.partido_obter_zsql(ind_excluido=0,cod_partido=REQUEST.lst_cod_partido):
# filtro['partido']=partido.sgl_partido + ' - ' + partido.nom_partido # filtro['partido']=partido.sgl_partido + ' - ' + partido.nom_partido
#filtro['tramitando']='' # filtro['tramitando']=''
#if REQUEST.rad_tramitando=='1': # if REQUEST.rad_tramitando=='1':
# filtro['tramitacao']='Sim' # filtro['tramitacao']='Sim'
#elif REQUEST['rad_tramitando']=='0': # elif REQUEST['rad_tramitando']=='0':
# filtro['tramitacao']='Não' # filtro['tramitacao']='Não'
#filtro['situacao_atual']='' # filtro['situacao_atual']=''
#if REQUEST.lst_status!='': # if REQUEST.lst_status!='':
# for status in context.zsql.status_tramitacao_obter_zsql(ind_exluido=0,cod_status=REQUEST.lst_status): # for status in context.zsql.status_tramitacao_obter_zsql(ind_exluido=0,cod_status=REQUEST.lst_status):
# filtro['situacao_atual']=status.sgl_status + ' - ' + status.des_status # filtro['situacao_atual']=status.sgl_status + ' - ' + status.des_status
sessao=session.id sessao = session.id
caminho = context.pdf_espelho_gerar(sessao,imagem,data,materias,cabecalho,rodape,filtro) caminho = context.pdf_espelho_gerar(
if caminho=='aviso': sessao, imagem, data, materias, cabecalho, rodape, filtro)
return response.redirect('mensagem_emitir_proc') if caminho == 'aviso':
return response.redirect('mensagem_emitir_proc')
else: else:
response.redirect(caminho) response.redirect(caminho)

210
sapl/relatorios/templates/pdf_etiqueta_protocolo_preparar_pysc.py

@ -1,127 +1,137 @@
import os import os
request=context.REQUEST request = context.REQUEST
response=request.RESPONSE response = request.RESPONSE
session= request.SESSION session = request.SESSION
data=DateTime().strftime('%d/%m/%Y') data = DateTime().strftime('%d/%m/%Y')
#Abaixo é gerada a string para o rodapé da página # Abaixo é gerada a string para o rodapé da página
casa={} casa = {}
aux=context.sapl_documentos.props_sapl.propertyItems() aux = context.sapl_documentos.props_sapl.propertyItems()
for item in aux: for item in aux:
casa[item[0]]=item[1] casa[item[0]] = item[1]
localidade=context.zsql.localidade_obter_zsql(cod_localidade=casa["cod_localidade"]) localidade = context.zsql.localidade_obter_zsql(
if len(casa["num_cep"])==8: cod_localidade=casa["cod_localidade"])
cep=casa["num_cep"][:4]+"-"+casa["num_cep"][5:] if len(casa["num_cep"]) == 8:
cep = casa["num_cep"][:4] + "-" + casa["num_cep"][5:]
else: else:
cep="" cep = ""
linha1=casa["end_casa"] linha1 = casa["end_casa"]
if cep!="": if cep != "":
if casa["end_casa"]!="" and casa["end_casa"]!=None: if casa["end_casa"] != "" and casa["end_casa"] != None:
linha1 = linha1 + " - " linha1 = linha1 + " - "
linha1 = linha1 + "CEP "+cep linha1 = linha1 + "CEP " + cep
if localidade[0].nom_localidade!="" and localidade[0].nom_localidade!=None: if localidade[0].nom_localidade != "" and localidade[0].nom_localidade != None:
linha1 = linha1 + " - "+localidade[0].nom_localidade+" "+localidade[0].sgl_uf linha1 = linha1 + " - " + \
if casa["num_tel"]!="" and casa["num_tel"]!=None: localidade[0].nom_localidade + " " + localidade[0].sgl_uf
linha1 = linha1 + " Tel.: "+ casa["num_tel"] if casa["num_tel"] != "" and casa["num_tel"] != None:
linha1 = linha1 + " Tel.: " + casa["num_tel"]
linha2=casa["end_web_casa"]
if casa["end_email_casa"]!="" and casa["end_email_casa"]!=None: linha2 = casa["end_web_casa"]
if casa["end_web_casa"]!="" and casa["end_web_casa"]!=None: if casa["end_email_casa"] != "" and casa["end_email_casa"] != None:
linha2 = linha2 + " - " if casa["end_web_casa"] != "" and casa["end_web_casa"] != None:
linha2 = linha2 + "E-mail: "+casa["end_email_casa"] linha2 = linha2 + " - "
linha2 = linha2 + "E-mail: " + casa["end_email_casa"]
data_emissao=DateTime().strftime("%d/%m/%Y")
rodape=[linha1,linha2,data_emissao] data_emissao = DateTime().strftime("%d/%m/%Y")
rodape = [linha1, linha2, data_emissao]
#Por fim, gera-se as entradas para o cabeçalho
estados=context.zsql.localidade_obter_zsql(tip_localidade="u") # Por fim, gera-se as entradas para o cabeçalho
estados = context.zsql.localidade_obter_zsql(tip_localidade="u")
for uf in estados: for uf in estados:
if localidade[0].sgl_uf==uf.sgl_uf: if localidade[0].sgl_uf == uf.sgl_uf:
nom_estado=uf.nom_localidade nom_estado = uf.nom_localidade
break break
cabecalho={} cabecalho = {}
cabecalho["nom_casa"]=casa["nom_casa"] cabecalho["nom_casa"] = casa["nom_casa"]
cabecalho["nom_estado"]="Estado de "+nom_estado cabecalho["nom_estado"] = "Estado de " + nom_estado
# tenta buscar o logotipo da casa LOGO_CASA # tenta buscar o logotipo da casa LOGO_CASA
if hasattr(context.sapl_documentos.props_sapl,'logo_casa.gif'): if hasattr(context.sapl_documentos.props_sapl, 'logo_casa.gif'):
imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url() imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url()
else: else:
imagem = context.imagens.absolute_url() + "/brasao_transp.gif" imagem = context.imagens.absolute_url() + "/brasao_transp.gif"
#Por fim, utiliza o PythonScript para pesquisar os protocolos e gerar os dados # Por fim, utiliza o PythonScript para pesquisar os protocolos e gerar os dados
protocolos=[] protocolos = []
REQUEST=context.REQUEST REQUEST = context.REQUEST
for protocolo in context.zsql.protocolo_pesquisar_zsql(tip_protocolo=REQUEST['rad_tip_protocolo'], for protocolo in context.zsql.protocolo_pesquisar_zsql(tip_protocolo=REQUEST['rad_tip_protocolo'],
cod_protocolo=REQUEST['txt_num_protocolo'], ano_protocolo=REQUEST['txt_ano_protocolo'], cod_protocolo=REQUEST['txt_num_protocolo'], ano_protocolo=REQUEST[
tip_documento=REQUEST['lst_tip_documento'], tip_processo=REQUEST['rad_tip_processo'], 'txt_ano_protocolo'],
tip_materia=REQUEST['lst_tip_materia'], des_assunto=REQUEST['txt_assunto'], tip_documento=REQUEST['lst_tip_documento'], tip_processo=REQUEST[
cod_autor=REQUEST['hdn_cod_autor'], des_interessado=REQUEST['txa_txt_interessado'], 'rad_tip_processo'],
dat_apres=REQUEST['dt_apres'], dat_apres2=REQUEST['dt_apres2']): tip_materia=REQUEST[
dic={} 'lst_tip_materia'], des_assunto=REQUEST['txt_assunto'],
cod_autor=REQUEST['hdn_cod_autor'], des_interessado=REQUEST[
'txa_txt_interessado'],
dat_apres=REQUEST['dt_apres'], dat_apres2=REQUEST['dt_apres2']):
dic = {}
dic['titulo']=str(protocolo.cod_protocolo) dic['titulo'] = str(protocolo.cod_protocolo)
dic['data']='Data: '+context.pysc.iso_to_port_pysc(protocolo.dat_protocolo)+' Horário: '+protocolo.hor_protocolo[0:2]+':'+protocolo.hor_protocolo[3:5] dic['data'] = 'Data: ' + context.pysc.iso_to_port_pysc(
protocolo.dat_protocolo) + ' Horário: ' + protocolo.hor_protocolo[0:2] + ':' + protocolo.hor_protocolo[3:5]
dic['txt_assunto']=protocolo.txt_assunto_ementa dic['txt_assunto'] = protocolo.txt_assunto_ementa
dic['txt_interessado']=protocolo.txt_interessado dic['txt_interessado'] = protocolo.txt_interessado
dic['nom_autor'] = " " dic['nom_autor'] = " "
if protocolo.cod_autor!=None: if protocolo.cod_autor != None:
for autor in context.zsql.autor_obter_zsql(cod_autor=protocolo.cod_autor): for autor in context.zsql.autor_obter_zsql(cod_autor=protocolo.cod_autor):
if autor.des_tipo_autor=='Parlamentar': if autor.des_tipo_autor == 'Parlamentar':
for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar): for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar):
dic['nom_autor']=parlamentar.nom_completo dic['nom_autor'] = parlamentar.nom_completo
elif autor.des_tipo_autor=='Comissao': elif autor.des_tipo_autor == 'Comissao':
for comissao in context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao): for comissao in context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao):
dic['nom_autor']=comissao.nom_comissao dic['nom_autor'] = comissao.nom_comissao
else: else:
dic['nom_autor']=autor.nom_autor dic['nom_autor'] = autor.nom_autor
dic['natureza']='' dic['natureza'] = ''
if protocolo.tip_processo==0: if protocolo.tip_processo == 0:
dic['natureza']='Administrativo' dic['natureza'] = 'Administrativo'
if protocolo.tip_processo==1: if protocolo.tip_processo == 1:
dic['natureza']='Legislativo' dic['natureza'] = 'Legislativo'
dic['num_materia']=''
for materia in context.zsql.materia_obter_zsql(num_protocolo=protocolo.cod_protocolo,ano_ident_basica=protocolo.ano_protocolo):
dic['num_materia']=materia.sgl_tipo_materia+' '+str(materia.num_ident_basica)+'/'+str(materia.ano_ident_basica)
dic['num_documento']='' dic['num_materia'] = ''
for documento in context.zsql.documento_administrativo_obter_zsql(num_protocolo=protocolo.cod_protocolo): for materia in context.zsql.materia_obter_zsql(num_protocolo=protocolo.cod_protocolo, ano_ident_basica=protocolo.ano_protocolo):
dic['num_documento']=documento.sgl_tipo_documento+' '+str(documento.num_documento)+'/'+ str(documento.ano_documento) dic['num_materia'] = materia.sgl_tipo_materia + ' ' + \
str(materia.num_ident_basica) + '/' + str(materia.ano_ident_basica)
dic['ident_processo']=dic['num_materia'] or dic['num_documento'] dic['num_documento'] = ''
for documento in context.zsql.documento_administrativo_obter_zsql(num_protocolo=protocolo.cod_protocolo):
dic['num_documento'] = documento.sgl_tipo_documento + ' ' + \
str(documento.num_documento) + '/' + str(documento.ano_documento)
dic['processo']=protocolo.des_tipo_materia or protocolo.des_tipo_documento dic['ident_processo'] = dic['num_materia'] or dic['num_documento']
dic['anulado']='' dic['processo'] = protocolo.des_tipo_materia or protocolo.des_tipo_documento
if protocolo.ind_anulado==1:
dic['anulado']='Nulo'
protocolos.append(dic) dic['anulado'] = ''
if protocolo.ind_anulado == 1:
dic['anulado'] = 'Nulo'
filtro={} # Dicionário que conterá os dados do filtro protocolos.append(dic)
filtro = {} # Dicionário que conterá os dados do filtro
# Atribuições diretas do REQUEST # Atribuições diretas do REQUEST
filtro['numero']=REQUEST.txt_num_protocolo filtro['numero'] = REQUEST.txt_num_protocolo
filtro['ano']=REQUEST.txt_ano_protocolo filtro['ano'] = REQUEST.txt_ano_protocolo
filtro['tipo_protocolo']=REQUEST.rad_tip_protocolo filtro['tipo_protocolo'] = REQUEST.rad_tip_protocolo
filtro['tipo_processo']=REQUEST.rad_tip_processo filtro['tipo_processo'] = REQUEST.rad_tip_processo
filtro['assunto']=REQUEST.txt_assunto filtro['assunto'] = REQUEST.txt_assunto
filtro['autor']=REQUEST.hdn_cod_autor filtro['autor'] = REQUEST.hdn_cod_autor
filtro['interessado']=REQUEST.txa_txt_interessado filtro['interessado'] = REQUEST.txa_txt_interessado
sessao=session.id sessao = session.id
caminho = context.pdf_etiqueta_protocolo_gerar(sessao,imagem,data,protocolos,cabecalho,rodape,filtro) caminho = context.pdf_etiqueta_protocolo_gerar(
if caminho=='aviso': sessao, imagem, data, protocolos, cabecalho, rodape, filtro)
return response.redirect('mensagem_emitir_proc') if caminho == 'aviso':
return response.redirect('mensagem_emitir_proc')
else: else:
response.redirect(caminho) response.redirect(caminho)

152
sapl/relatorios/templates/pdf_materia_gerar.py

@ -1,4 +1,4 @@
##parameters=sessao,imagem,data,lst_materias,dic_cabecalho,lst_rodape,dic_filtro # parameters=sessao,imagem,data,lst_materias,dic_cabecalho,lst_rodape,dic_filtro
"""relatorio_materia.py """relatorio_materia.py
External method para gerar o arquivo rml do resultado de uma pesquisa de matérias External method para gerar o arquivo rml do resultado de uma pesquisa de matérias
@ -11,100 +11,113 @@ import time
from trml2pdf import parseString from trml2pdf import parseString
def cabecalho(dic_cabecalho,imagem): def cabecalho(dic_cabecalho, imagem):
"""Gera o codigo rml do cabecalho""" """Gera o codigo rml do cabecalho"""
tmp_data='' tmp_data = ''
tmp_data+='\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + imagem + '"/>\n' tmp_data += '\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + imagem + '"/>\n'
tmp_data+='\t\t\t\t<lines>2cm 25cm 19cm 25cm</lines>\n' tmp_data += '\t\t\t\t<lines>2cm 25cm 19cm 25cm</lines>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica-Bold" size="16"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="16"/>\n'
tmp_data+='\t\t\t\t<drawString x="5cm" y="27.1cm">' + dic_cabecalho['nom_casa'] + '</drawString>\n' tmp_data += '\t\t\t\t<drawString x="5cm" y="27.1cm">' + \
tmp_data+='\t\t\t\t<setFont name="Helvetica" size="13"/>\n' dic_cabecalho['nom_casa'] + '</drawString>\n'
tmp_data+='\t\t\t\t<drawString x="5cm" y="26.5cm">' + dic_cabecalho['nom_estado'] + '</drawString>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica" size="13"/>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n' tmp_data += '\t\t\t\t<drawString x="5cm" y="26.5cm">' + \
tmp_data+='\t\t\t\t<drawCentredString x="10.5cm" y="25.2cm">Relatório de Matérias Legislativas</drawCentredString>\n' dic_cabecalho['nom_estado'] + '</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n'
tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="25.2cm">Relatório de Matérias Legislativas</drawCentredString>\n'
return tmp_data return tmp_data
def rodape(lst_rodape): def rodape(lst_rodape):
"""Gera o codigo rml do rodape""" """Gera o codigo rml do rodape"""
tmp_data='' tmp_data = ''
tmp_data+='\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n' tmp_data += '\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica" size="8"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica" size="8"/>\n'
tmp_data+='\t\t\t\t<drawString x="2cm" y="3.3cm">' + lst_rodape[2] + '</drawString>\n' tmp_data += '\t\t\t\t<drawString x="2cm" y="3.3cm">' + \
tmp_data+='\t\t\t\t<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n' lst_rodape[2] + '</drawString>\n'
tmp_data+='\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + lst_rodape[0] + '</drawCentredString>\n' tmp_data += '\t\t\t\t<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n'
tmp_data+='\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + lst_rodape[1] + '</drawCentredString>\n' tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + \
lst_rodape[0] + '</drawCentredString>\n'
tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + \
lst_rodape[1] + '</drawCentredString>\n'
return tmp_data return tmp_data
def paraStyle(): def paraStyle():
"""Gera o codigo rml que define o estilo dos paragrafos""" """Gera o codigo rml que define o estilo dos paragrafos"""
tmp_data='' tmp_data = ''
tmp_data+='\t<stylesheet>\n' tmp_data += '\t<stylesheet>\n'
tmp_data+='\t\t<blockTableStyle id="Standard_Outline">\n' tmp_data += '\t\t<blockTableStyle id="Standard_Outline">\n'
tmp_data+='\t\t\t<blockAlignment value="LEFT"/>\n' tmp_data += '\t\t\t<blockAlignment value="LEFT"/>\n'
tmp_data+='\t\t\t<blockValign value="TOP"/>\n' tmp_data += '\t\t\t<blockValign value="TOP"/>\n'
tmp_data+='\t\t</blockTableStyle>\n' tmp_data += '\t\t</blockTableStyle>\n'
tmp_data+='\t\t<initialize>\n' tmp_data += '\t\t<initialize>\n'
tmp_data+='\t\t\t<paraStyle name="all" alignment="justify"/>\n' tmp_data += '\t\t\t<paraStyle name="all" alignment="justify"/>\n'
tmp_data+='\t\t</initialize>\n' tmp_data += '\t\t</initialize>\n'
tmp_data+='\t\t<paraStyle name="P1" fontName="Helvetica-Bold" fontSize="10.0" leading="12" spaceAfter="2" alignment="left"/>\n' tmp_data += '\t\t<paraStyle name="P1" fontName="Helvetica-Bold" fontSize="10.0" leading="12" spaceAfter="2" alignment="left"/>\n'
tmp_data+='\t\t<paraStyle name="P2" fontName="Helvetica" fontSize="9.0" leading="12" spaceAfter="2" alignment="justify"/>\n' tmp_data += '\t\t<paraStyle name="P2" fontName="Helvetica" fontSize="9.0" leading="12" spaceAfter="2" alignment="justify"/>\n'
tmp_data+='\t</stylesheet>\n' tmp_data += '\t</stylesheet>\n'
return tmp_data return tmp_data
def materias(lst_materias): def materias(lst_materias):
"""Gera o codigo rml do conteudo da pesquisa de materias""" """Gera o codigo rml do conteudo da pesquisa de materias"""
tmp_data='' tmp_data = ''
#inicio do bloco que contem os flowables # inicio do bloco que contem os flowables
tmp_data+='\t<story>\n' tmp_data += '\t<story>\n'
for dic in lst_materias: for dic in lst_materias:
#espaco inicial # espaco inicial
tmp_data+='\t\t<para style="P2">\n' tmp_data += '\t\t<para style="P2">\n'
tmp_data+='\t\t\t<font color="white"> </font>\n' tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data+='\t\t</para>\n' tmp_data += '\t\t</para>\n'
#condicao para a quebra de pagina # condicao para a quebra de pagina
tmp_data+='\t\t<condPageBreak height="1.5cm"/>\n' tmp_data += '\t\t<condPageBreak height="1.5cm"/>\n'
#materias # materias
tmp_data+='\t\t<para style="P1"> <b>'+ dic['titulo'] +'</b> - <b>Autor: </b>' + dic['nom_autor'] + ' </para>\n' tmp_data += '\t\t<para style="P1"> <b>' + \
if dic['txt_ementa']!=None: dic['titulo'] + '</b> - <b>Autor: </b>' + \
txt_ementa = dic['txt_ementa'].replace('&','&amp;') dic['nom_autor'] + ' </para>\n'
tmp_data+='\t\t<para style="P2"> '+ txt_ementa +' </para>\n' if dic['txt_ementa'] != None:
tmp_data+='\t\t<para style="P2"><b>Situação:</b> ' + dic['des_situacao'] + '/ <b>Norma Jurídica Vinculada:</b> ' + dic['norma_vinculada'] + '</para>\n' txt_ementa = dic['txt_ementa'].replace('&', '&amp;')
tmp_data += '\t\t<para style="P2"> ' + txt_ementa + ' </para>\n'
tmp_data+='\t</story>\n' tmp_data += '\t\t<para style="P2"><b>Situação:</b> ' + \
dic['des_situacao'] + '/ <b>Norma Jurídica Vinculada:</b> ' + \
dic['norma_vinculada'] + '</para>\n'
tmp_data += '\t</story>\n'
return tmp_data return tmp_data
def principal(imagem, lst_materias, dic_cabecalho, lst_rodape): def principal(imagem, lst_materias, dic_cabecalho, lst_rodape):
"""Funcao pricipal que gera a estrutura global do arquivo rml""" """Funcao pricipal que gera a estrutura global do arquivo rml"""
arquivoPdf=str(int(time.time()*100))+".pdf" arquivoPdf = str(int(time.time() * 100)) + ".pdf"
tmp_data='' tmp_data = ''
tmp_data+='<?xml version="1.0" encoding="utf-8" standalone="no" ?>\n' tmp_data += '<?xml version="1.0" encoding="utf-8" standalone="no" ?>\n'
tmp_data+='<!DOCTYPE document SYSTEM "rml_1_0.dtd">\n' tmp_data += '<!DOCTYPE document SYSTEM "rml_1_0.dtd">\n'
tmp_data+='<document filename="relatorio.pdf">\n' tmp_data += '<document filename="relatorio.pdf">\n'
tmp_data+='\t<template pageSize="(21cm, 29.7cm)" title="Relatorio de Materias" author="Interlegis" allowSplitting="20">\n' tmp_data += '\t<template pageSize="(21cm, 29.7cm)" title="Relatorio de Materias" author="Interlegis" allowSplitting="20">\n'
tmp_data+='\t\t<pageTemplate id="first">\n' tmp_data += '\t\t<pageTemplate id="first">\n'
tmp_data+='\t\t\t<pageGraphics>\n' tmp_data += '\t\t\t<pageGraphics>\n'
tmp_data+=cabecalho(dic_cabecalho,imagem) tmp_data += cabecalho(dic_cabecalho, imagem)
tmp_data+=rodape(lst_rodape) tmp_data += rodape(lst_rodape)
tmp_data+='\t\t\t</pageGraphics>\n' tmp_data += '\t\t\t</pageGraphics>\n'
tmp_data+='\t\t\t<frame id="first" x1="2cm" y1="4cm" width="17cm" height="21cm"/>\n' tmp_data += '\t\t\t<frame id="first" x1="2cm" y1="4cm" width="17cm" height="21cm"/>\n'
tmp_data+='\t\t</pageTemplate>\n' tmp_data += '\t\t</pageTemplate>\n'
tmp_data+='\t</template>\n' tmp_data += '\t</template>\n'
tmp_data+=paraStyle() tmp_data += paraStyle()
tmp_data+=materias(lst_materias) tmp_data += materias(lst_materias)
tmp_data+='</document>\n' tmp_data += '</document>\n'
tmp_pdf=parseString(tmp_data) tmp_pdf = parseString(tmp_data)
return tmp_pdf return tmp_pdf
@ -116,4 +129,5 @@ def principal(imagem, lst_materias, dic_cabecalho, lst_rodape):
# return "/temp_folder/"+arquivoPdf # return "/temp_folder/"+arquivoPdf
# return principal(sessao,imagem,data,lst_materias,dic_cabecalho,lst_rodape,dic_filtro) # return
# principal(sessao,imagem,data,lst_materias,dic_cabecalho,lst_rodape,dic_filtro)

272
sapl/relatorios/templates/pdf_materia_preparar_pysc.py

@ -1,155 +1,169 @@
import os import os
request=context.REQUEST request = context.REQUEST
#print request # print request
#return printed # return printed
response=request.RESPONSE response = request.RESPONSE
session= request.SESSION session = request.SESSION
data=DateTime().strftime('%d/%m/%Y') data = DateTime().strftime('%d/%m/%Y')
#Abaixo é gerada a string para o rodapé da página # Abaixo é gerada a string para o rodapé da página
casa={} casa = {}
aux=context.sapl_documentos.props_sapl.propertyItems() aux = context.sapl_documentos.props_sapl.propertyItems()
for item in aux: for item in aux:
casa[item[0]]=item[1] casa[item[0]] = item[1]
localidade=context.zsql.localidade_obter_zsql(cod_localidade=casa["cod_localidade"]) localidade = context.zsql.localidade_obter_zsql(
if len(casa["num_cep"])==8: cod_localidade=casa["cod_localidade"])
cep=casa["num_cep"][:4]+"-"+casa["num_cep"][5:] if len(casa["num_cep"]) == 8:
cep = casa["num_cep"][:4] + "-" + casa["num_cep"][5:]
else: else:
cep="" cep = ""
linha1=casa["end_casa"] linha1 = casa["end_casa"]
if cep!="": if cep != "":
if casa["end_casa"]!="" and casa["end_casa"]!=None: if casa["end_casa"] != "" and casa["end_casa"] != None:
linha1 = linha1 + " - " linha1 = linha1 + " - "
linha1 = linha1 + "CEP "+cep linha1 = linha1 + "CEP " + cep
if localidade[0].nom_localidade!="" and localidade[0].nom_localidade!=None: if localidade[0].nom_localidade != "" and localidade[0].nom_localidade != None:
linha1 = linha1 + " - "+localidade[0].nom_localidade+" "+localidade[0].sgl_uf linha1 = linha1 + " - " + \
if casa["num_tel"]!="" and casa["num_tel"]!=None: localidade[0].nom_localidade + " " + localidade[0].sgl_uf
linha1 = linha1 + " Tel.: "+ casa["num_tel"] if casa["num_tel"] != "" and casa["num_tel"] != None:
linha1 = linha1 + " Tel.: " + casa["num_tel"]
linha2=casa["end_web_casa"]
if casa["end_email_casa"]!="" and casa["end_email_casa"]!=None: linha2 = casa["end_web_casa"]
if casa["end_web_casa"]!="" and casa["end_web_casa"]!=None: if casa["end_email_casa"] != "" and casa["end_email_casa"] != None:
linha2 = linha2 + " - " if casa["end_web_casa"] != "" and casa["end_web_casa"] != None:
linha2 = linha2 + "E-mail: "+casa["end_email_casa"] linha2 = linha2 + " - "
linha2 = linha2 + "E-mail: " + casa["end_email_casa"]
data_emissao=DateTime().strftime("%d/%m/%Y")
rodape=[linha1,linha2,data_emissao] data_emissao = DateTime().strftime("%d/%m/%Y")
rodape = [linha1, linha2, data_emissao]
#Por fim, gera-se as entradas para o cabeçalho
estados=context.zsql.localidade_obter_zsql(tip_localidade="u") # Por fim, gera-se as entradas para o cabeçalho
estados = context.zsql.localidade_obter_zsql(tip_localidade="u")
for uf in estados: for uf in estados:
if localidade[0].sgl_uf==uf.sgl_uf: if localidade[0].sgl_uf == uf.sgl_uf:
nom_estado=uf.nom_localidade nom_estado = uf.nom_localidade
break break
cabecalho={} cabecalho = {}
cabecalho["nom_casa"]=casa["nom_casa"] cabecalho["nom_casa"] = casa["nom_casa"]
cabecalho["nom_estado"]="Estado de "+nom_estado cabecalho["nom_estado"] = "Estado de " + nom_estado
# tenta buscar o logotipo da casa LOGO_CASA # tenta buscar o logotipo da casa LOGO_CASA
if hasattr(context.sapl_documentos.props_sapl,'logo_casa.gif'): if hasattr(context.sapl_documentos.props_sapl, 'logo_casa.gif'):
imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url() imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url()
else: else:
imagem = context.imagens.absolute_url() + "/brasao_transp.gif" imagem = context.imagens.absolute_url() + "/brasao_transp.gif"
#Por fim, utiliza o PythonScript para pesquisar as matérias e gerar os dados # Por fim, utiliza o PythonScript para pesquisar as matérias e gerar os dados
materias=[] materias = []
REQUEST=context.REQUEST REQUEST = context.REQUEST
for materia in context.zsql.materia_pesquisar_zsql(tip_id_basica=REQUEST['lst_tip_materia'], num_ident_basica=REQUEST['txt_numero'], for materia in context.zsql.materia_pesquisar_zsql(tip_id_basica=REQUEST['lst_tip_materia'], num_ident_basica=REQUEST['txt_numero'],
ano_ident_basica=REQUEST['txt_ano'], ind_tramitacao=REQUEST['rad_tramitando'], ano_ident_basica=REQUEST[
des_assunto=REQUEST['txt_assunto'], nom_relator=REQUEST['txt_relator'], 'txt_ano'], ind_tramitacao=REQUEST['rad_tramitando'],
cod_status=REQUEST['lst_status'], des_tipo_autor=REQUEST['lst_tip_autor'], des_assunto=REQUEST[
dat_apresentacao=REQUEST['dt_apres'], dat_apresentacao2=REQUEST['dt_apres2'], 'txt_assunto'], nom_relator=REQUEST['txt_relator'],
dat_publicacao=REQUEST['dt_public'], dat_publicacao2=REQUEST['dt_public2'], cod_status=REQUEST['lst_status'], des_tipo_autor=REQUEST[
cod_partido=REQUEST['lst_cod_partido'],cod_autor=REQUEST['hdn_cod_autor'], 'lst_tip_autor'],
rd_ordem=REQUEST['rd_ordenacao'],rd_ordem_td=REQUEST['rd_ordem_td']): dat_apresentacao=REQUEST[
'dt_apres'], dat_apresentacao2=REQUEST['dt_apres2'],
dic={} dat_publicacao=REQUEST[
'dt_public'], dat_publicacao2=REQUEST['dt_public2'],
dic['titulo']=materia.sgl_tipo_materia+" "+materia.des_tipo_materia+" "+str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica) cod_partido=REQUEST['lst_cod_partido'], cod_autor=REQUEST[
dic['txt_ementa']=materia.txt_ementa 'hdn_cod_autor'],
dic['nom_autor'] = " " rd_ordem=REQUEST['rd_ordenacao'], rd_ordem_td=REQUEST['rd_ordem_td']):
for autoria in context.zsql.autoria_obter_zsql(cod_materia=materia.cod_materia):
for autor in context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor): dic = {}
if autor.des_tipo_autor=='Parlamentar':
for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar): dic['titulo'] = materia.sgl_tipo_materia + " " + materia.des_tipo_materia + \
dic['nom_autor']=parlamentar.nom_completo " " + str(materia.num_ident_basica) + "/" + \
elif autor.des_tipo_autor=='Comissao': str(materia.ano_ident_basica)
for comissao in context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao): dic['txt_ementa'] = materia.txt_ementa
dic['nom_autor']=comissao.nom_comissao dic['nom_autor'] = " "
else: for autoria in context.zsql.autoria_obter_zsql(cod_materia=materia.cod_materia):
dic['nom_autor']=autor.nom_autor for autor in context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor):
if autor.des_tipo_autor == 'Parlamentar':
des_status = '' for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar):
txt_tramitacao='' dic['nom_autor'] = parlamentar.nom_completo
elif autor.des_tipo_autor == 'Comissao':
dic['localizacao_atual']=" " for comissao in context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao):
for tramitacao in context.zsql.tramitacao_obter_zsql(cod_materia=materia.cod_materia,ind_ult_tramitacao=1): dic['nom_autor'] = comissao.nom_comissao
if tramitacao.cod_unid_tram_dest:
cod_unid_tram = tramitacao.cod_unid_tram_dest
else: else:
cod_unid_tram = tramitacao.cod_unid_tram_local dic['nom_autor'] = autor.nom_autor
for unidade_tramitacao in context.zsql.unidade_tramitacao_obter_zsql(cod_unid_tramitacao = cod_unid_tram):
if unidade_tramitacao.cod_orgao:
dic['localizacao_atual']=unidade_tramitacao.nom_orgao
else:
dic['localizacao_atual']=unidade_tramitacao.nom_comissao
des_status=tramitacao.des_status
txt_tramitacao=tramitacao.txt_tramitacao
dic['des_situacao']=des_status des_status = ''
dic['ultima_acao']=txt_tramitacao txt_tramitacao = ''
dic['localizacao_atual'] = " "
for tramitacao in context.zsql.tramitacao_obter_zsql(cod_materia=materia.cod_materia, ind_ult_tramitacao=1):
if tramitacao.cod_unid_tram_dest:
cod_unid_tram = tramitacao.cod_unid_tram_dest
else:
cod_unid_tram = tramitacao.cod_unid_tram_local
dic['norma_vinculada']=" " for unidade_tramitacao in context.zsql.unidade_tramitacao_obter_zsql(cod_unid_tramitacao=cod_unid_tram):
for norma_vinculada in context.zsql.materia_buscar_norma_juridica_zsql(cod_materia=materia.cod_materia): if unidade_tramitacao.cod_orgao:
dic['norma_vinculada']=norma_vinculada.des_norma+" "+str(norma_vinculada.num_norma)+"/"+str(norma_vinculada.ano_norma) dic['localizacao_atual'] = unidade_tramitacao.nom_orgao
else:
dic['localizacao_atual'] = unidade_tramitacao.nom_comissao
des_status = tramitacao.des_status
txt_tramitacao = tramitacao.txt_tramitacao
dic['des_situacao'] = des_status
dic['ultima_acao'] = txt_tramitacao
dic['norma_vinculada'] = " "
for norma_vinculada in context.zsql.materia_buscar_norma_juridica_zsql(cod_materia=materia.cod_materia):
dic['norma_vinculada'] = norma_vinculada.des_norma + " " + \
str(norma_vinculada.num_norma) + "/" + \
str(norma_vinculada.ano_norma)
materias.append(dic) materias.append(dic)
filtro={} # Dicionário que conterá os dados do filtro filtro = {} # Dicionário que conterá os dados do filtro
# Atribuições diretas do REQUEST # Atribuições diretas do REQUEST
filtro['numero']=REQUEST.txt_numero filtro['numero'] = REQUEST.txt_numero
filtro['ano']=REQUEST.txt_ano filtro['ano'] = REQUEST.txt_ano
filtro['autor']=REQUEST.hdn_txt_autor filtro['autor'] = REQUEST.hdn_txt_autor
filtro['tipo_autor']=REQUEST.lst_tip_autor filtro['tipo_autor'] = REQUEST.lst_tip_autor
filtro['relator']=REQUEST.txt_relator filtro['relator'] = REQUEST.txt_relator
filtro['assunto']=REQUEST.txt_assunto filtro['assunto'] = REQUEST.txt_assunto
# Atribuição do restante dos dados que precisam de processamento # Atribuição do restante dos dados que precisam de processamento
if REQUEST.hdn_txt_autor==' ': # Corrige bug do Netscape if REQUEST.hdn_txt_autor == ' ': # Corrige bug do Netscape
filtro['autor']='' filtro['autor'] = ''
filtro['tipo_materia']='' filtro['tipo_materia'] = ''
if REQUEST.lst_tip_materia!='': if REQUEST.lst_tip_materia != '':
for tipo_materia in context.zsql.tipo_materia_legislativa_obter_zsql(ind_excluido=0, tip_materia=REQUEST.lst_tip_materia): for tipo_materia in context.zsql.tipo_materia_legislativa_obter_zsql(ind_excluido=0, tip_materia=REQUEST.lst_tip_materia):
filtro['tipo_materia']= tipo_materia.sgl_tipo_materia + ' - ' + tipo_materia.des_tipo_materia filtro['tipo_materia'] = tipo_materia.sgl_tipo_materia + \
' - ' + tipo_materia.des_tipo_materia
filtro['partido']=''
if REQUEST.lst_cod_partido!='': filtro['partido'] = ''
for partido in context.zsql.partido_obter_zsql(ind_excluido=0,cod_partido=REQUEST.lst_cod_partido): if REQUEST.lst_cod_partido != '':
filtro['partido']=partido.sgl_partido + ' - ' + partido.nom_partido for partido in context.zsql.partido_obter_zsql(ind_excluido=0, cod_partido=REQUEST.lst_cod_partido):
filtro['partido'] = partido.sgl_partido + ' - ' + partido.nom_partido
filtro['tramitando']=''
if REQUEST.rad_tramitando=='1': filtro['tramitando'] = ''
filtro['tramitacao']='Sim' if REQUEST.rad_tramitando == '1':
elif REQUEST['rad_tramitando']=='0': filtro['tramitacao'] = 'Sim'
filtro['tramitacao']='Não' elif REQUEST['rad_tramitando'] == '0':
filtro['tramitacao'] = 'Não'
filtro['situacao_atual']=''
if REQUEST.lst_status!='': filtro['situacao_atual'] = ''
for status in context.zsql.status_tramitacao_obter_zsql(ind_excluido=0,cod_status=REQUEST.lst_status): if REQUEST.lst_status != '':
filtro['situacao_atual']=status.sgl_status + ' - ' + status.des_status for status in context.zsql.status_tramitacao_obter_zsql(ind_excluido=0, cod_status=REQUEST.lst_status):
filtro['situacao_atual'] = status.sgl_status + \
sessao=session.id ' - ' + status.des_status
caminho = context.pdf_materia_gerar(sessao,imagem,data,materias,cabecalho,rodape,filtro)
if caminho=='aviso': sessao = session.id
return response.redirect('mensagem_emitir_proc') caminho = context.pdf_materia_gerar(
sessao, imagem, data, materias, cabecalho, rodape, filtro)
if caminho == 'aviso':
return response.redirect('mensagem_emitir_proc')
else: else:
response.redirect(caminho) response.redirect(caminho)

164
sapl/relatorios/templates/pdf_norma_gerar.py

@ -1,4 +1,4 @@
##parameters=sessao,imagem,data,lst_normas,dic_cabecalho,lst_rodape,dic_filtro # parameters=sessao,imagem,data,lst_normas,dic_cabecalho,lst_rodape,dic_filtro
"""relatorio_norma.py """relatorio_norma.py
External method para gerar o arquivo rml do resultado de uma pesquisa de normas External method para gerar o arquivo rml do resultado de uma pesquisa de normas
@ -11,108 +11,117 @@ import time
from trml2pdf import parseString from trml2pdf import parseString
def cabecalho(inf_basicas_dic,imagem): def cabecalho(inf_basicas_dic, imagem):
"""Gera o codigo rml do cabecalho""" """Gera o codigo rml do cabecalho"""
tmp_data='' tmp_data = ''
tmp_data+='\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + imagem + '"/>\n' tmp_data += '\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + imagem + '"/>\n'
tmp_data+='\t\t\t\t<lines>2cm 25.4cm 19cm 25.4cm</lines>\n' tmp_data += '\t\t\t\t<lines>2cm 25.4cm 19cm 25.4cm</lines>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n'
tmp_data+='\t\t\t\t<drawString x="5cm" y="27.2cm">' + dic_cabecalho['nom_casa'] + '</drawString>\n' tmp_data += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \
tmp_data+='\t\t\t\t<setFont name="Helvetica" size="12"/>\n' dic_cabecalho['nom_casa'] + '</drawString>\n'
tmp_data+='\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica" size="12"/>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n' tmp_data += '\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
tmp_data+='\t\t\t\t<drawString x="2.2cm" y="24.6cm">Relatório de Normas Jurídicas</drawString>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n'
tmp_data += '\t\t\t\t<drawString x="2.2cm" y="24.6cm">Relatório de Normas Jurídicas</drawString>\n'
return tmp_data return tmp_data
def rodape(lst_rodape): def rodape(lst_rodape):
"""Gera o codigo rml do rodape""" """Gera o codigo rml do rodape"""
tmp_data='' tmp_data = ''
tmp_data+='\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n' tmp_data += '\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica" size="8"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica" size="8"/>\n'
tmp_data+='\t\t\t\t<drawString x="2cm" y="3.3cm">' + lst_rodape[2] + '</drawString>\n' tmp_data += '\t\t\t\t<drawString x="2cm" y="3.3cm">' + \
tmp_data+='\t\t\t\t<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n' lst_rodape[2] + '</drawString>\n'
tmp_data+='\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + lst_rodape[0] + '</drawCentredString>\n' tmp_data += '\t\t\t\t<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n'
tmp_data+='\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + lst_rodape[1] + '</drawCentredString>\n' tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + \
lst_rodape[0] + '</drawCentredString>\n'
tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + \
lst_rodape[1] + '</drawCentredString>\n'
return tmp_data return tmp_data
def paraStyle(): def paraStyle():
"""Gera o codigo rml que define o estilo dos paragrafos""" """Gera o codigo rml que define o estilo dos paragrafos"""
tmp_data='' tmp_data = ''
tmp_data+='\t<stylesheet>\n' tmp_data += '\t<stylesheet>\n'
tmp_data+='\t\t<blockTableStyle id="Standard_Outline">\n' tmp_data += '\t\t<blockTableStyle id="Standard_Outline">\n'
tmp_data+='\t\t\t<blockAlignment value="LEFT"/>\n' tmp_data += '\t\t\t<blockAlignment value="LEFT"/>\n'
tmp_data+='\t\t\t<blockValign value="TOP"/>\n' tmp_data += '\t\t\t<blockValign value="TOP"/>\n'
tmp_data+='\t\t</blockTableStyle>\n' tmp_data += '\t\t</blockTableStyle>\n'
tmp_data+='\t\t<initialize>\n' tmp_data += '\t\t<initialize>\n'
tmp_data+='\t\t\t<paraStyle name="all" alignment="justify"/>\n' tmp_data += '\t\t\t<paraStyle name="all" alignment="justify"/>\n'
tmp_data+='\t\t</initialize>\n' tmp_data += '\t\t</initialize>\n'
tmp_data+='\t\t<paraStyle name="P1" fontName="Helvetica-Bold" fontSize="10.0" leading="10" alignment="CENTER"/>\n' tmp_data += '\t\t<paraStyle name="P1" fontName="Helvetica-Bold" fontSize="10.0" leading="10" alignment="CENTER"/>\n'
tmp_data+='\t\t<paraStyle name="P2" fontName="Helvetica" fontSize="10.0" leading="13" alignment="justify"/>\n' tmp_data += '\t\t<paraStyle name="P2" fontName="Helvetica" fontSize="10.0" leading="13" alignment="justify"/>\n'
tmp_data+='\t</stylesheet>\n' tmp_data += '\t</stylesheet>\n'
return tmp_data return tmp_data
def normas(lst_normas): def normas(lst_normas):
"""Gera o codigo rml do conteudo da pesquisa de normas""" """Gera o codigo rml do conteudo da pesquisa de normas"""
tmp_data='' tmp_data = ''
#inicio do bloco que contem os flowables # inicio do bloco que contem os flowables
tmp_data+='\t<story>\n' tmp_data += '\t<story>\n'
for dic in lst_normas: for dic in lst_normas:
#espaco inicial # espaco inicial
tmp_data+='\t\t<para style="P2">\n' tmp_data += '\t\t<para style="P2">\n'
tmp_data+='\t\t\t<font color="white"> </font>\n' tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data+='\t\t</para>\n' tmp_data += '\t\t</para>\n'
tmp_data+='\t\t<para style="P2">\n' tmp_data += '\t\t<para style="P2">\n'
tmp_data+='\t\t\t<font color="white"> </font>\n' tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data+='\t\t</para>\n' tmp_data += '\t\t</para>\n'
#condicao para a quebra de pagina # condicao para a quebra de pagina
tmp_data+='\t\t<condPageBreak height="4cm"/>\n' tmp_data += '\t\t<condPageBreak height="4cm"/>\n'
#normas # normas
if dic['titulo']!=None: if dic['titulo'] != None:
tmp_data+='\t\t<para style="P1">' + dic['titulo'] + '</para>\n' tmp_data += '\t\t<para style="P1">' + dic['titulo'] + '</para>\n'
tmp_data+='\t\t<para style="P1">\n' tmp_data += '\t\t<para style="P1">\n'
tmp_data+='\t\t\t<font color="white"> </font>\n' tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data+='\t\t</para>\n' tmp_data += '\t\t</para>\n'
if dic['txt_ementa']!=None: if dic['txt_ementa'] != None:
txt_ementa = dic['txt_ementa'].replace('&','&amp;') txt_ementa = dic['txt_ementa'].replace('&', '&amp;')
tmp_data+='\t\t<para style="P2">' + txt_ementa + '</para>\n' tmp_data += '\t\t<para style="P2">' + txt_ementa + '</para>\n'
if dic['materia_vinculada']!=None: if dic['materia_vinculada'] != None:
tmp_data+='\t\t<para style="P2"><b>Matéria Legislativa:</b> ' + dic['materia_vinculada'] + '</para>\n' tmp_data += '\t\t<para style="P2"><b>Matéria Legislativa:</b> ' + \
dic['materia_vinculada'] + '</para>\n'
tmp_data+='\t</story>\n'
tmp_data += '\t</story>\n'
return tmp_data return tmp_data
def principal(imagem, lst_normas, dic_cabecalho, lst_rodape): def principal(imagem, lst_normas, dic_cabecalho, lst_rodape):
"""Funcao pricipal que gera a estrutura global do arquivo rml""" """Funcao pricipal que gera a estrutura global do arquivo rml"""
arquivoPdf=str(int(time.time()*100))+".pdf" arquivoPdf = str(int(time.time() * 100)) + ".pdf"
tmp_data='' tmp_data = ''
tmp_data+='<?xml version="1.0" encoding="utf-8" standalone="no" ?>\n' tmp_data += '<?xml version="1.0" encoding="utf-8" standalone="no" ?>\n'
tmp_data+='<!DOCTYPE document SYSTEM "rml_1_0.dtd">\n' tmp_data += '<!DOCTYPE document SYSTEM "rml_1_0.dtd">\n'
tmp_data+='<document filename="relatorio.pdf">\n' tmp_data += '<document filename="relatorio.pdf">\n'
tmp_data+='\t<template pageSize="(21cm, 29.7cm)" title="Relatório de Normas Jurídicas" author="Luciano De Fazio" allowSplitting="20">\n' tmp_data += '\t<template pageSize="(21cm, 29.7cm)" title="Relatório de Normas Jurídicas" author="Luciano De Fazio" allowSplitting="20">\n'
tmp_data+='\t\t<pageTemplate id="first">\n' tmp_data += '\t\t<pageTemplate id="first">\n'
tmp_data+='\t\t\t<pageGraphics>\n' tmp_data += '\t\t\t<pageGraphics>\n'
tmp_data+=cabecalho(dic_cabecalho,imagem) tmp_data += cabecalho(dic_cabecalho, imagem)
tmp_data+=rodape(lst_rodape) tmp_data += rodape(lst_rodape)
tmp_data+='\t\t\t</pageGraphics>\n' tmp_data += '\t\t\t</pageGraphics>\n'
tmp_data+='\t\t\t<frame id="first" x1="2cm" y1="3cm" width="17cm" height="21cm"/>\n' tmp_data += '\t\t\t<frame id="first" x1="2cm" y1="3cm" width="17cm" height="21cm"/>\n'
tmp_data+='\t\t</pageTemplate>\n' tmp_data += '\t\t</pageTemplate>\n'
tmp_data+='\t</template>\n' tmp_data += '\t</template>\n'
tmp_data+=paraStyle() tmp_data += paraStyle()
tmp_data+=normas(lst_normas) tmp_data += normas(lst_normas)
tmp_data+='</document>\n' tmp_data += '</document>\n'
tmp_pdf=parseString(tmp_data) tmp_pdf = parseString(tmp_data)
return tmp_pdf return tmp_pdf
@ -124,4 +133,5 @@ def principal(imagem, lst_normas, dic_cabecalho, lst_rodape):
# return "/temp_folder/"+arquivoPdf # return "/temp_folder/"+arquivoPdf
# return principal(sessao,imagem,data,lst_normas,dic_cabecalho,lst_rodape,dic_filtro) # return
# principal(sessao,imagem,data,lst_normas,dic_cabecalho,lst_rodape,dic_filtro)

153
sapl/relatorios/templates/pdf_norma_preparar_pysc.py

@ -1,94 +1,105 @@
import os import os
request=context.REQUEST request = context.REQUEST
response=request.RESPONSE response = request.RESPONSE
session= request.SESSION session = request.SESSION
data=DateTime().strftime('%d/%m/%Y') data = DateTime().strftime('%d/%m/%Y')
#Abaixo é gerada a string para o rodapé da página # Abaixo é gerada a string para o rodapé da página
casa={} casa = {}
aux=context.sapl_documentos.props_sapl.propertyItems() aux = context.sapl_documentos.props_sapl.propertyItems()
for item in aux: for item in aux:
casa[item[0]]=item[1] casa[item[0]] = item[1]
localidade=context.zsql.localidade_obter_zsql(cod_localidade=casa["cod_localidade"]) localidade = context.zsql.localidade_obter_zsql(
if len(casa["num_cep"])==8: cod_localidade=casa["cod_localidade"])
cep=casa["num_cep"][:4]+"-"+casa["num_cep"][5:] if len(casa["num_cep"]) == 8:
cep = casa["num_cep"][:4] + "-" + casa["num_cep"][5:]
else: else:
cep="" cep = ""
linha1=casa["end_casa"] linha1 = casa["end_casa"]
if cep!="": if cep != "":
if casa["end_casa"]!="" and casa["end_casa"]!=None: if casa["end_casa"] != "" and casa["end_casa"] != None:
linha1 = linha1 + " - " linha1 = linha1 + " - "
linha1 = linha1 + "CEP "+cep linha1 = linha1 + "CEP " + cep
if localidade[0].nom_localidade!="" and localidade[0].nom_localidade!=None: if localidade[0].nom_localidade != "" and localidade[0].nom_localidade != None:
linha1 = linha1 + " - "+localidade[0].nom_localidade+" "+localidade[0].sgl_uf linha1 = linha1 + " - " + \
if casa["num_tel"]!="" and casa["num_tel"]!=None: localidade[0].nom_localidade + " " + localidade[0].sgl_uf
linha1 = linha1 + " Tel.: "+ casa["num_tel"] if casa["num_tel"] != "" and casa["num_tel"] != None:
linha1 = linha1 + " Tel.: " + casa["num_tel"]
linha2=casa["end_web_casa"]
if casa["end_email_casa"]!="" and casa["end_email_casa"]!=None: linha2 = casa["end_web_casa"]
if casa["end_web_casa"]!="" and casa["end_web_casa"]!=None: if casa["end_email_casa"] != "" and casa["end_email_casa"] != None:
linha2 = linha2 + " - " if casa["end_web_casa"] != "" and casa["end_web_casa"] != None:
linha2 = linha2 + "E-mail: "+casa["end_email_casa"] linha2 = linha2 + " - "
linha2 = linha2 + "E-mail: " + casa["end_email_casa"]
data_emissao=DateTime().strftime("%d/%m/%Y")
rodape=[linha1,linha2,data_emissao] data_emissao = DateTime().strftime("%d/%m/%Y")
rodape = [linha1, linha2, data_emissao]
#Por fim, gera-se as entradas para o cabeçalho
estados=context.zsql.localidade_obter_zsql(tip_localidade="u") # Por fim, gera-se as entradas para o cabeçalho
estados = context.zsql.localidade_obter_zsql(tip_localidade="u")
for uf in estados: for uf in estados:
if localidade[0].sgl_uf==uf.sgl_uf: if localidade[0].sgl_uf == uf.sgl_uf:
nom_estado=uf.nom_localidade nom_estado = uf.nom_localidade
break break
cabecalho={} cabecalho = {}
cabecalho["nom_casa"]=casa["nom_casa"] cabecalho["nom_casa"] = casa["nom_casa"]
cabecalho["nom_estado"]="Estado de "+nom_estado cabecalho["nom_estado"] = "Estado de " + nom_estado
# tenta buscar o logotipo da casa LOGO_CASA # tenta buscar o logotipo da casa LOGO_CASA
if hasattr(context.sapl_documentos.props_sapl,'logo_casa.gif'): if hasattr(context.sapl_documentos.props_sapl, 'logo_casa.gif'):
imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url() imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url()
else: else:
imagem = context.imagens.absolute_url() + "/brasao_transp.gif" imagem = context.imagens.absolute_url() + "/brasao_transp.gif"
#Por fim, utiliza o PythonScript para pesquisar as normas e gerar os dados # Por fim, utiliza o PythonScript para pesquisar as normas e gerar os dados
normas=[] normas = []
REQUEST=context.REQUEST REQUEST = context.REQUEST
for norma in context.zsql.norma_juridica_obter_zsql(tip_norma=REQUEST['lst_tip_norma'], num_norma=REQUEST['txt_numero'], for norma in context.zsql.norma_juridica_obter_zsql(tip_norma=REQUEST['lst_tip_norma'], num_norma=REQUEST['txt_numero'],
ano_norma=REQUEST['txt_ano'], des_assunto=REQUEST['txt_assunto'], ano_norma=REQUEST['txt_ano'], des_assunto=REQUEST[
cod_assunto=REQUEST['lst_assunto_norma'], dat_norma=REQUEST['dt_norma'], 'txt_assunto'],
dat_norma2=REQUEST['dt_norma2'], dat_publicacao=REQUEST['dt_public'], cod_assunto=REQUEST[
dat_publicacao2=REQUEST['dt_public2'],rd_ordem=REQUEST['rd_ordenacao']): 'lst_assunto_norma'], dat_norma=REQUEST['dt_norma'],
dat_norma2=REQUEST[
'dt_norma2'], dat_publicacao=REQUEST['dt_public'],
dat_publicacao2=REQUEST['dt_public2'], rd_ordem=REQUEST['rd_ordenacao']):
dic={} dic = {}
dic['titulo']=norma.sgl_tipo_norma+""+str(norma.num_norma)+" de "+str(norma.dat_norma)+" - "+norma.des_tipo_norma dic['titulo'] = norma.sgl_tipo_norma + "" + \
dic['txt_ementa']=norma.txt_ementa str(norma.num_norma) + " de " + \
str(norma.dat_norma) + " - " + norma.des_tipo_norma
dic['txt_ementa'] = norma.txt_ementa
dic['materia_vinculada']=" " dic['materia_vinculada'] = " "
if norma.cod_materia!=None: if norma.cod_materia != None:
for materia_vinculada in context.zsql.materia_obter_zsql(cod_materia=str(norma.cod_materia)): for materia_vinculada in context.zsql.materia_obter_zsql(cod_materia=str(norma.cod_materia)):
dic['materia_vinculada']=materia_vinculada.sgl_tipo_materia+" "+str(materia_vinculada.num_ident_basica)+"/"+str(materia_vinculada.ano_ident_basica) dic['materia_vinculada'] = materia_vinculada.sgl_tipo_materia + " " + \
str(materia_vinculada.num_ident_basica) + "/" + \
str(materia_vinculada.ano_ident_basica)
normas.append(dic) normas.append(dic)
filtro={} # Dicionário que conterá os dados do filtro filtro = {} # Dicionário que conterá os dados do filtro
# Atribuições diretas do REQUEST # Atribuições diretas do REQUEST
filtro['numero']=REQUEST.txt_numero filtro['numero'] = REQUEST.txt_numero
filtro['ano']=REQUEST.txt_ano filtro['ano'] = REQUEST.txt_ano
filtro['assunto']=REQUEST.txt_assunto filtro['assunto'] = REQUEST.txt_assunto
filtro['tipo_norma']='' filtro['tipo_norma'] = ''
if REQUEST.lst_tip_norma!='': if REQUEST.lst_tip_norma != '':
for tipo_norma in context.zsql.tipo_norma_juridica_obter_zsql(ind_excluido=0, tip_norma=REQUEST.lst_tip_norma): for tipo_norma in context.zsql.tipo_norma_juridica_obter_zsql(ind_excluido=0, tip_norma=REQUEST.lst_tip_norma):
filtro['tipo_norma']= tipo_norma.sgl_tipo_norma + ' - ' + tipo_norma.des_tipo_norma filtro['tipo_norma'] = tipo_norma.sgl_tipo_norma + \
' - ' + tipo_norma.des_tipo_norma
sessao=session.id
caminho = context.pdf_norma_gerar(sessao,imagem,data,normas,cabecalho,rodape,filtro) sessao = session.id
if caminho=='aviso': caminho = context.pdf_norma_gerar(
return response.redirect('mensagem_emitir_proc') sessao, imagem, data, normas, cabecalho, rodape, filtro)
if caminho == 'aviso':
return response.redirect('mensagem_emitir_proc')
else: else:
response.redirect(caminho) response.redirect(caminho)

180
sapl/relatorios/templates/pdf_ordem_dia_preparar_pysc.py

@ -1,97 +1,116 @@
import os import os
request=context.REQUEST request = context.REQUEST
response=request.RESPONSE response = request.RESPONSE
session= request.SESSION session = request.SESSION
if context.REQUEST['cod_sessao_plen']!='': if context.REQUEST['cod_sessao_plen'] != '':
cod_sessao_plen = context.REQUEST['cod_sessao_plen'] cod_sessao_plen = context.REQUEST['cod_sessao_plen']
splen = [] # lista contendo as sessões plenárias na data indicada splen = [] # lista contendo as sessões plenárias na data indicada
pauta = [] # lista contendo a pauta da ordem do dia a ser impressa pauta = [] # lista contendo a pauta da ordem do dia a ser impressa
data = "" data = ""
for dat_sessao in context.zsql.sessao_plenaria_obter_zsql(cod_sessao_plen=cod_sessao_plen,ind_excluido=0): for dat_sessao in context.zsql.sessao_plenaria_obter_zsql(cod_sessao_plen=cod_sessao_plen, ind_excluido=0):
data = context.pysc.data_converter_pysc(dat_sessao.dat_inicio_sessao) # converte data para formato yyyy/mm/dd # converte data para formato yyyy/mm/dd
dat_ordem = context.pysc.data_converter_pysc(dat_sessao.dat_inicio_sessao) # converte data para formato yyyy/mm/dd data = context.pysc.data_converter_pysc(dat_sessao.dat_inicio_sessao)
dat_ordem = context.pysc.data_converter_pysc(
dat_sessao.dat_inicio_sessao) # converte data para formato yyyy/mm/dd
# seleciona dados da sessão plenária # seleciona dados da sessão plenária
for sp in context.zsql.sessao_plenaria_obter_zsql(dat_inicio_sessao=data, ind_excluido=0): for sp in context.zsql.sessao_plenaria_obter_zsql(dat_inicio_sessao=data, ind_excluido=0):
dicsp = {} # dicionário que armazenará os dados a serem impressos de uma sessão plenária dicsp = {} # dicionário que armazenará os dados a serem impressos de uma sessão plenária
ts = context.zsql.tipo_sessao_plenaria_obter_zsql(tip_sessao=sp.tip_sessao)[0] ts = context.zsql.tipo_sessao_plenaria_obter_zsql(
dicsp["sessao"] = str(sp.num_sessao_plen)+"ª Sessao "+ts.nom_sessao+" da "+str(sp.num_sessao_leg)+"ª Sessao Legislativa da "+str(sp.num_legislatura)+"ª Legislatura" tip_sessao=sp.tip_sessao)[0]
dia = context.pysc.data_converter_por_extenso_pysc(data=sp.dat_inicio_sessao) dicsp["sessao"] = str(sp.num_sessao_plen) + "ª Sessao " + ts.nom_sessao + " da " + str(
sp.num_sessao_leg) + "ª Sessao Legislativa da " + str(sp.num_legislatura) + "ª Legislatura"
dia = context.pysc.data_converter_por_extenso_pysc(
data=sp.dat_inicio_sessao)
hora = context.pysc.hora_formatar_pysc(hora=sp.hr_inicio_sessao) hora = context.pysc.hora_formatar_pysc(hora=sp.hr_inicio_sessao)
dicsp["datasessao"] = "Dia "+str(dia)+" ("+str(sp.dia_sessao)+") - Inicio as "+hora dicsp["datasessao"] = "Dia " + \
splen.append(dicsp) str(dia) + " (" + str(sp.dia_sessao) + ") - Inicio as " + hora
splen.append(dicsp)
# seleciona as matérias que compõem a pauta na data escolhida # seleciona as matérias que compõem a pauta na data escolhida
for ordem in context.zsql.ordem_dia_obter_zsql(dat_ordem=data, ind_excluido=0): for ordem in context.zsql.ordem_dia_obter_zsql(dat_ordem=data, ind_excluido=0):
# seleciona os detalhes de uma matéria # seleciona os detalhes de uma matéria
materia = context.zsql.materia_obter_zsql(cod_materia=ordem.cod_materia)[0] materia = context.zsql.materia_obter_zsql(
dic = {} # dicionário que armazenará os dados a serem impressos de uma matéria cod_materia=ordem.cod_materia)[0]
dic = {} # dicionário que armazenará os dados a serem impressos de uma matéria
dic["num_ordem"] = ordem.num_ordem dic["num_ordem"] = ordem.num_ordem
dic["id_materia"] = materia.des_tipo_materia+" - Nº "+str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica) dic["id_materia"] = materia.des_tipo_materia + " - Nº " + \
str(materia.num_ident_basica) + "/" + str(materia.ano_ident_basica)
# dic["id_materia"] = materia.sgl_tipo_materia+" - "+str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica)+" - "+materia.des_tipo_materia # dic["id_materia"] = materia.sgl_tipo_materia+" - "+str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica)+" - "+materia.des_tipo_materia
dic["txt_ementa"] = ordem.txt_observacao dic["txt_ementa"] = ordem.txt_observacao
# numeracao do processo 26/02/2011 # numeracao do processo 26/02/2011
dic["des_numeracao"]="" dic["des_numeracao"] = ""
numeracao = context.zsql.numeracao_obter_zsql(cod_materia=ordem.cod_materia) numeracao = context.zsql.numeracao_obter_zsql(
cod_materia=ordem.cod_materia)
if len(numeracao): if len(numeracao):
numeracao = numeracao[0] numeracao = numeracao[0]
dic["des_numeracao"] = str(numeracao.num_materia)+"/"+str(numeracao.ano_materia) dic["des_numeracao"] = str(
dic["des_turno"]="" numeracao.num_materia) + "/" + str(numeracao.ano_materia)
dic["des_turno"] = ""
dic["des_situacao"] = "" dic["des_situacao"] = ""
tramitacao = context.zsql.tramitacao_obter_zsql(cod_materia=ordem.cod_materia, ind_ult_tramitacao=1) tramitacao = context.zsql.tramitacao_obter_zsql(
cod_materia=ordem.cod_materia, ind_ult_tramitacao=1)
if len(tramitacao): if len(tramitacao):
tramitacao = tramitacao[0] tramitacao = tramitacao[0]
if tramitacao.sgl_turno != "": if tramitacao.sgl_turno != "":
for turno in [("P","Primeiro"), ("S","Segundo"), ("U","Único"), ("L","Suplementar"), ("A","Votação Única em Regime de Urgência"), ("B","1ª Votação"), ("C","2ª e 3ª Votações")]: for turno in [("P", "Primeiro"), ("S", "Segundo"), ("U", "Único"), ("L", "Suplementar"), ("A", "Votação Única em Regime de Urgência"), ("B", "1ª Votação"), ("C", "2ª e 3ª Votações")]:
if tramitacao.sgl_turno == turno[0]: if tramitacao.sgl_turno == turno[0]:
dic["des_turno"] = turno[1] dic["des_turno"] = turno[1]
dic["des_situacao"] = tramitacao.des_status dic["des_situacao"] = tramitacao.des_status
if dic["des_situacao"]==None: if dic["des_situacao"] == None:
dic["des_situacao"] = " " dic["des_situacao"] = " "
dic["nom_autor"] = '' dic["nom_autor"] = ''
autoria = context.zsql.autoria_obter_zsql(cod_materia=ordem.cod_materia, ind_primeiro_autor=1) autoria = context.zsql.autoria_obter_zsql(
if len(autoria): # se existe autor cod_materia=ordem.cod_materia, ind_primeiro_autor=1)
if len(autoria): # se existe autor
autoria = autoria[0] autoria = autoria[0]
try: try:
autor = context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor) autor = context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor)
if len(autor): if len(autor):
autor = autor[0] autor = autor[0]
if autor.des_tipo_autor == "Parlamentar": if autor.des_tipo_autor == "Parlamentar":
parlamentar = context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar)[0] parlamentar = context.zsql.parlamentar_obter_zsql(
dic["nom_autor"] = parlamentar.nom_parlamentar cod_parlamentar=autor.cod_parlamentar)[0]
dic["nom_autor"] = parlamentar.nom_parlamentar
elif autor.des_tipo_autor == "Comissao": elif autor.des_tipo_autor == "Comissao":
comissao = context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao)[0] comissao = context.zsql.comissao_obter_zsql(
dic["nom_autor"] = comissao.nom_comissao cod_comissao=autor.cod_comissao)[0]
else: dic["nom_autor"] = comissao.nom_comissao
dic["nom_autor"] = autor.nom_autor else:
dic["nom_autor"] = autor.nom_autor
except: except:
pass pass
lst_relator = [] # lista contendo os relatores da matéria lst_relator = [] # lista contendo os relatores da matéria
for relatoria in context.zsql.relatoria_obter_zsql(cod_materia=ordem.cod_materia): for relatoria in context.zsql.relatoria_obter_zsql(cod_materia=ordem.cod_materia):
parlamentar = context.zsql.parlamentar_obter_zsql(cod_parlamentar=relatoria.cod_parlamentar)[0] parlamentar = context.zsql.parlamentar_obter_zsql(
comissao = context.zsql.comissao_obter_zsql(cod_comissao=relatoria.cod_comissao)[0] cod_parlamentar=relatoria.cod_parlamentar)[0]
lst_relator.append(parlamentar.nom_parlamentar+" - "+comissao.nom_comissao) comissao = context.zsql.comissao_obter_zsql(
cod_comissao=relatoria.cod_comissao)[0]
lst_relator.append(parlamentar.nom_parlamentar +
" - " + comissao.nom_comissao)
if not len(lst_relator): if not len(lst_relator):
lst_relator = [''] lst_relator = ['']
dic["lst_relator"] = lst_relator dic["lst_relator"] = lst_relator
# adiciona o dicionário na pauta # adiciona o dicionário na pauta
pauta.append(dic) pauta.append(dic)
# obtém as propriedades da casa legislativa para montar o cabeçalho e o rodapé da página # obtém as propriedades da casa legislativa para montar o cabeçalho e o
casa = {} # rodapé da página
aux=context.sapl_documentos.props_sapl.propertyItems() casa = {}
aux = context.sapl_documentos.props_sapl.propertyItems()
for item in aux: for item in aux:
casa[item[0]] = item[1] casa[item[0]] = item[1]
# obtém a localidade # obtém a localidade
localidade = context.zsql.localidade_obter_zsql(cod_localidade=casa["cod_localidade"]) localidade = context.zsql.localidade_obter_zsql(
cod_localidade=casa["cod_localidade"])
# monta o cabeçalho da página # monta o cabeçalho da página
cabecalho = {} cabecalho = {}
estado = context.zsql.localidade_obter_zsql(tip_localidade="U") estado = context.zsql.localidade_obter_zsql(tip_localidade="U")
for uf in estado: for uf in estado:
if localidade[0].sgl_uf == uf.sgl_uf: if localidade[0].sgl_uf == uf.sgl_uf:
@ -99,40 +118,43 @@ if context.REQUEST['cod_sessao_plen']!='':
break break
cabecalho["nom_casa"] = casa["nom_casa"] cabecalho["nom_casa"] = casa["nom_casa"]
cabecalho["nom_estado"] = "Estado do "+nom_estado cabecalho["nom_estado"] = "Estado do " + nom_estado
# tenta buscar o logotipo da casa LOGO_CASA # tenta buscar o logotipo da casa LOGO_CASA
if hasattr(context.sapl_documentos.props_sapl,'logo_casa.gif'): if hasattr(context.sapl_documentos.props_sapl, 'logo_casa.gif'):
imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url() imagem = context.sapl_documentos.props_sapl[
'logo_casa.gif'].absolute_url()
else: else:
imagem = context.imagens.absolute_url() + "/brasao_transp.gif" imagem = context.imagens.absolute_url() + "/brasao_transp.gif"
# monta o rodapé da página # monta o rodapé da página
num_cep = casa["num_cep"] num_cep = casa["num_cep"]
if len(casa["num_cep"]) == 8: if len(casa["num_cep"]) == 8:
num_cep=casa["num_cep"][:4]+"-"+casa["num_cep"][5:] num_cep = casa["num_cep"][:4] + "-" + casa["num_cep"][5:]
linha1 = casa["end_casa"] linha1 = casa["end_casa"]
if num_cep!=None and num_cep!="": if num_cep != None and num_cep != "":
if casa["end_casa"]!="" and casa["end_casa"]!=None: if casa["end_casa"] != "" and casa["end_casa"] != None:
linha1 = linha1 +" " linha1 = linha1 + " "
linha1 = linha1 +" CEP: "+num_cep linha1 = linha1 + " CEP: " + num_cep
if localidade[0].nom_localidade!=None and localidade[0].nom_localidade!="": if localidade[0].nom_localidade != None and localidade[0].nom_localidade != "":
linha1 = linha1 +" "+localidade[0].nom_localidade +" - "+localidade[0].sgl_uf linha1 = linha1 + " " + \
if casa["num_tel"]!=None and casa["num_tel"]!="": localidade[0].nom_localidade + " - " + localidade[0].sgl_uf
linha1 = linha1 +" Tel.: "+casa["num_tel"] if casa["num_tel"] != None and casa["num_tel"] != "":
linha1 = linha1 + " Tel.: " + casa["num_tel"]
linha2 = casa["end_web_casa"] linha2 = casa["end_web_casa"]
if casa["end_email_casa"]!=None and casa["end_email_casa"]!="": if casa["end_email_casa"] != None and casa["end_email_casa"] != "":
if casa["end_web_casa"]!="" and casa["end_web_casa"]!=None: if casa["end_web_casa"] != "" and casa["end_web_casa"] != None:
linha2= linha2 + " - " linha2 = linha2 + " - "
linha2 = linha2 +"E-mail: "+casa["end_email_casa"] linha2 = linha2 + "E-mail: " + casa["end_email_casa"]
dat_emissao = DateTime().strftime("%d/%m/%Y") dat_emissao = DateTime().strftime("%d/%m/%Y")
rodape = [linha1, linha2, dat_emissao] rodape = [linha1, linha2, dat_emissao]
sessao=session.id sessao = session.id
caminho = context.pdf_ordem_dia_gerar( sessao, imagem, dat_ordem, splen, pauta, cabecalho, rodape) caminho = context.pdf_ordem_dia_gerar(
if caminho=='aviso': sessao, imagem, dat_ordem, splen, pauta, cabecalho, rodape)
if caminho == 'aviso':
return response.redirect('mensagem_emitir_proc') return response.redirect('mensagem_emitir_proc')
else: else:
response.redirect(caminho) response.redirect(caminho)

4
sapl/relatorios/templates/pdf_pauta_sessao_gerar.py

@ -23,7 +23,9 @@ def cabecalho(inf_basicas_dic, imagem):
tmp += '\t\t\t\t<setFont name="Helvetica-Bold" size="12"/>\n' tmp += '\t\t\t\t<setFont name="Helvetica-Bold" size="12"/>\n'
tmp += '\t\t\t\t<drawString x="4.2cm" y="25cm">Pauta da ' + str(inf_basicas_dic['num_sessao_plen']) + 'ª Reunião ' + str(inf_basicas_dic['nom_sessao']) + ' da ' + str( tmp += '\t\t\t\t<drawString x="4.2cm" y="25cm">Pauta da ' + str(inf_basicas_dic['num_sessao_plen']) + 'ª Reunião ' + str(inf_basicas_dic['nom_sessao']) + ' da ' + str(
inf_basicas_dic['num_sessao_leg']) + 'ª Sessão Legislativa da </drawString>\n' inf_basicas_dic['num_sessao_leg']) + 'ª Sessão Legislativa da </drawString>\n'
tmp += '\t\t\t\t<drawString x="6.7cm" y="24.5cm">' + str(inf_basicas_dic['num_legislatura']) + ' Legislatura </drawString>\n' tmp += '\t\t\t\t<drawString x="6.7cm" y="24.5cm">' + \
str(inf_basicas_dic['num_legislatura']) + \
' Legislatura </drawString>\n'
return tmp return tmp

183
sapl/relatorios/templates/pdf_pauta_sessao_preparar_pysc.py

@ -1,20 +1,22 @@
import os import os
request=context.REQUEST request = context.REQUEST
response=request.RESPONSE response = request.RESPONSE
session= request.SESSION session = request.SESSION
if context.REQUEST['data']!='': if context.REQUEST['data'] != '':
dat_inicio_sessao = context.REQUEST['data'] dat_inicio_sessao = context.REQUEST['data']
pauta = [] # lista contendo a pauta da ordem do dia a ser impressa pauta = [] # lista contendo a pauta da ordem do dia a ser impressa
data = context.pysc.data_converter_pysc(dat_inicio_sessao) # converte data para formato yyyy/mm/dd # converte data para formato yyyy/mm/dd
data = context.pysc.data_converter_pysc(dat_inicio_sessao)
codigo = context.REQUEST['cod_sessao_plen'] codigo = context.REQUEST['cod_sessao_plen']
# seleciona as matérias que compõem a pauta na data escolhida # seleciona as matérias que compõem a pauta na data escolhida
for sessao in context.zsql.sessao_plenaria_obter_zsql(dat_inicio_sessao=data, cod_sessao_plen=codigo, ind_excluido=0): for sessao in context.zsql.sessao_plenaria_obter_zsql(dat_inicio_sessao=data, cod_sessao_plen=codigo, ind_excluido=0):
inf_basicas_dic = {} # dicionário que armazenará as informacoes basicas da sessao plenaria inf_basicas_dic = {} # dicionário que armazenará as informacoes basicas da sessao plenaria
# seleciona o tipo da sessao plenaria # seleciona o tipo da sessao plenaria
tipo_sessao = context.zsql.tipo_sessao_plenaria_obter_zsql(tip_sessao=sessao.tip_sessao,ind_excluido=0)[0] tipo_sessao = context.zsql.tipo_sessao_plenaria_obter_zsql(
tip_sessao=sessao.tip_sessao, ind_excluido=0)[0]
inf_basicas_dic["nom_sessao"] = tipo_sessao.nom_sessao inf_basicas_dic["nom_sessao"] = tipo_sessao.nom_sessao
inf_basicas_dic["num_sessao_plen"] = sessao.num_sessao_plen inf_basicas_dic["num_sessao_plen"] = sessao.num_sessao_plen
inf_basicas_dic["nom_sessao"] = tipo_sessao.nom_sessao inf_basicas_dic["nom_sessao"] = tipo_sessao.nom_sessao
@ -24,139 +26,164 @@ if context.REQUEST['data']!='':
inf_basicas_dic["hr_inicio_sessao"] = sessao.hr_inicio_sessao inf_basicas_dic["hr_inicio_sessao"] = sessao.hr_inicio_sessao
inf_basicas_dic["dat_fim_sessao"] = sessao.dat_fim_sessao inf_basicas_dic["dat_fim_sessao"] = sessao.dat_fim_sessao
inf_basicas_dic["hr_fim_sessao"] = sessao.hr_fim_sessao inf_basicas_dic["hr_fim_sessao"] = sessao.hr_fim_sessao
# Lista das matérias do Expediente, incluindo o status da tramitação # Lista das matérias do Expediente, incluindo o status da tramitação
lst_expediente_materia=[] lst_expediente_materia = []
for expediente_materia in context.zsql.votacao_expediente_materia_obter_zsql(dat_ordem=data,cod_sessao_plen=codigo,ind_excluido=0): for expediente_materia in context.zsql.votacao_expediente_materia_obter_zsql(dat_ordem=data, cod_sessao_plen=codigo, ind_excluido=0):
# seleciona os detalhes de uma matéria # seleciona os detalhes de uma matéria
materia = context.zsql.materia_obter_zsql(cod_materia=expediente_materia.cod_materia)[0] materia = context.zsql.materia_obter_zsql(
cod_materia=expediente_materia.cod_materia)[0]
dic_expediente_materia = {} dic_expediente_materia = {}
dic_expediente_materia["num_ordem"] = expediente_materia.num_ordem dic_expediente_materia["num_ordem"] = expediente_materia.num_ordem
dic_expediente_materia["id_materia"] = materia.sgl_tipo_materia+" - "+materia.des_tipo_materia+" No. "+str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica) dic_expediente_materia["id_materia"] = materia.sgl_tipo_materia + " - " + materia.des_tipo_materia + \
" No. " + str(materia.num_ident_basica) + "/" + \
str(materia.ano_ident_basica)
dic_expediente_materia["txt_ementa"] = materia.txt_ementa dic_expediente_materia["txt_ementa"] = materia.txt_ementa
dic_expediente_materia["ordem_observacao"] = expediente_materia.ordem_observacao dic_expediente_materia[
"ordem_observacao"] = expediente_materia.ordem_observacao
dic_expediente_materia["des_numeracao"]="" dic_expediente_materia["des_numeracao"] = ""
numeracao = context.zsql.numeracao_obter_zsql(cod_materia=expediente_materia.cod_materia) numeracao = context.zsql.numeracao_obter_zsql(
cod_materia=expediente_materia.cod_materia)
if len(numeracao): if len(numeracao):
numeracao = numeracao[0] numeracao = numeracao[0]
dic_expediente_materia["des_numeracao"] = str(numeracao.num_materia)+"/"+str(numeracao.ano_materia) dic_expediente_materia["des_numeracao"] = str(
numeracao.num_materia) + "/" + str(numeracao.ano_materia)
dic_expediente_materia["nom_autor"] = '' dic_expediente_materia["nom_autor"] = ''
autoria = context.zsql.autoria_obter_zsql(cod_materia=expediente_materia.cod_materia, ind_primeiro_autor=1) autoria = context.zsql.autoria_obter_zsql(
if len(autoria) > 0: # se existe autor cod_materia=expediente_materia.cod_materia, ind_primeiro_autor=1)
if len(autoria) > 0: # se existe autor
autoria = autoria[0] autoria = autoria[0]
autor = context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor) autor = context.zsql.autor_obter_zsql(
cod_autor=autoria.cod_autor)
if len(autor) > 0: if len(autor) > 0:
autor = autor[0] autor = autor[0]
if autor.des_tipo_autor == "Parlamentar": if autor.des_tipo_autor == "Parlamentar":
parlamentar = context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar)[0] parlamentar = context.zsql.parlamentar_obter_zsql(
dic_expediente_materia["nom_autor"] = parlamentar.nom_parlamentar cod_parlamentar=autor.cod_parlamentar)[0]
dic_expediente_materia[
"nom_autor"] = parlamentar.nom_parlamentar
elif autor.des_tipo_autor == "Comissao": elif autor.des_tipo_autor == "Comissao":
comissao = context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao)[0] comissao = context.zsql.comissao_obter_zsql(
cod_comissao=autor.cod_comissao)[0]
dic_expediente_materia["nom_autor"] = comissao.nom_comissao dic_expediente_materia["nom_autor"] = comissao.nom_comissao
else: else:
dic_expediente_materia["nom_autor"] = autor.nom_autor dic_expediente_materia["nom_autor"] = autor.nom_autor
dic_expediente_materia["des_turno"]="" dic_expediente_materia["des_turno"] = ""
dic_expediente_materia["des_situacao"] = "" dic_expediente_materia["des_situacao"] = ""
tramitacao = context.zsql.tramitacao_obter_zsql(cod_materia=expediente_materia.cod_materia, ind_ult_tramitacao=1) tramitacao = context.zsql.tramitacao_obter_zsql(
cod_materia=expediente_materia.cod_materia, ind_ult_tramitacao=1)
if len(tramitacao): if len(tramitacao):
tramitacao = tramitacao[0] tramitacao = tramitacao[0]
if tramitacao.sgl_turno != "": if tramitacao.sgl_turno != "":
for turno in [("P","Primeiro"), ("S","Segundo"), ("U","Único"), ("F","Final"), ("L","Suplementar"), ("A","Votação Única em Regime de Urgência"), ("B","1ª Votação"), ("C","2ª e 3ª Votações")]: for turno in [("P", "Primeiro"), ("S", "Segundo"), ("U", "Único"), ("F", "Final"), ("L", "Suplementar"), ("A", "Votação Única em Regime de Urgência"), ("B", "1ª Votação"), ("C", "2ª e 3ª Votações")]:
if tramitacao.sgl_turno == turno[0]: if tramitacao.sgl_turno == turno[0]:
dic_expediente_materia["des_turno"] = turno[1] dic_expediente_materia["des_turno"] = turno[1]
dic_expediente_materia["des_situacao"] = tramitacao.des_status dic_expediente_materia["des_situacao"] = tramitacao.des_status
if dic_expediente_materia["des_situacao"]==None: if dic_expediente_materia["des_situacao"] == None:
dic_expediente_materia["des_situacao"] = " " dic_expediente_materia["des_situacao"] = " "
lst_expediente_materia.append(dic_expediente_materia) lst_expediente_materia.append(dic_expediente_materia)
# Lista das matérias da Ordem do Dia, incluindo o status da tramitação # Lista das matérias da Ordem do Dia, incluindo o status da tramitação
lst_votacao=[] lst_votacao = []
for votacao in context.zsql.votacao_ordem_dia_obter_zsql(dat_ordem=data,cod_sessao_plen=codigo,ind_excluido=0): for votacao in context.zsql.votacao_ordem_dia_obter_zsql(dat_ordem=data, cod_sessao_plen=codigo, ind_excluido=0):
# seleciona os detalhes de uma matéria # seleciona os detalhes de uma matéria
materia = context.zsql.materia_obter_zsql(cod_materia=votacao.cod_materia)[0] materia = context.zsql.materia_obter_zsql(
cod_materia=votacao.cod_materia)[0]
dic_votacao = {} dic_votacao = {}
dic_votacao["num_ordem"] = votacao.num_ordem dic_votacao["num_ordem"] = votacao.num_ordem
dic_votacao["id_materia"] = materia.sgl_tipo_materia+" - "+materia.des_tipo_materia+" No. "+str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica) dic_votacao["id_materia"] = materia.sgl_tipo_materia + " - " + materia.des_tipo_materia + \
" No. " + str(materia.num_ident_basica) + "/" + \
str(materia.ano_ident_basica)
dic_votacao["txt_ementa"] = materia.txt_ementa dic_votacao["txt_ementa"] = materia.txt_ementa
dic_votacao["ordem_observacao"] = votacao.ordem_observacao dic_votacao["ordem_observacao"] = votacao.ordem_observacao
dic_votacao["des_numeracao"]="" dic_votacao["des_numeracao"] = ""
numeracao = context.zsql.numeracao_obter_zsql(cod_materia=votacao.cod_materia) numeracao = context.zsql.numeracao_obter_zsql(
cod_materia=votacao.cod_materia)
if len(numeracao): if len(numeracao):
numeracao = numeracao[0] numeracao = numeracao[0]
dic_votacao["des_numeracao"] = str(numeracao.num_materia)+"/"+str(numeracao.ano_materia) dic_votacao["des_numeracao"] = str(
numeracao.num_materia) + "/" + str(numeracao.ano_materia)
dic_votacao["nom_autor"] = '' dic_votacao["nom_autor"] = ''
autoria = context.zsql.autoria_obter_zsql(cod_materia=votacao.cod_materia, ind_primeiro_autor=1) autoria = context.zsql.autoria_obter_zsql(
if len(autoria) > 0: # se existe autor cod_materia=votacao.cod_materia, ind_primeiro_autor=1)
if len(autoria) > 0: # se existe autor
autoria = autoria[0] autoria = autoria[0]
autor = context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor) autor = context.zsql.autor_obter_zsql(
cod_autor=autoria.cod_autor)
if len(autor) > 0: if len(autor) > 0:
autor = autor[0] autor = autor[0]
if autor.des_tipo_autor == "Parlamentar": if autor.des_tipo_autor == "Parlamentar":
parlamentar = context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar)[0] parlamentar = context.zsql.parlamentar_obter_zsql(
cod_parlamentar=autor.cod_parlamentar)[0]
dic_votacao["nom_autor"] = parlamentar.nom_parlamentar dic_votacao["nom_autor"] = parlamentar.nom_parlamentar
elif autor.des_tipo_autor == "Comissao": elif autor.des_tipo_autor == "Comissao":
comissao = context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao)[0] comissao = context.zsql.comissao_obter_zsql(
cod_comissao=autor.cod_comissao)[0]
dic_votacao["nom_autor"] = comissao.nom_comissao dic_votacao["nom_autor"] = comissao.nom_comissao
else: else:
dic_votacao["nom_autor"] = autor.nom_autor dic_votacao["nom_autor"] = autor.nom_autor
dic_votacao["des_turno"]="" dic_votacao["des_turno"] = ""
dic_votacao["des_situacao"] = "" dic_votacao["des_situacao"] = ""
tramitacao = context.zsql.tramitacao_obter_zsql(cod_materia=votacao.cod_materia, ind_ult_tramitacao=1) tramitacao = context.zsql.tramitacao_obter_zsql(
cod_materia=votacao.cod_materia, ind_ult_tramitacao=1)
if len(tramitacao): if len(tramitacao):
tramitacao = tramitacao[0] tramitacao = tramitacao[0]
if tramitacao.sgl_turno != "": if tramitacao.sgl_turno != "":
for turno in [("P","Primeiro"), ("S","Segundo"), ("U","Único"), ("L","Suplementar"), ("A","Votação Única em Regime de Urgência"), ("B","1ª Votação"), ("C","2ª e 3ª Votações")]: for turno in [("P", "Primeiro"), ("S", "Segundo"), ("U", "Único"), ("L", "Suplementar"), ("A", "Votação Única em Regime de Urgência"), ("B", "1ª Votação"), ("C", "2ª e 3ª Votações")]:
if tramitacao.sgl_turno == turno[0]: if tramitacao.sgl_turno == turno[0]:
dic_votacao["des_turno"] = turno[1] dic_votacao["des_turno"] = turno[1]
dic_votacao["des_situacao"] = tramitacao.des_status dic_votacao["des_situacao"] = tramitacao.des_status
if dic_votacao["des_situacao"]==None: if dic_votacao["des_situacao"] == None:
dic_votacao["des_situacao"] = " " dic_votacao["des_situacao"] = " "
lst_votacao.append(dic_votacao) lst_votacao.append(dic_votacao)
# obtém as propriedades da casa legislativa para montar o cabeçalho e o rodapé da página # obtém as propriedades da casa legislativa para montar o cabeçalho e o
cabecalho={} # rodapé da página
cabecalho = {}
# tenta buscar o logotipo da casa LOGO_CASA # tenta buscar o logotipo da casa LOGO_CASA
if hasattr(context.sapl_documentos.props_sapl,'logo_casa.gif'): if hasattr(context.sapl_documentos.props_sapl, 'logo_casa.gif'):
imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url() imagem = context.sapl_documentos.props_sapl[
'logo_casa.gif'].absolute_url()
else: else:
imagem = context.imagens.absolute_url() + "/brasao_transp.gif" imagem = context.imagens.absolute_url() + "/brasao_transp.gif"
#Abaixo é gerado o dic do rodapé da página (linha 7) # Abaixo é gerado o dic do rodapé da página (linha 7)
casa={} casa = {}
aux=context.sapl_documentos.props_sapl.propertyItems() aux = context.sapl_documentos.props_sapl.propertyItems()
for item in aux: for item in aux:
casa[item[0]]=item[1] casa[item[0]] = item[1]
localidade=context.zsql.localidade_obter_zsql(cod_localidade=casa["cod_localidade"]) localidade = context.zsql.localidade_obter_zsql(
data_emissao= DateTime().strftime("%d/%m/%Y") cod_localidade=casa["cod_localidade"])
rodape= casa data_emissao = DateTime().strftime("%d/%m/%Y")
rodape['data_emissao']= data_emissao rodape = casa
rodape['data_emissao'] = data_emissao
inf_basicas_dic['nom_camara']= casa['nom_casa']
REQUEST=context.REQUEST inf_basicas_dic['nom_camara'] = casa['nom_casa']
for local in context.zsql.localidade_obter_zsql(cod_localidade = casa['cod_localidade']): REQUEST = context.REQUEST
rodape['nom_localidade']= " "+local.nom_localidade for local in context.zsql.localidade_obter_zsql(cod_localidade=casa['cod_localidade']):
rodape['sgl_uf']= local.sgl_uf rodape['nom_localidade'] = " " + local.nom_localidade
rodape['sgl_uf'] = local.sgl_uf
# return lst_votacao # return lst_votacao
sessao=session.id sessao = session.id
caminho = context.pdf_pauta_sessao_gerar(rodape, sessao, imagem, inf_basicas_dic, lst_votacao, lst_expediente_materia) caminho = context.pdf_pauta_sessao_gerar(
if caminho=='aviso': rodape, sessao, imagem, inf_basicas_dic, lst_votacao, lst_expediente_materia)
if caminho == 'aviso':
return response.redirect('mensagem_emitir_proc') return response.redirect('mensagem_emitir_proc')
else: else:
response.redirect(caminho) response.redirect(caminho)

189
sapl/relatorios/templates/pdf_protocolo_gerar.py

@ -1,4 +1,4 @@
##parameters=sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_filtro # parameters=sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_filtro
"""relatorio_protocolo.py """relatorio_protocolo.py
External method para gerar o arquivo rml do resultado de uma pesquisa de protocolos External method para gerar o arquivo rml do resultado de uma pesquisa de protocolos
@ -11,118 +11,132 @@ import time
from trml2pdf import parseString from trml2pdf import parseString
def cabecalho(dic_cabecalho,imagem): def cabecalho(dic_cabecalho, imagem):
"""Gera o codigo rml do cabecalho""" """Gera o codigo rml do cabecalho"""
tmp_data='' tmp_data = ''
tmp_data+='\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + imagem + '"/>\n' tmp_data += '\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + imagem + '"/>\n'
tmp_data+='\t\t\t\t<lines>2cm 25.4cm 19cm 25.4cm</lines>\n' tmp_data += '\t\t\t\t<lines>2cm 25.4cm 19cm 25.4cm</lines>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n'
tmp_data+='\t\t\t\t<drawString x="5cm" y="27.2cm">' + dic_cabecalho['nom_casa'] + '</drawString>\n' tmp_data += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \
tmp_data+='\t\t\t\t<setFont name="Helvetica" size="12"/>\n' dic_cabecalho['nom_casa'] + '</drawString>\n'
tmp_data+='\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica" size="12"/>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n' tmp_data += '\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
tmp_data+='\t\t\t\t<drawString x="2.2cm" y="24.6cm">Relatório de Controle do Protocolo</drawString>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n'
tmp_data += '\t\t\t\t<drawString x="2.2cm" y="24.6cm">Relatório de Controle do Protocolo</drawString>\n'
return tmp_data return tmp_data
def rodape(lst_rodape): def rodape(lst_rodape):
"""Gera o codigo rml do rodape""" """Gera o codigo rml do rodape"""
tmp_data='' tmp_data = ''
tmp_data+='\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n' tmp_data += '\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica" size="8"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica" size="8"/>\n'
tmp_data+='\t\t\t\t<drawString x="2cm" y="3.3cm">' + lst_rodape[2] + '</drawString>\n' tmp_data += '\t\t\t\t<drawString x="2cm" y="3.3cm">' + \
tmp_data+='\t\t\t\t<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n' lst_rodape[2] + '</drawString>\n'
tmp_data+='\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + lst_rodape[0] + '</drawCentredString>\n' tmp_data += '\t\t\t\t<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n'
tmp_data+='\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + lst_rodape[1] + '</drawCentredString>\n' tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + \
lst_rodape[0] + '</drawCentredString>\n'
tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + \
lst_rodape[1] + '</drawCentredString>\n'
return tmp_data return tmp_data
def paraStyle(): def paraStyle():
"""Gera o codigo rml que define o estilo dos paragrafos""" """Gera o codigo rml que define o estilo dos paragrafos"""
tmp_data='' tmp_data = ''
tmp_data+='\t<stylesheet>\n' tmp_data += '\t<stylesheet>\n'
tmp_data+='\t\t<blockTableStyle id="Standard_Outline">\n' tmp_data += '\t\t<blockTableStyle id="Standard_Outline">\n'
tmp_data+='\t\t\t<blockAlignment value="LEFT"/>\n' tmp_data += '\t\t\t<blockAlignment value="LEFT"/>\n'
tmp_data+='\t\t\t<blockValign value="TOP"/>\n' tmp_data += '\t\t\t<blockValign value="TOP"/>\n'
tmp_data+='\t\t</blockTableStyle>\n' tmp_data += '\t\t</blockTableStyle>\n'
tmp_data+='\t\t<initialize>\n' tmp_data += '\t\t<initialize>\n'
tmp_data+='\t\t\t<paraStyle name="all" alignment="justify"/>\n' tmp_data += '\t\t\t<paraStyle name="all" alignment="justify"/>\n'
tmp_data+='\t\t</initialize>\n' tmp_data += '\t\t</initialize>\n'
tmp_data+='\t\t<paraStyle name="P1" fontName="Helvetica-Bold" fontSize="10.0" leading="10" alignment="CENTER"/>\n' tmp_data += '\t\t<paraStyle name="P1" fontName="Helvetica-Bold" fontSize="10.0" leading="10" alignment="CENTER"/>\n'
tmp_data+='\t\t<paraStyle name="P2" fontName="Helvetica" fontSize="10.0" leading="13" alignment="justify"/>\n' tmp_data += '\t\t<paraStyle name="P2" fontName="Helvetica" fontSize="10.0" leading="13" alignment="justify"/>\n'
tmp_data+='\t</stylesheet>\n' tmp_data += '\t</stylesheet>\n'
return tmp_data return tmp_data
def protocolos(lst_protocolos): def protocolos(lst_protocolos):
"""Gera o codigo rml do conteudo da pesquisa de protocolos""" """Gera o codigo rml do conteudo da pesquisa de protocolos"""
tmp_data='' tmp_data = ''
#inicio do bloco que contem os flowables # inicio do bloco que contem os flowables
tmp_data+='\t<story>\n' tmp_data += '\t<story>\n'
for dic in lst_protocolos: for dic in lst_protocolos:
#espaco inicial # espaco inicial
tmp_data+='\t\t<para style="P2">\n' tmp_data += '\t\t<para style="P2">\n'
tmp_data+='\t\t\t<font color="white"> </font>\n' tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data+='\t\t</para>\n' tmp_data += '\t\t</para>\n'
tmp_data+='\t\t<para style="P2">\n' tmp_data += '\t\t<para style="P2">\n'
tmp_data+='\t\t\t<font color="white"> </font>\n' tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data+='\t\t</para>\n' tmp_data += '\t\t</para>\n'
#condicao para a quebra de pagina # condicao para a quebra de pagina
tmp_data+='\t\t<condPageBreak height="4cm"/>\n' tmp_data += '\t\t<condPageBreak height="4cm"/>\n'
#protocolos # protocolos
if dic['titulo']!=None: if dic['titulo'] != None:
tmp_data+='\t\t<para style="P1">Protocolo ' + dic['titulo'] + '</para>\n' tmp_data += '\t\t<para style="P1">Protocolo ' + \
tmp_data+='\t\t<para style="P1">\n' dic['titulo'] + '</para>\n'
tmp_data+='\t\t\t<font color="white"> </font>\n' tmp_data += '\t\t<para style="P1">\n'
tmp_data+='\t\t</para>\n' tmp_data += '\t\t\t<font color="white"> </font>\n'
if dic['txt_assunto']!=None: tmp_data += '\t\t</para>\n'
txt_assunto = dic['txt_assunto'].replace('&','&amp;') if dic['txt_assunto'] != None:
tmp_data+='\t\t<para style="P2">' + txt_assunto + '</para>\n' txt_assunto = dic['txt_assunto'].replace('&', '&amp;')
if dic['txt_interessado']!=None: tmp_data += '\t\t<para style="P2">' + txt_assunto + '</para>\n'
tmp_data+='\t\t<para style="P2"><b>Interessado:</b> ' + dic['txt_interessado'] + '</para>\n' if dic['txt_interessado'] != None:
elif dic['nom_autor']!=None: tmp_data += '\t\t<para style="P2"><b>Interessado:</b> ' + \
tmp_data+='\t\t<para style="P2"><b>Autor:</b> ' + dic['nom_autor'] + '</para>\n' dic['txt_interessado'] + '</para>\n'
if dic['natureza']!=None: elif dic['nom_autor'] != None:
tmp_data+='\t\t<para style="P2"><b>Natureza Processo:</b> ' + dic['natureza'] + '</para>\n' tmp_data += '\t\t<para style="P2"><b>Autor:</b> ' + \
if dic['processo']!=None: dic['nom_autor'] + '</para>\n'
tmp_data+='\t\t<para style="P2"><b>Classificação:</b> ' + dic['processo'] + '</para>\n' if dic['natureza'] != None:
if dic['data']!=None: tmp_data += '\t\t<para style="P2"><b>Natureza Processo:</b> ' + \
tmp_data+='\t\t<para style="P2"><b>Data Protocolo:</b> ' + dic['data'] + '</para>\n' dic['natureza'] + '</para>\n'
if dic['anulado']!="": if dic['processo'] != None:
tmp_data+='\t\t<para style="P2"><b>** PROTOCOLO ANULADO **</b> ' '</para>\n' tmp_data += '\t\t<para style="P2"><b>Classificação:</b> ' + \
dic['processo'] + '</para>\n'
tmp_data+='\t</story>\n' if dic['data'] != None:
tmp_data += '\t\t<para style="P2"><b>Data Protocolo:</b> ' + \
dic['data'] + '</para>\n'
if dic['anulado'] != "":
tmp_data += '\t\t<para style="P2"><b>** PROTOCOLO ANULADO **</b> ' '</para>\n'
tmp_data += '\t</story>\n'
return tmp_data return tmp_data
def principal(imagem, lst_protocolos, dic_cabecalho, lst_rodape): def principal(imagem, lst_protocolos, dic_cabecalho, lst_rodape):
"""Funcao pricipal que gera a estrutura global do arquivo rml""" """Funcao pricipal que gera a estrutura global do arquivo rml"""
arquivoPdf=str(int(time.time()*100))+".pdf" arquivoPdf = str(int(time.time() * 100)) + ".pdf"
tmp_data='' tmp_data = ''
tmp_data+='<?xml version="1.0" encoding="utf-8" standalone="no" ?>\n' tmp_data += '<?xml version="1.0" encoding="utf-8" standalone="no" ?>\n'
tmp_data+='<!DOCTYPE document SYSTEM "rml_1_0.dtd">\n' tmp_data += '<!DOCTYPE document SYSTEM "rml_1_0.dtd">\n'
tmp_data+='<document filename="relatorio.pdf">\n' tmp_data += '<document filename="relatorio.pdf">\n'
tmp_data+='\t<template pageSize="(21cm, 29.7cm)" title="Relatório de Protocolos" author="Luciano De Fazio" allowSplitting="20">\n' tmp_data += '\t<template pageSize="(21cm, 29.7cm)" title="Relatório de Protocolos" author="Luciano De Fazio" allowSplitting="20">\n'
tmp_data+='\t\t<pageTemplate id="first">\n' tmp_data += '\t\t<pageTemplate id="first">\n'
tmp_data+='\t\t\t<pageGraphics>\n' tmp_data += '\t\t\t<pageGraphics>\n'
tmp_data+=cabecalho(dic_cabecalho,imagem) tmp_data += cabecalho(dic_cabecalho, imagem)
tmp_data+=rodape(lst_rodape) tmp_data += rodape(lst_rodape)
tmp_data+='\t\t\t</pageGraphics>\n' tmp_data += '\t\t\t</pageGraphics>\n'
tmp_data+='\t\t\t<frame id="first" x1="2cm" y1="3cm" width="17cm" height="21cm"/>\n' tmp_data += '\t\t\t<frame id="first" x1="2cm" y1="3cm" width="17cm" height="21cm"/>\n'
tmp_data+='\t\t</pageTemplate>\n' tmp_data += '\t\t</pageTemplate>\n'
tmp_data+='\t</template>\n' tmp_data += '\t</template>\n'
tmp_data+=paraStyle() tmp_data += paraStyle()
tmp_data+=protocolos(lst_protocolos) tmp_data += protocolos(lst_protocolos)
tmp_data+='</document>\n' tmp_data += '</document>\n'
tmp_pdf=parseString(tmp_data) tmp_pdf = parseString(tmp_data)
return tmp_pdf return tmp_pdf
@ -134,4 +148,5 @@ def principal(imagem, lst_protocolos, dic_cabecalho, lst_rodape):
# return "/temp_folder/"+arquivoPdf # return "/temp_folder/"+arquivoPdf
# return principal(sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_filtro) # return
# principal(sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_filtro)

217
sapl/relatorios/templates/pdf_protocolo_preparar_pysc.py

@ -1,117 +1,126 @@
import os import os
request=context.REQUEST request = context.REQUEST
response=request.RESPONSE response = request.RESPONSE
session= request.SESSION session = request.SESSION
data=DateTime().strftime('%d/%m/%Y') data = DateTime().strftime('%d/%m/%Y')
#Abaixo é gerada a string para o rodapé da página # Abaixo é gerada a string para o rodapé da página
casa={} casa = {}
aux=context.sapl_documentos.props_sapl.propertyItems() aux = context.sapl_documentos.props_sapl.propertyItems()
for item in aux: for item in aux:
casa[item[0]]=item[1] casa[item[0]] = item[1]
localidade=context.zsql.localidade_obter_zsql(cod_localidade=casa["cod_localidade"]) localidade = context.zsql.localidade_obter_zsql(
if len(casa["num_cep"])==8: cod_localidade=casa["cod_localidade"])
cep=casa["num_cep"][:4]+"-"+casa["num_cep"][5:] if len(casa["num_cep"]) == 8:
cep = casa["num_cep"][:4] + "-" + casa["num_cep"][5:]
else: else:
cep="" cep = ""
linha1=casa["end_casa"] linha1 = casa["end_casa"]
if cep!="": if cep != "":
if casa["end_casa"]!="" and casa["end_casa"]!=None: if casa["end_casa"] != "" and casa["end_casa"] != None:
linha1 = linha1 + " - " linha1 = linha1 + " - "
linha1 = linha1 + "CEP "+cep linha1 = linha1 + "CEP " + cep
if localidade[0].nom_localidade!="" and localidade[0].nom_localidade!=None: if localidade[0].nom_localidade != "" and localidade[0].nom_localidade != None:
linha1 = linha1 + " - "+localidade[0].nom_localidade+" "+localidade[0].sgl_uf linha1 = linha1 + " - " + \
if casa["num_tel"]!="" and casa["num_tel"]!=None: localidade[0].nom_localidade + " " + localidade[0].sgl_uf
linha1 = linha1 + " Tel.: "+ casa["num_tel"] if casa["num_tel"] != "" and casa["num_tel"] != None:
linha1 = linha1 + " Tel.: " + casa["num_tel"]
linha2=casa["end_web_casa"]
if casa["end_email_casa"]!="" and casa["end_email_casa"]!=None: linha2 = casa["end_web_casa"]
if casa["end_web_casa"]!="" and casa["end_web_casa"]!=None: if casa["end_email_casa"] != "" and casa["end_email_casa"] != None:
linha2 = linha2 + " - " if casa["end_web_casa"] != "" and casa["end_web_casa"] != None:
linha2 = linha2 + "E-mail: "+casa["end_email_casa"] linha2 = linha2 + " - "
linha2 = linha2 + "E-mail: " + casa["end_email_casa"]
data_emissao=DateTime().strftime("%d/%m/%Y")
rodape=[linha1,linha2,data_emissao] data_emissao = DateTime().strftime("%d/%m/%Y")
rodape = [linha1, linha2, data_emissao]
#Por fim, gera-se as entradas para o cabeçalho
estados=context.zsql.localidade_obter_zsql(tip_localidade="u") # Por fim, gera-se as entradas para o cabeçalho
estados = context.zsql.localidade_obter_zsql(tip_localidade="u")
for uf in estados: for uf in estados:
if localidade[0].sgl_uf==uf.sgl_uf: if localidade[0].sgl_uf == uf.sgl_uf:
nom_estado=uf.nom_localidade nom_estado = uf.nom_localidade
break break
cabecalho={} cabecalho = {}
cabecalho["nom_casa"]=casa["nom_casa"] cabecalho["nom_casa"] = casa["nom_casa"]
cabecalho["nom_estado"]="Estado de "+nom_estado cabecalho["nom_estado"] = "Estado de " + nom_estado
# tenta buscar o logotipo da casa LOGO_CASA # tenta buscar o logotipo da casa LOGO_CASA
if hasattr(context.sapl_documentos.props_sapl,'logo_casa.gif'): if hasattr(context.sapl_documentos.props_sapl, 'logo_casa.gif'):
imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url() imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url()
else: else:
imagem = context.imagens.absolute_url() + "/brasao_transp.gif" imagem = context.imagens.absolute_url() + "/brasao_transp.gif"
#Por fim, utiliza o PythonScript para pesquisar os protocolos e gerar os dados # Por fim, utiliza o PythonScript para pesquisar os protocolos e gerar os dados
protocolos=[] protocolos = []
REQUEST=context.REQUEST REQUEST = context.REQUEST
for protocolo in context.zsql.protocolo_pesquisar_zsql(tip_protocolo=REQUEST['rad_tip_protocolo'], for protocolo in context.zsql.protocolo_pesquisar_zsql(tip_protocolo=REQUEST['rad_tip_protocolo'],
cod_protocolo=REQUEST['txt_num_protocolo'], ano_protocolo=REQUEST['txt_ano_protocolo'], cod_protocolo=REQUEST['txt_num_protocolo'], ano_protocolo=REQUEST[
tip_documento=REQUEST['lst_tip_documento'], tip_processo=REQUEST['rad_tip_processo'], 'txt_ano_protocolo'],
tip_materia=REQUEST['lst_tip_materia'], des_assunto=REQUEST['txt_assunto'], tip_documento=REQUEST['lst_tip_documento'], tip_processo=REQUEST[
cod_autor=REQUEST['hdn_cod_autor'], des_interessado=REQUEST['txa_txt_interessado'], 'rad_tip_processo'],
dat_apres=REQUEST['dt_apres'], dat_apres2=REQUEST['dt_apres2']): tip_materia=REQUEST[
dic={} 'lst_tip_materia'], des_assunto=REQUEST['txt_assunto'],
cod_autor=REQUEST['hdn_cod_autor'], des_interessado=REQUEST[
dic['titulo']=str(protocolo.cod_protocolo)+'/'+str(protocolo.ano_protocolo) 'txa_txt_interessado'],
dat_apres=REQUEST['dt_apres'], dat_apres2=REQUEST['dt_apres2']):
dic['data']=context.pysc.iso_to_port_pysc(protocolo.dat_protocolo)+' - <b>Horário:</b>'+protocolo.hor_protocolo dic = {}
dic['txt_assunto']=protocolo.txt_assunto_ementa dic['titulo'] = str(protocolo.cod_protocolo) + '/' + \
str(protocolo.ano_protocolo)
dic['txt_interessado']=protocolo.txt_interessado
dic['data'] = context.pysc.iso_to_port_pysc(
dic['nom_autor'] = " " protocolo.dat_protocolo) + ' - <b>Horário:</b>' + protocolo.hor_protocolo
if protocolo.cod_autor!=None:
for autor in context.zsql.autor_obter_zsql(cod_autor=protocolo.cod_autor): dic['txt_assunto'] = protocolo.txt_assunto_ementa
if autor.des_tipo_autor=='Parlamentar':
for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar): dic['txt_interessado'] = protocolo.txt_interessado
dic['nom_autor']=parlamentar.nom_completo
elif autor.des_tipo_autor=='Comissao': dic['nom_autor'] = " "
for comissao in context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao): if protocolo.cod_autor != None:
dic['nom_autor']=comissao.nom_comissao for autor in context.zsql.autor_obter_zsql(cod_autor=protocolo.cod_autor):
else: if autor.des_tipo_autor == 'Parlamentar':
dic['nom_autor']=autor.nom_autor for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar):
dic['nom_autor'] = parlamentar.nom_completo
dic['natureza']='' elif autor.des_tipo_autor == 'Comissao':
if protocolo.tip_processo==0: for comissao in context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao):
dic['natureza']='Administrativo' dic['nom_autor'] = comissao.nom_comissao
if protocolo.tip_processo==1: else:
dic['natureza']='Legislativo' dic['nom_autor'] = autor.nom_autor
dic['processo']=protocolo.des_tipo_materia or protocolo.des_tipo_documento dic['natureza'] = ''
if protocolo.tip_processo == 0:
dic['anulado']='' dic['natureza'] = 'Administrativo'
if protocolo.ind_anulado==1: if protocolo.tip_processo == 1:
dic['anulado']='Nulo' dic['natureza'] = 'Legislativo'
protocolos.append(dic) dic['processo'] = protocolo.des_tipo_materia or protocolo.des_tipo_documento
filtro={} # Dicionário que conterá os dados do filtro dic['anulado'] = ''
if protocolo.ind_anulado == 1:
dic['anulado'] = 'Nulo'
protocolos.append(dic)
filtro = {} # Dicionário que conterá os dados do filtro
# Atribuições diretas do REQUEST # Atribuições diretas do REQUEST
filtro['numero']=REQUEST.txt_num_protocolo filtro['numero'] = REQUEST.txt_num_protocolo
filtro['ano']=REQUEST.txt_ano_protocolo filtro['ano'] = REQUEST.txt_ano_protocolo
filtro['tipo_protocolo']=REQUEST.rad_tip_protocolo filtro['tipo_protocolo'] = REQUEST.rad_tip_protocolo
filtro['tipo_processo']=REQUEST.rad_tip_processo filtro['tipo_processo'] = REQUEST.rad_tip_processo
filtro['assunto']=REQUEST.txt_assunto filtro['assunto'] = REQUEST.txt_assunto
filtro['autor']=REQUEST.hdn_cod_autor filtro['autor'] = REQUEST.hdn_cod_autor
filtro['interessado']=REQUEST.txa_txt_interessado filtro['interessado'] = REQUEST.txa_txt_interessado
sessao=session.id sessao = session.id
caminho = context.pdf_protocolo_gerar(sessao,imagem,data,protocolos,cabecalho,rodape,filtro) caminho = context.pdf_protocolo_gerar(
if caminho=='aviso': sessao, imagem, data, protocolos, cabecalho, rodape, filtro)
return response.redirect('mensagem_emitir_proc') if caminho == 'aviso':
return response.redirect('mensagem_emitir_proc')
else: else:
response.redirect(caminho) response.redirect(caminho)

20
sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py

@ -26,7 +26,9 @@ def cabecalho(inf_basicas_dic, imagem):
tmp += '\t\t\t\t<setFont name="Helvetica-Bold" size="12"/>\n' tmp += '\t\t\t\t<setFont name="Helvetica-Bold" size="12"/>\n'
tmp += '\t\t\t\t<drawString x="4.2cm" y="25cm">Resumo da ' + str(inf_basicas_dic['num_sessao_plen']) + 'ª Reunião ' + str(inf_basicas_dic['nom_sessao']) + ' da ' + str( tmp += '\t\t\t\t<drawString x="4.2cm" y="25cm">Resumo da ' + str(inf_basicas_dic['num_sessao_plen']) + 'ª Reunião ' + str(inf_basicas_dic['nom_sessao']) + ' da ' + str(
inf_basicas_dic['num_sessao_leg']) + 'ª Sessão Legislativa da </drawString>\n' inf_basicas_dic['num_sessao_leg']) + 'ª Sessão Legislativa da </drawString>\n'
tmp += '\t\t\t\t<drawString x="6.7cm" y="24.5cm">' + str(inf_basicas_dic['num_legislatura']) + ' Legislatura </drawString>\n' tmp += '\t\t\t\t<drawString x="6.7cm" y="24.5cm">' + \
str(inf_basicas_dic['num_legislatura']) + \
' Legislatura </drawString>\n'
return tmp return tmp
@ -159,7 +161,7 @@ def expedientes(lst_expedientes):
for idx, expediente in enumerate(lst_expedientes): for idx, expediente in enumerate(lst_expedientes):
tmp += '\t\t<para style="P2"><b>' + '<br/> ' + \ tmp += '\t\t<para style="P2"><b>' + '<br/> ' + \
expediente['nom_expediente'] + ': </b></para>\n' + \ expediente['nom_expediente'] + ': </b></para>\n' + \
'<para style="P2">' + \ '<para style="P2">' + \
expediente['txt_expediente'] + '</para>\n' expediente['txt_expediente'] + '</para>\n'
tmp += '\t\t<para style="P2">\n' tmp += '\t\t<para style="P2">\n'
tmp += '\t\t\t<font color="white"> </font>\n' tmp += '\t\t\t<font color="white"> </font>\n'
@ -183,11 +185,12 @@ def expediente_materia(lst_expediente_materia):
txt_ementa = expediente_materia['txt_ementa'].replace('&', '&amp;') txt_ementa = expediente_materia['txt_ementa'].replace('&', '&amp;')
tmp += '<td><para style="P4">' + txt_ementa + '</para></td>\n' tmp += '<td><para style="P4">' + txt_ementa + '</para></td>\n'
tmp += '<td><para style="P3"><b>' + \ tmp += '<td><para style="P3"><b>' + \
str(expediente_materia['nom_resultado']) + '</b></para>\n' + '<para style="P3">' str(expediente_materia['nom_resultado']) + \
'</b></para>\n' + '<para style="P3">'
if expediente_materia['votacao_observacao'] != txt_ementa: if expediente_materia['votacao_observacao'] != txt_ementa:
tmp += str(expediente_materia['votacao_observacao']) tmp += str(expediente_materia['votacao_observacao'])
else: else:
tmp += ' ' tmp += ' '
tmp += '</para></td></tr>\n' tmp += '</para></td></tr>\n'
tmp += '\t\t</blockTable>\n' tmp += '\t\t</blockTable>\n'
@ -242,11 +245,12 @@ def votacao(lst_votacao):
txt_ementa = votacao['txt_ementa'].replace('&', '&amp;') txt_ementa = votacao['txt_ementa'].replace('&', '&amp;')
tmp += '<td><para style="P4">' + txt_ementa + '</para></td>\n' tmp += '<td><para style="P4">' + txt_ementa + '</para></td>\n'
tmp += '<td><para style="P3"><b>' + \ tmp += '<td><para style="P3"><b>' + \
str(votacao['nom_resultado']) + '</b></para>\n' + '<para style="P3">' str(votacao['nom_resultado']) + \
'</b></para>\n' + '<para style="P3">'
if votacao['votacao_observacao'] != txt_ementa: if votacao['votacao_observacao'] != txt_ementa:
tmp += str(votacao['votacao_observacao']) tmp += str(votacao['votacao_observacao'])
else: else:
tmp += ' ' tmp += ' '
tmp += '</para></td></tr>\n' tmp += '</para></td></tr>\n'
tmp += '\t\t</blockTable>\n' tmp += '\t\t</blockTable>\n'

285
sapl/relatorios/templates/pdf_sessao_plenaria_preparar_pysc.py

@ -1,20 +1,22 @@
import os import os
request=context.REQUEST request = context.REQUEST
response=request.RESPONSE response = request.RESPONSE
session= request.SESSION session = request.SESSION
if context.REQUEST['data']!='': if context.REQUEST['data'] != '':
dat_inicio_sessao = context.REQUEST['data'] dat_inicio_sessao = context.REQUEST['data']
pauta = [] # lista contendo a pauta da ordem do dia a ser impressa pauta = [] # lista contendo a pauta da ordem do dia a ser impressa
data = context.pysc.data_converter_pysc(dat_inicio_sessao) # converte data para formato yyyy/mm/dd # converte data para formato yyyy/mm/dd
data = context.pysc.data_converter_pysc(dat_inicio_sessao)
codigo = context.REQUEST['cod_sessao_plen'] codigo = context.REQUEST['cod_sessao_plen']
# seleciona as matérias que compõem a pauta na data escolhida # seleciona as matérias que compõem a pauta na data escolhida
for sessao in context.zsql.sessao_plenaria_obter_zsql(dat_inicio_sessao=data, cod_sessao_plen=codigo, ind_excluido=0): for sessao in context.zsql.sessao_plenaria_obter_zsql(dat_inicio_sessao=data, cod_sessao_plen=codigo, ind_excluido=0):
inf_basicas_dic = {} # dicionário que armazenará as informacoes basicas da sessao plenaria inf_basicas_dic = {} # dicionário que armazenará as informacoes basicas da sessao plenaria
# seleciona o tipo da sessao plenaria # seleciona o tipo da sessao plenaria
tipo_sessao = context.zsql.tipo_sessao_plenaria_obter_zsql(tip_sessao=sessao.tip_sessao,ind_excluido=0)[0] tipo_sessao = context.zsql.tipo_sessao_plenaria_obter_zsql(
tip_sessao=sessao.tip_sessao, ind_excluido=0)[0]
inf_basicas_dic["num_sessao_plen"] = sessao.num_sessao_plen inf_basicas_dic["num_sessao_plen"] = sessao.num_sessao_plen
inf_basicas_dic["nom_sessao"] = tipo_sessao.nom_sessao inf_basicas_dic["nom_sessao"] = tipo_sessao.nom_sessao
inf_basicas_dic["num_legislatura"] = sessao.num_legislatura inf_basicas_dic["num_legislatura"] = sessao.num_legislatura
@ -23,11 +25,11 @@ if context.REQUEST['data']!='':
inf_basicas_dic["hr_inicio_sessao"] = sessao.hr_inicio_sessao inf_basicas_dic["hr_inicio_sessao"] = sessao.hr_inicio_sessao
inf_basicas_dic["dat_fim_sessao"] = sessao.dat_fim_sessao inf_basicas_dic["dat_fim_sessao"] = sessao.dat_fim_sessao
inf_basicas_dic["hr_fim_sessao"] = sessao.hr_fim_sessao inf_basicas_dic["hr_fim_sessao"] = sessao.hr_fim_sessao
# Lista da composicao da mesa diretora # Lista da composicao da mesa diretora
lst_mesa = [] lst_mesa = []
for composicao in context.zsql.composicao_mesa_sessao_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen,ind_excluido=0): for composicao in context.zsql.composicao_mesa_sessao_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen, ind_excluido=0):
for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=composicao.cod_parlamentar,ind_excluido=0): for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=composicao.cod_parlamentar, ind_excluido=0):
for cargo in context.zsql.cargo_mesa_obter_zsql(cod_cargo=composicao.cod_cargo, ind_excluido=0): for cargo in context.zsql.cargo_mesa_obter_zsql(cod_cargo=composicao.cod_cargo, ind_excluido=0):
dic_mesa = {} dic_mesa = {}
dic_mesa['nom_parlamentar'] = parlamentar.nom_parlamentar dic_mesa['nom_parlamentar'] = parlamentar.nom_parlamentar
@ -38,80 +40,98 @@ if context.REQUEST['data']!='':
# Lista de presença na sessão # Lista de presença na sessão
lst_presenca_sessao = [] lst_presenca_sessao = []
for presenca in context.zsql.presenca_sessao_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen, ind_excluido=0): for presenca in context.zsql.presenca_sessao_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen, ind_excluido=0):
for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=presenca.cod_parlamentar,ind_excluido=0): for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=presenca.cod_parlamentar, ind_excluido=0):
dic_presenca = {} dic_presenca = {}
dic_presenca["nom_parlamentar"] = parlamentar.nom_parlamentar dic_presenca["nom_parlamentar"] = parlamentar.nom_parlamentar
dic_presenca['sgl_partido'] = parlamentar.sgl_partido dic_presenca['sgl_partido'] = parlamentar.sgl_partido
lst_presenca_sessao.append(dic_presenca) lst_presenca_sessao.append(dic_presenca)
# Exibe os Expedientes # Exibe os Expedientes
lst_expedientes = [] lst_expedientes = []
dic_expedientes = None dic_expedientes = None
for tip_expediente in context.zsql.tipo_expediente_obter_zsql(): for tip_expediente in context.zsql.tipo_expediente_obter_zsql():
for expediente in context.zsql.expediente_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen,cod_expediente=tip_expediente.cod_expediente, ind_excluido=0): for expediente in context.zsql.expediente_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen, cod_expediente=tip_expediente.cod_expediente, ind_excluido=0):
dic_expedientes = {} dic_expedientes = {}
dic_expedientes["nom_expediente"] = tip_expediente.nom_expediente dic_expedientes[
"nom_expediente"] = tip_expediente.nom_expediente
dic_expedientes["txt_expediente"] = expediente.txt_expediente dic_expedientes["txt_expediente"] = expediente.txt_expediente
if dic_expedientes: if dic_expedientes:
lst_expedientes.append(dic_expedientes) lst_expedientes.append(dic_expedientes)
# Lista das matérias do Expediente, incluindo o resultado das votacoes # Lista das matérias do Expediente, incluindo o resultado das votacoes
lst_expediente_materia=[] lst_expediente_materia = []
for expediente_materia in context.zsql.votacao_expediente_materia_obter_zsql(dat_ordem = data, cod_sessao_plen=sessao.cod_sessao_plen, ind_excluido=0): for expediente_materia in context.zsql.votacao_expediente_materia_obter_zsql(dat_ordem=data, cod_sessao_plen=sessao.cod_sessao_plen, ind_excluido=0):
# seleciona os detalhes de uma matéria # seleciona os detalhes de uma matéria
materia = context.zsql.materia_obter_zsql(cod_materia=expediente_materia.cod_materia)[0] materia = context.zsql.materia_obter_zsql(
cod_materia=expediente_materia.cod_materia)[0]
dic_expediente_materia = {} dic_expediente_materia = {}
dic_expediente_materia["num_ordem"] = expediente_materia.num_ordem dic_expediente_materia["num_ordem"] = expediente_materia.num_ordem
dic_expediente_materia["id_materia"] = materia.sgl_tipo_materia+" "+materia.des_tipo_materia+" "+str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica) dic_expediente_materia["id_materia"] = materia.sgl_tipo_materia + " " + materia.des_tipo_materia + \
dic_expediente_materia["des_numeracao"]="" " " + str(materia.num_ident_basica) + "/" + \
str(materia.ano_ident_basica)
dic_expediente_materia["des_numeracao"] = ""
numeracao = context.zsql.numeracao_obter_zsql(cod_materia=expediente_materia.cod_materia) numeracao = context.zsql.numeracao_obter_zsql(
cod_materia=expediente_materia.cod_materia)
if len(numeracao): if len(numeracao):
numeracao = numeracao[0] numeracao = numeracao[0]
dic_expediente_materia["des_numeracao"] = str(numeracao.num_materia)+"/"+str(numeracao.ano_materia) dic_expediente_materia["des_numeracao"] = str(
numeracao.num_materia) + "/" + str(numeracao.ano_materia)
tram = context.zsql.tramitacao_turno_obter_zsql(cod_materia=materia.cod_materia, dat_inicio_sessao=data) tram = context.zsql.tramitacao_turno_obter_zsql(
dic_expediente_materia["des_turno"]="" cod_materia=materia.cod_materia, dat_inicio_sessao=data)
dic_expediente_materia["des_turno"] = ""
if len(tram): if len(tram):
tram_turno = tram[0] tram_turno = tram[0]
if tram_turno.sgl_turno != "": if tram_turno.sgl_turno != "":
for turno in [("P","Primeiro"), ("S","Segundo"), ("U","Único"), ("L","Suplementar"), ("A","Votação Única em Regime de Urgência"), ("B","1ª Votação"), ("C","2ª e 3ª Votações"), ("F", "Final")]: for turno in [("P", "Primeiro"), ("S", "Segundo"), ("U", "Único"), ("L", "Suplementar"), ("A", "Votação Única em Regime de Urgência"), ("B", "1ª Votação"), ("C", "2ª e 3ª Votações"), ("F", "Final")]:
if tram_turno.sgl_turno == turno[0]: if tram_turno.sgl_turno == turno[0]:
dic_expediente_materia["des_turno"] = turno[1] dic_expediente_materia["des_turno"] = turno[1]
dic_expediente_materia["txt_ementa"] = materia.txt_ementa dic_expediente_materia["txt_ementa"] = materia.txt_ementa
dic_expediente_materia["ordem_observacao"] = expediente_materia.ordem_observacao dic_expediente_materia[
"ordem_observacao"] = expediente_materia.ordem_observacao
dic_expediente_materia["nom_autor"] = "" dic_expediente_materia["nom_autor"] = ""
autoria = context.zsql.autoria_obter_zsql(cod_materia=expediente_materia.cod_materia, ind_primeiro_autor=1) autoria = context.zsql.autoria_obter_zsql(
if len(autoria) > 0: # se existe autor cod_materia=expediente_materia.cod_materia, ind_primeiro_autor=1)
if len(autoria) > 0: # se existe autor
autoria = autoria[0] autoria = autoria[0]
autor = context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor) autor = context.zsql.autor_obter_zsql(
cod_autor=autoria.cod_autor)
if len(autor) > 0: if len(autor) > 0:
autor = autor[0] autor = autor[0]
try: try:
if autor.des_tipo_autor == "Parlamentar": if autor.des_tipo_autor == "Parlamentar":
parlamentar = context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar)[0] parlamentar = context.zsql.parlamentar_obter_zsql(
dic_expediente_materia["nom_autor"] = parlamentar.nom_parlamentar cod_parlamentar=autor.cod_parlamentar)[0]
elif autor.des_tipo_autor == "Comissao": dic_expediente_materia[
comissao = context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao)[0] "nom_autor"] = parlamentar.nom_parlamentar
dic_expediente_materia["nom_autor"] = comissao.nom_comissao elif autor.des_tipo_autor == "Comissao":
elif autor.nom_autor != "": comissao = context.zsql.comissao_obter_zsql(
dic_expediente_materia["nom_autor"] = autor.nom_autor cod_comissao=autor.cod_comissao)[0]
else: dic_expediente_materia[
dic_expediente_materia["nom_autor"] = autor.des_tipo_autor "nom_autor"] = comissao.nom_comissao
elif autor.nom_autor != "":
dic_expediente_materia[
"nom_autor"] = autor.nom_autor
else:
dic_expediente_materia[
"nom_autor"] = autor.des_tipo_autor
except: except:
dic_expediente_materia["nom_autor"] = "NC-em" dic_expediente_materia["nom_autor"] = "NC-em"
dic_expediente_materia["votacao_observacao"]="" dic_expediente_materia["votacao_observacao"] = ""
if expediente_materia.tip_resultado_votacao: if expediente_materia.tip_resultado_votacao:
resultado = context.zsql.tipo_resultado_votacao_obter_zsql(tip_resultado_votacao=expediente_materia.tip_resultado_votacao, ind_excluido=0) resultado = context.zsql.tipo_resultado_votacao_obter_zsql(
tip_resultado_votacao=expediente_materia.tip_resultado_votacao, ind_excluido=0)
for i in resultado: for i in resultado:
dic_expediente_materia["nom_resultado"] = i.nom_resultado dic_expediente_materia["nom_resultado"] = i.nom_resultado
if expediente_materia.votacao_observacao: if expediente_materia.votacao_observacao:
dic_expediente_materia["votacao_observacao"] = expediente_materia.votacao_observacao dic_expediente_materia[
"votacao_observacao"] = expediente_materia.votacao_observacao
else: else:
dic_expediente_materia["nom_resultado"] = "Matéria não votada" dic_expediente_materia["nom_resultado"] = "Matéria não votada"
dic_expediente_materia["votacao_observacao"] = "Vazio" dic_expediente_materia["votacao_observacao"] = "Vazio"
@ -120,78 +140,97 @@ if context.REQUEST['data']!='':
# Lista dos oradores do Expediente # Lista dos oradores do Expediente
lst_oradores_expediente = [] lst_oradores_expediente = []
for orador_expediente in context.zsql.oradores_expediente_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen, ind_excluido=0): for orador_expediente in context.zsql.oradores_expediente_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen, ind_excluido=0):
for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=orador_expediente.cod_parlamentar,ind_excluido=0): for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=orador_expediente.cod_parlamentar, ind_excluido=0):
dic_oradores_expediente = {} dic_oradores_expediente = {}
dic_oradores_expediente["num_ordem"] = orador_expediente.num_ordem dic_oradores_expediente[
dic_oradores_expediente["nom_parlamentar"] = parlamentar.nom_parlamentar "num_ordem"] = orador_expediente.num_ordem
dic_oradores_expediente['sgl_partido'] = parlamentar.sgl_partido dic_oradores_expediente[
"nom_parlamentar"] = parlamentar.nom_parlamentar
dic_oradores_expediente[
'sgl_partido'] = parlamentar.sgl_partido
lst_oradores_expediente.append(dic_oradores_expediente) lst_oradores_expediente.append(dic_oradores_expediente)
# Lista presença na ordem do dia # Lista presença na ordem do dia
lst_presenca_ordem_dia = [] lst_presenca_ordem_dia = []
for presenca_ordem_dia in context.zsql.presenca_ordem_dia_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen,ind_excluido=0): for presenca_ordem_dia in context.zsql.presenca_ordem_dia_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen, ind_excluido=0):
for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=presenca_ordem_dia.cod_parlamentar,ind_excluido=0): for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=presenca_ordem_dia.cod_parlamentar, ind_excluido=0):
dic_presenca_ordem_dia = {} dic_presenca_ordem_dia = {}
dic_presenca_ordem_dia['nom_parlamentar'] = parlamentar.nom_parlamentar dic_presenca_ordem_dia[
'nom_parlamentar'] = parlamentar.nom_parlamentar
dic_presenca_ordem_dia['sgl_partido'] = parlamentar.sgl_partido dic_presenca_ordem_dia['sgl_partido'] = parlamentar.sgl_partido
lst_presenca_ordem_dia.append(dic_presenca_ordem_dia) lst_presenca_ordem_dia.append(dic_presenca_ordem_dia)
# Lista das matérias da Ordem do Dia, incluindo o resultado das votacoes # Lista das matérias da Ordem do Dia, incluindo o resultado das
lst_votacao=[] # votacoes
for votacao in context.zsql.votacao_ordem_dia_obter_zsql(dat_ordem = data, cod_sessao_plen=sessao.cod_sessao_plen, ind_excluido=0): lst_votacao = []
for votacao in context.zsql.votacao_ordem_dia_obter_zsql(dat_ordem=data, cod_sessao_plen=sessao.cod_sessao_plen, ind_excluido=0):
# seleciona os detalhes de uma matéria # seleciona os detalhes de uma matéria
materia = context.zsql.materia_obter_zsql(cod_materia=votacao.cod_materia)[0] materia = context.zsql.materia_obter_zsql(
cod_materia=votacao.cod_materia)[0]
dic_votacao = {} dic_votacao = {}
dic_votacao["num_ordem"] = votacao.num_ordem dic_votacao["num_ordem"] = votacao.num_ordem
dic_votacao["id_materia"] = materia.sgl_tipo_materia+" "+materia.des_tipo_materia+" "+str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica) dic_votacao["id_materia"] = materia.sgl_tipo_materia + " " + materia.des_tipo_materia + \
dic_votacao["des_numeracao"]="" " " + str(materia.num_ident_basica) + "/" + \
numeracao = context.zsql.numeracao_obter_zsql(cod_materia=votacao.cod_materia) str(materia.ano_ident_basica)
dic_votacao["des_numeracao"] = ""
numeracao = context.zsql.numeracao_obter_zsql(
cod_materia=votacao.cod_materia)
if len(numeracao): if len(numeracao):
numeracao = numeracao[0] numeracao = numeracao[0]
dic_votacao["des_numeracao"] = str(numeracao.num_materia)+"/"+str(numeracao.ano_materia) dic_votacao["des_numeracao"] = str(
dic_votacao["des_turno"]="" numeracao.num_materia) + "/" + str(numeracao.ano_materia)
tramitacao = context.zsql.tramitacao_obter_zsql(cod_materia=materia.cod_materia, ind_ult_tramitacao=1) dic_votacao["des_turno"] = ""
tramitacao = context.zsql.tramitacao_obter_zsql(
cod_materia=materia.cod_materia, ind_ult_tramitacao=1)
if len(tramitacao): if len(tramitacao):
tramitacao = tramitacao[0] tramitacao = tramitacao[0]
tram = context.zsql.tramitacao_turno_obter_zsql(cod_materia=materia.cod_materia, dat_inicio_sessao=data) tram = context.zsql.tramitacao_turno_obter_zsql(
cod_materia=materia.cod_materia, dat_inicio_sessao=data)
if len(tram): if len(tram):
tram_turno = tram[0] tram_turno = tram[0]
if tram_turno.sgl_turno != "": if tram_turno.sgl_turno != "":
for turno in [("P","Primeiro"), ("S","Segundo"), ("U","Único"), ("L","Suplementar"), ("F","Final"), ("A","Votação Única em Regime de Urgência"), ("B","1ª Votação"), ("C","2ª e 3ª Votações")]: for turno in [("P", "Primeiro"), ("S", "Segundo"), ("U", "Único"), ("L", "Suplementar"), ("F", "Final"), ("A", "Votação Única em Regime de Urgência"), ("B", "1ª Votação"), ("C", "2ª e 3ª Votações")]:
if tram_turno.sgl_turno == turno[0]: if tram_turno.sgl_turno == turno[0]:
dic_votacao["des_turno"] = turno[1] dic_votacao["des_turno"] = turno[1]
dic_votacao["txt_ementa"] = materia.txt_ementa dic_votacao["txt_ementa"] = materia.txt_ementa
dic_votacao["ordem_observacao"] = votacao.ordem_observacao dic_votacao["ordem_observacao"] = votacao.ordem_observacao
dic_votacao["nom_autor"] = "" dic_votacao["nom_autor"] = ""
autoria = context.zsql.autoria_obter_zsql(cod_materia=votacao.cod_materia, ind_primeiro_autor=1) autoria = context.zsql.autoria_obter_zsql(
if len(autoria) > 0: # se existe autor cod_materia=votacao.cod_materia, ind_primeiro_autor=1)
if len(autoria) > 0: # se existe autor
autoria = autoria[0] autoria = autoria[0]
autor = context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor) autor = context.zsql.autor_obter_zsql(
cod_autor=autoria.cod_autor)
if len(autor) > 0: if len(autor) > 0:
autor = autor[0] autor = autor[0]
try: try:
if autor.des_tipo_autor == "Parlamentar": if autor.des_tipo_autor == "Parlamentar":
parlamentar = context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar)[0] parlamentar = context.zsql.parlamentar_obter_zsql(
dic_votacao["nom_autor"] = parlamentar.nom_parlamentar cod_parlamentar=autor.cod_parlamentar)[0]
elif autor.des_tipo_autor == "Comissao": dic_votacao[
comissao = context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao)[0] "nom_autor"] = parlamentar.nom_parlamentar
dic_votacao["nom_autor"] = comissao.nom_comissao elif autor.des_tipo_autor == "Comissao":
elif autor.nom_autor != "": comissao = context.zsql.comissao_obter_zsql(
dic_votacao["nom_autor"] = autor.nom_autor cod_comissao=autor.cod_comissao)[0]
else: dic_votacao["nom_autor"] = comissao.nom_comissao
dic_votacao["nom_autor"] = autor.des_tipo_autor elif autor.nom_autor != "":
except: dic_votacao["nom_autor"] = autor.nom_autor
dic_votacao["nom_autor"] = "NC-od" else:
dic_votacao["nom_autor"] = autor.des_tipo_autor
dic_votacao["votacao_observacao"]="" except:
dic_votacao["nom_autor"] = "NC-od"
dic_votacao["votacao_observacao"] = ""
if votacao.tip_resultado_votacao: if votacao.tip_resultado_votacao:
resultado = context.zsql.tipo_resultado_votacao_obter_zsql(tip_resultado_votacao=votacao.tip_resultado_votacao, ind_excluido=0) resultado = context.zsql.tipo_resultado_votacao_obter_zsql(
tip_resultado_votacao=votacao.tip_resultado_votacao, ind_excluido=0)
for i in resultado: for i in resultado:
dic_votacao["nom_resultado"] = i.nom_resultado dic_votacao["nom_resultado"] = i.nom_resultado
if votacao.votacao_observacao: if votacao.votacao_observacao:
dic_votacao["votacao_observacao"] = votacao.votacao_observacao dic_votacao[
"votacao_observacao"] = votacao.votacao_observacao
else: else:
dic_votacao["nom_resultado"] = "Matéria não votada" dic_votacao["nom_resultado"] = "Matéria não votada"
dic_votacao["votacao_observacao"] = "Vazio" dic_votacao["votacao_observacao"] = "Vazio"
@ -200,42 +239,46 @@ if context.REQUEST['data']!='':
# Lista dos oradores nas Explicações Pessoais # Lista dos oradores nas Explicações Pessoais
lst_oradores = [] lst_oradores = []
for orador in context.zsql.oradores_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen, ind_excluido=0): for orador in context.zsql.oradores_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen, ind_excluido=0):
for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=orador.cod_parlamentar,ind_excluido=0): for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=orador.cod_parlamentar, ind_excluido=0):
dic_oradores = {} dic_oradores = {}
dic_oradores["num_ordem"] = orador.num_ordem dic_oradores["num_ordem"] = orador.num_ordem
dic_oradores["nom_parlamentar"] = parlamentar.nom_parlamentar dic_oradores["nom_parlamentar"] = parlamentar.nom_parlamentar
dic_oradores['sgl_partido'] = parlamentar.sgl_partido dic_oradores['sgl_partido'] = parlamentar.sgl_partido
lst_oradores.append(dic_oradores) lst_oradores.append(dic_oradores)
# obtém as propriedades da casa legislativa para montar o cabeçalho e o rodapé da página # obtém as propriedades da casa legislativa para montar o cabeçalho e o
cabecalho={} # rodapé da página
cabecalho = {}
# tenta buscar o logotipo da casa LOGO_CASA # tenta buscar o logotipo da casa LOGO_CASA
if hasattr(context.sapl_documentos.props_sapl,'logo_casa.gif'): if hasattr(context.sapl_documentos.props_sapl, 'logo_casa.gif'):
imagem = context.sapl_documentos.props_sapl['logo_casa.gif'].absolute_url() imagem = context.sapl_documentos.props_sapl[
'logo_casa.gif'].absolute_url()
else: else:
imagem = context.imagens.absolute_url() + "/brasao_transp.gif" imagem = context.imagens.absolute_url() + "/brasao_transp.gif"
#Abaixo é gerado o dic do rodapé da página (linha 7) # Abaixo é gerado o dic do rodapé da página (linha 7)
casa={} casa = {}
aux=context.sapl_documentos.props_sapl.propertyItems() aux = context.sapl_documentos.props_sapl.propertyItems()
for item in aux: for item in aux:
casa[item[0]]=item[1] casa[item[0]] = item[1]
localidade=context.zsql.localidade_obter_zsql(cod_localidade=casa["cod_localidade"]) localidade = context.zsql.localidade_obter_zsql(
data_emissao= DateTime().strftime("%d/%m/%Y") cod_localidade=casa["cod_localidade"])
rodape= casa data_emissao = DateTime().strftime("%d/%m/%Y")
rodape['data_emissao']= data_emissao rodape = casa
rodape['data_emissao'] = data_emissao
inf_basicas_dic['nom_camara']= casa['nom_casa']
REQUEST=context.REQUEST inf_basicas_dic['nom_camara'] = casa['nom_casa']
for local in context.zsql.localidade_obter_zsql(cod_localidade = casa['cod_localidade']): REQUEST = context.REQUEST
rodape['nom_localidade']= " "+local.nom_localidade for local in context.zsql.localidade_obter_zsql(cod_localidade=casa['cod_localidade']):
rodape['sgl_uf']= local.sgl_uf rodape['nom_localidade'] = " " + local.nom_localidade
rodape['sgl_uf'] = local.sgl_uf
# return lst_votacao # return lst_votacao
sessao=session.id sessao = session.id
caminho = context.pdf_sessao_plenaria_gerar(rodape, sessao, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao, lst_expedientes, lst_expediente_materia, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_oradores) caminho = context.pdf_sessao_plenaria_gerar(rodape, sessao, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao,
if caminho=='aviso': lst_expedientes, lst_expediente_materia, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_oradores)
if caminho == 'aviso':
return response.redirect('mensagem_emitir_proc') return response.redirect('mensagem_emitir_proc')
else: else:
response.redirect(caminho) response.redirect(caminho)

28
sapl/relatorios/views.py

@ -505,20 +505,20 @@ def get_sessao_plenaria(sessao, casa):
# Lista de presença na sessão # Lista de presença na sessão
lst_presenca_sessao = [] lst_presenca_sessao = []
presenca = SessaoPlenariaPresenca.objects.filter( presenca = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar') sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar')
for parlamentar in [p.parlamentar for p in presenca]: for parlamentar in [p.parlamentar for p in presenca]:
dic_presenca = {} dic_presenca = {}
dic_presenca["nom_parlamentar"] = parlamentar.nome_parlamentar dic_presenca["nom_parlamentar"] = parlamentar.nome_parlamentar
partido_sigla = filiacao_data(parlamentar, sessao.data_inicio) partido_sigla = filiacao_data(parlamentar, sessao.data_inicio)
dic_presenca['sgl_partido'] = partido_sigla dic_presenca['sgl_partido'] = partido_sigla
lst_presenca_sessao.append(dic_presenca) lst_presenca_sessao.append(dic_presenca)
# Exibe os Expedientes # Exibe os Expedientes
lst_expedientes = [] lst_expedientes = []
expedientes = ExpedienteSessao.objects.filter( expedientes = ExpedienteSessao.objects.filter(
sessao_plenaria=sessao).order_by('tipo__nome') sessao_plenaria=sessao).order_by('tipo__nome')
for e in expedientes: for e in expedientes:
@ -642,15 +642,15 @@ def get_sessao_plenaria(sessao, casa):
# Lista presença na ordem do dia # Lista presença na ordem do dia
lst_presenca_ordem_dia = [] lst_presenca_ordem_dia = []
presenca_ordem_dia = PresencaOrdemDia.objects.filter( presenca_ordem_dia = PresencaOrdemDia.objects.filter(
sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar') sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar')
for parlamentar in [p.parlamentar for p in presenca_ordem_dia]: for parlamentar in [p.parlamentar for p in presenca_ordem_dia]:
dic_presenca_ordem_dia = {} dic_presenca_ordem_dia = {}
dic_presenca_ordem_dia['nom_parlamentar'] = ( dic_presenca_ordem_dia['nom_parlamentar'] = (
parlamentar.nome_parlamentar) parlamentar.nome_parlamentar)
sigla = filiacao_data(parlamentar, sessao.data_inicio) sigla = filiacao_data(parlamentar, sessao.data_inicio)
dic_presenca_ordem_dia['sgl_partido'] = sigla dic_presenca_ordem_dia['sgl_partido'] = sigla
lst_presenca_ordem_dia.append(dic_presenca_ordem_dia) lst_presenca_ordem_dia.append(dic_presenca_ordem_dia)
# Lista das matérias da Ordem do Dia, incluindo o resultado das votacoes # Lista das matérias da Ordem do Dia, incluindo o resultado das votacoes
lst_votacao = [] lst_votacao = []

8
sapl/sessao/forms.py

@ -52,6 +52,7 @@ ORDENACAO_RESUMO = [('cont_mult', 'Conteúdo Multimídia'),
('oradores_exped', 'Oradores do Expediente'), ('oradores_exped', 'Oradores do Expediente'),
('oradores_expli', 'Oradores das Explicações Pessoais')] ('oradores_expli', 'Oradores das Explicações Pessoais')]
class SessaoPlenariaForm(ModelForm): class SessaoPlenariaForm(ModelForm):
class Meta: class Meta:
@ -70,21 +71,22 @@ class SessaoPlenariaForm(ModelForm):
sessoes = SessaoPlenaria.objects.filter(numero=num, sessoes = SessaoPlenaria.objects.filter(numero=num,
sessao_legislativa=sl, sessao_legislativa=sl,
legislatura=leg).\ legislatura=leg).\
values_list('id', flat=True) values_list('id', flat=True)
qtd_sessoes = len(sessoes) qtd_sessoes = len(sessoes)
error = ValidationError('Número de Sessão Plenária Existente') error = ValidationError('Número de Sessão Plenária Existente')
if qtd_sessoes > 0: if qtd_sessoes > 0:
if instance.pk: # update if instance.pk: # update
if not instance.pk in sessoes or qtd_sessoes > 1: if not instance.pk in sessoes or qtd_sessoes > 1:
raise error raise error
else: # create else: # create
raise error raise error
return self.cleaned_data return self.cleaned_data
class BancadaForm(ModelForm): class BancadaForm(ModelForm):
class Meta: class Meta:

13
sapl/sessao/models.py

@ -406,15 +406,14 @@ class RegistroVotacao(models.Model):
blank=True, verbose_name=_('Observações')) blank=True, verbose_name=_('Observações'))
data_hora_criacao = models.DateTimeField( data_hora_criacao = models.DateTimeField(
blank=True, null=True, blank=True, null=True,
auto_now_add=True, auto_now_add=True,
verbose_name=_('Data Criação')) verbose_name=_('Data Criação'))
data_hora_atualizacao = models.DateTimeField( data_hora_atualizacao = models.DateTimeField(
blank=True, null=True, blank=True, null=True,
auto_now=True, auto_now=True,
verbose_name=_('Data')) verbose_name=_('Data'))
class Meta: class Meta:
verbose_name = _('Votação') verbose_name = _('Votação')

1
sapl/sessao/serializers.py

@ -4,6 +4,7 @@ from .models import SessaoPlenaria
class SessaoPlenariaSerializer(serializers.Serializer): class SessaoPlenariaSerializer(serializers.Serializer):
class Meta: class Meta:
model = SessaoPlenaria model = SessaoPlenaria
fields = ('tipo', fields = ('tipo',

89
sapl/sessao/views.py

@ -81,6 +81,7 @@ def reordernar_materias_ordem(request, pk):
return HttpResponseRedirect( return HttpResponseRedirect(
reverse('sapl.sessao:ordemdia_list', kwargs={'pk': pk})) reverse('sapl.sessao:ordemdia_list', kwargs={'pk': pk}))
def verifica_presenca(request, model, spk): def verifica_presenca(request, model, spk):
if not model.objects.filter(sessao_plenaria_id=spk).exists(): if not model.objects.filter(sessao_plenaria_id=spk).exists():
msg = _('Votação não pode ser aberta sem presenças') msg = _('Votação não pode ser aberta sem presenças')
@ -118,7 +119,7 @@ def abrir_votacao_expediente_view(request, pk, spk):
if verifica_presenca(request, SessaoPlenariaPresenca, spk): if verifica_presenca(request, SessaoPlenariaPresenca, spk):
verifica_votacoes_abertas(request, ExpedienteMateria, pk) verifica_votacoes_abertas(request, ExpedienteMateria, pk)
return HttpResponseRedirect( return HttpResponseRedirect(
reverse('sapl.sessao:expedientemateria_list', kwargs={'pk': spk})) reverse('sapl.sessao:expedientemateria_list', kwargs={'pk': spk}))
@permission_required('sessao.change_ordemdia') @permission_required('sessao.change_ordemdia')
@ -126,7 +127,7 @@ def abrir_votacao_ordem_view(request, pk, spk):
if verifica_presenca(request, PresencaOrdemDia, spk): if verifica_presenca(request, PresencaOrdemDia, spk):
verifica_votacoes_abertas(request, OrdemDia, pk) verifica_votacoes_abertas(request, OrdemDia, pk)
return HttpResponseRedirect( return HttpResponseRedirect(
reverse('sapl.sessao:ordemdia_list', kwargs={'pk': spk})) reverse('sapl.sessao:ordemdia_list', kwargs={'pk': spk}))
def put_link_materia(context): def put_link_materia(context):
@ -172,8 +173,9 @@ class MateriaOrdemDiaCrud(MasterDetailCrud):
self.initial['data_ordem'] = SessaoPlenaria.objects.get( self.initial['data_ordem'] = SessaoPlenaria.objects.get(
pk=self.kwargs['pk']).data_inicio.strftime('%d/%m/%Y') pk=self.kwargs['pk']).data_inicio.strftime('%d/%m/%Y')
max_numero_ordem = OrdemDia.objects.filter( max_numero_ordem = OrdemDia.objects.filter(
sessao_plenaria=self.kwargs['pk']).aggregate(Max('numero_ordem'))['numero_ordem__max'] sessao_plenaria=self.kwargs['pk']).aggregate(Max('numero_ordem'))['numero_ordem__max']
self.initial['numero_ordem'] = (max_numero_ordem if max_numero_ordem else 0) + 1 self.initial['numero_ordem'] = (
max_numero_ordem if max_numero_ordem else 0) + 1
return self.initial return self.initial
def get_success_url(self): def get_success_url(self):
@ -370,7 +372,7 @@ class ExpedienteMateriaCrud(MasterDetailCrud):
else: else:
url = '' url = ''
resultado = obj.registrovotacao_set.get( resultado = obj.registrovotacao_set.get(
materia_id=obj.materia_id) materia_id=obj.materia_id)
resultado_descricao = resultado.tipo_resultado_votacao.nome resultado_descricao = resultado.tipo_resultado_votacao.nome
resultado_observacao = resultado.observacao resultado_observacao = resultado.observacao
if self.request.user.has_module_perms(AppConfig.label): if self.request.user.has_module_perms(AppConfig.label):
@ -422,8 +424,9 @@ class ExpedienteMateriaCrud(MasterDetailCrud):
self.initial['data_ordem'] = SessaoPlenaria.objects.get( self.initial['data_ordem'] = SessaoPlenaria.objects.get(
pk=self.kwargs['pk']).data_inicio.strftime('%d/%m/%Y') pk=self.kwargs['pk']).data_inicio.strftime('%d/%m/%Y')
max_numero_ordem = ExpedienteMateria.objects.filter( max_numero_ordem = ExpedienteMateria.objects.filter(
sessao_plenaria=self.kwargs['pk']).aggregate(Max('numero_ordem'))['numero_ordem__max'] sessao_plenaria=self.kwargs['pk']).aggregate(Max('numero_ordem'))['numero_ordem__max']
self.initial['numero_ordem'] = (max_numero_ordem if max_numero_ordem else 0) + 1 self.initial['numero_ordem'] = (
max_numero_ordem if max_numero_ordem else 0) + 1
return self.initial return self.initial
def get_success_url(self): def get_success_url(self):
@ -618,12 +621,12 @@ class PresencaView(FormMixin, PresencaMixin, DetailView):
if form.is_valid(): if form.is_valid():
# Pegar os presentes salvos no banco # Pegar os presentes salvos no banco
presentes_banco = SessaoPlenariaPresenca.objects.filter( presentes_banco = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=self.object.id).values_list( sessao_plenaria_id=self.object.id).values_list(
'parlamentar_id', flat=True).distinct() 'parlamentar_id', flat=True).distinct()
# Id dos parlamentares presentes # Id dos parlamentares presentes
marcados = request.POST.getlist('presenca_ativos') \ marcados = request.POST.getlist('presenca_ativos') \
+ request.POST.getlist('presenca_inativos') + request.POST.getlist('presenca_inativos')
# Deletar os que foram desmarcados # Deletar os que foram desmarcados
deletar = set(presentes_banco) - set(marcados) deletar = set(presentes_banco) - set(marcados)
@ -728,12 +731,12 @@ class PresencaOrdemDiaView(FormMixin, PresencaMixin, DetailView):
if form.is_valid(): if form.is_valid():
# Pegar os presentes salvos no banco # Pegar os presentes salvos no banco
presentes_banco = PresencaOrdemDia.objects.filter( presentes_banco = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.object.id).values_list( sessao_plenaria_id=self.object.id).values_list(
'parlamentar_id', flat=True).distinct() 'parlamentar_id', flat=True).distinct()
# Id dos parlamentares presentes # Id dos parlamentares presentes
marcados = request.POST.getlist('presenca_ativos') \ marcados = request.POST.getlist('presenca_ativos') \
+ request.POST.getlist('presenca_inativos') + request.POST.getlist('presenca_inativos')
# Deletar os que foram desmarcados # Deletar os que foram desmarcados
deletar = set(presentes_banco) - set(marcados) deletar = set(presentes_banco) - set(marcados)
@ -1017,24 +1020,24 @@ def remove_parlamentar_composicao(request):
'%s.delete_%s' % ( '%s.delete_%s' % (
AppConfig.label, IntegranteMesa._meta.model_name)): AppConfig.label, IntegranteMesa._meta.model_name)):
if 'composicao_mesa' in request.POST: if 'composicao_mesa' in request.POST:
try: try:
composicao = IntegranteMesa.objects.get( composicao = IntegranteMesa.objects.get(
id=int(request.POST['composicao_mesa'])) id=int(request.POST['composicao_mesa']))
except ObjectDoesNotExist: except ObjectDoesNotExist:
return JsonResponse(
{'msg': (
'Composição da Mesa não pôde ser removida!', 0)})
composicao.delete()
return JsonResponse(
{'msg': (
'Parlamentar excluido com sucesso!', 1)})
else:
return JsonResponse( return JsonResponse(
{'msg': ( {'msg': (
'Selecione algum parlamentar para ser excluido!', 0)}) 'Composição da Mesa não pôde ser removida!', 0)})
composicao.delete()
return JsonResponse(
{'msg': (
'Parlamentar excluido com sucesso!', 1)})
else:
return JsonResponse(
{'msg': (
'Selecione algum parlamentar para ser excluido!', 0)})
class ResumoOrdenacaoView(PermissionRequiredMixin, FormView): class ResumoOrdenacaoView(PermissionRequiredMixin, FormView):
@ -1255,20 +1258,20 @@ class ResumoView(DetailView):
# Oradores nas Explicações Pessoais # Oradores nas Explicações Pessoais
oradores_explicacoes = [] oradores_explicacoes = []
for orador in Orador.objects.filter(sessao_plenaria_id=self.object.id).order_by('numero_ordem'): for orador in Orador.objects.filter(sessao_plenaria_id=self.object.id).order_by('numero_ordem'):
for parlamentar in Parlamentar.objects.filter( for parlamentar in Parlamentar.objects.filter(
id=orador.parlamentar.id): id=orador.parlamentar.id):
partido_sigla = Filiacao.objects.filter( partido_sigla = Filiacao.objects.filter(
parlamentar=parlamentar).last() parlamentar=parlamentar).last()
if not partido_sigla: if not partido_sigla:
sigla = '' sigla = ''
else: else:
sigla = partido_sigla.partido.sigla sigla = partido_sigla.partido.sigla
oradores = { oradores = {
'numero_ordem': orador.numero_ordem, 'numero_ordem': orador.numero_ordem,
'parlamentar': parlamentar, 'parlamentar': parlamentar,
'sgl_partido': sigla 'sgl_partido': sigla
} }
oradores_explicacoes.append(oradores) oradores_explicacoes.append(oradores)
context.update({'oradores_explicacoes': oradores_explicacoes}) context.update({'oradores_explicacoes': oradores_explicacoes})
# ===================================================================== # =====================================================================

Loading…
Cancel
Save