Browse Source

Merge 226-corrigir-i18n-strings

Resolve boa parte da issue #226
pull/237/head
Marcio Mazza 9 years ago
parent
commit
6bef7d8828
  1. 5
      base/forms.py
  2. 8
      comissoes/forms.py
  3. 4
      comissoes/views.py
  4. 8
      compilacao/models.py
  5. 6
      compilacao/templatetags/compilacao_filters.py
  6. 2
      compilacao/utils.py
  7. 14
      compilacao/views.py
  8. 63
      materia/forms.py
  9. 2
      materia/models.py
  10. 51
      materia/views.py
  11. 7
      norma/forms.py
  12. 14
      norma/models.py
  13. 2
      norma/views.py
  14. 18
      painel/models.py
  15. 16
      painel/views.py
  16. 11
      parlamentares/forms.py
  17. 4
      parlamentares/models.py
  18. 62
      parlamentares/views.py
  19. 63
      protocoloadm/forms.py
  20. 12
      protocoloadm/views.py
  21. 80
      relatorios/views.py
  22. 10
      sapl/context_processors.py
  23. 86
      scripts/redbaron.py
  24. 32
      sessao/forms.py
  25. 86
      sessao/views.py

5
base/forms.py

@ -2,6 +2,7 @@ from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Fieldset, Layout
from django import forms
from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _
import crispy_layout_mixin
from crispy_layout_mixin import form_actions
@ -47,7 +48,7 @@ class CasaLegislativaTabelaAuxForm(ModelForm):
attrs={'class': 'selector'}))
informacao_geral = forms.CharField(widget=forms.Textarea,
label='Informação Geral',
label=_('Informação Geral'),
required=False)
telefone = forms.CharField(label='Telefone',
@ -121,7 +122,7 @@ class CasaLegislativaTabelaAuxForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Dados Básicos',
_('Dados Básicos'),
row1,
row2,
row3,

8
comissoes/forms.py

@ -79,14 +79,14 @@ class CadastrarComissaoForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Cadastrar Comissão',
_('Cadastrar Comissão'),
Fieldset(
'Dados Básicos',
_('Dados Básicos'),
row1,
row2
),
Fieldset(
'Dados Complementares',
_('Dados Complementares'),
row3,
row4,
row5,
@ -165,7 +165,7 @@ class ParticipacaoCadastroForm(ModelForm):
self.helper.layout = Layout(
Fieldset(
'Formulário de Cadastro',
_('Formulário de Cadastro'),
row1, row2, row3, row4
),
form_actions()

4
comissoes/views.py

@ -59,7 +59,7 @@ class ComposicaoView(FormMixin, GenericView):
msg = ''
else:
composicao_id = 0
msg = 'Ainda não há uma composição formada!'
msg = _('Ainda não há uma composição formada!')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response({
@ -114,7 +114,7 @@ class ComissaoParlamentarIncluirView(FormMixin, GenericView):
if cargo.nome == 'Presidente':
for p in Participacao.objects.filter(composicao=composicao):
if p.cargo.nome == 'Presidente':
msg = 'Esse cargo já está sendo ocupado!'
msg = _('Esse cargo já está sendo ocupado!')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'form': form,

8
compilacao/models.py

@ -658,7 +658,7 @@ class Dispositivo(BaseModel, TimestampedMixin):
elif irmaos_mesmo_tipo.count() == 1:
self.transform_in_next()
self.transform_in_next()
r += 'Transformar %s em %s%s e criar %s1%s' % (
r += _('Transformar %s em %s%s e criar %s1%s') % (
prefixo[1].strip(),
prefixo[0],
self.get_nomenclatura_completa(),
@ -686,7 +686,7 @@ class Dispositivo(BaseModel, TimestampedMixin):
ordem__gt=self.ordem,
ordem__lt=irmaos_mesmo_tipo[0].ordem).exists():
self.dispositivo0 = 2
r += 'Transformar %s em %s%s e criar %s1%s' % (
r += _('Transformar %s em %s%s e criar %s1%s') % (
prefixo[1].strip(),
prefixo[0],
self.get_nomenclatura_completa(),
@ -695,7 +695,7 @@ class Dispositivo(BaseModel, TimestampedMixin):
self.tipo_dispositivo.rotulo_ordinal >= 0
else '',)
else:
r += 'Transformar %s em %s%s e criar %s 2%s' % (
r += _('Transformar %s em %s%s e criar %s 2%s') % (
prefixo[1].strip(),
prefixo[0],
self.get_nomenclatura_completa(),
@ -893,7 +893,7 @@ class Dispositivo(BaseModel, TimestampedMixin):
Max('ordem'))
if ordem_max['ordem__max'] is None:
raise Exception(
'Não existem registros base neste Texto Articulado')
_('Não existem registros base neste Texto Articulado'))
ordem = ordem_max['ordem__max'] + Dispositivo.INTERVALO_ORDEM
return ordem

6
compilacao/templatetags/compilacao_filters.py

@ -40,13 +40,13 @@ def nota_automatica(dispositivo, ta_pub_list):
if dispositivo.ta_publicado is not None:
d = dispositivo.dispositivo_atualizador.dispositivo_pai
if dispositivo.texto == Dispositivo.TEXTO_PADRAO_DISPOSITIVO_REVOGADO:
return 'Revogado pelo %s - %s.' % (
return _('Revogado pelo %s - %s.') % (
d, ta_pub_list[dispositivo.ta_publicado_id])
elif not dispositivo.dispositivo_substituido_id:
return 'Inclusão feita pelo %s - %s.' % (
return _('Inclusão feita pelo %s - %s.') % (
d, ta_pub_list[dispositivo.ta_publicado_id])
else:
return 'Alteração feita pelo %s - %s.' % (
return _('Alteração feita pelo %s - %s.') % (
d, ta_pub_list[dispositivo.ta_publicado_id])
return ''

2
compilacao/utils.py

@ -4,7 +4,7 @@ def int_to_roman(int_value):
# if isinstance(int_value, type(1)):
# raise TypeError("expected integer, got %s" % type(int_value))
if not 0 < int_value < 4000:
raise ValueError("Argument must be between 1 and 3999")
raise ValueError(_("Argument must be between 1 and 3999"))
ints = (1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1)
nums = ('M', 'CM', 'D', 'CD', 'C', 'XC',
'L', 'XL', 'X', 'IX', 'V', 'IV', 'I')

14
compilacao/views.py

@ -74,12 +74,12 @@ class IntegracaoTaView(TemplateView):
if hasattr(item, 'ementa') and item.ementa:
ta.ementa = item.ementa
else:
ta.ementa = 'Integração com %s sem ementa.' % item
ta.ementa = _('Integração com %s sem ementa.') % item
if hasattr(item, 'observacao') and item.observacao:
ta.observacao = item.observacao
else:
ta.observacao = 'Integração com %s sem observacao.' % item
ta.observacao = _('Integração com %s sem observacao.') % item
if hasattr(item, 'numero') and item.numero:
ta.numero = item.numero
@ -338,12 +338,12 @@ class TextView(ListView, CompMixin):
if hasattr(item, 'ementa') and item.ementa:
ta.ementa = item.ementa
else:
ta.ementa = 'Integração com %s sem ementa.' % item
ta.ementa = _('Integração com %s sem ementa.') % item
if hasattr(item, 'observacao') and item.observacao:
ta.observacao = item.observacao
else:
ta.observacao = 'Integração com %s sem observacao.' % item
ta.observacao = _('Integração com %s sem observacao.') % item
if hasattr(item, 'numero') and item.numero:
ta.numero = item.numero
@ -800,15 +800,15 @@ class DispositivoEditView(TextEditView):
else:
prox_possivel = None
result = [{'tipo_insert': 'Inserir Depois',
result = [{'tipo_insert': _('Inserir Depois'),
'icone': '&#8631;&nbsp;',
'action': 'add_next',
'itens': []},
{'tipo_insert': 'Inserir Dentro',
{'tipo_insert': _('Inserir Dentro'),
'icone': '&#8690;&nbsp;',
'action': 'add_in',
'itens': []},
{'tipo_insert': 'Inserir Antes',
{'tipo_insert': _('Inserir Antes'),
'icone': '&#8630;&nbsp;',
'action': 'add_prior',
'itens': []}

63
materia/forms.py

@ -5,6 +5,7 @@ from crispy_forms.layout import Column, Fieldset, Layout
from django import forms
from django.forms import ModelForm
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
import crispy_layout_mixin
from crispy_layout_mixin import form_actions
@ -26,16 +27,16 @@ def get_range_anos():
def get_regimes_tramitacao():
return [('1', 'Normal'),
('3', 'Urgência'),
('4', 'Urgência Especial')]
('4', _('Urgência Especial'))]
def get_local_origem():
return [('E', 'Poder Executivo'),
('L', 'Poder Legislativo')]
return [('E', _('Poder Executivo')),
('L', _('Poder Legislativo'))]
def em_tramitacao():
return [('', 'Tanto Faz'),
return [('', _('Tanto Faz')),
(True, 'Sim'),
(False, 'Não')]
@ -58,7 +59,7 @@ class ProposicaoForm(ModelForm):
widget=forms.Textarea())
tipo_materia = forms.ModelChoiceField(
label='Matéria Vinculada',
label=_('Matéria Vinculada'),
required=False,
queryset=TipoMateriaLegislativa.objects.all(),
empty_label='Selecione',
@ -103,7 +104,7 @@ class ProposicaoForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset('Incluir Proposição',
Fieldset(_('Incluir Proposição'),
row1, row2, row3, row4)
)
super(ProposicaoForm, self).__init__(
@ -127,7 +128,7 @@ class AcompanhamentoMateriaForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Acompanhamento de Matéria por e-mail', row1
_('Acompanhamento de Matéria por e-mail'), row1
)
)
super(AcompanhamentoMateriaForm, self).__init__(*args, **kwargs)
@ -181,7 +182,7 @@ class DocumentoAcessorioForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Incluir Documento Acessório',
_('Incluir Documento Acessório'),
row1, row2, row3,
form_actions()
)
@ -273,7 +274,7 @@ class TramitacaoForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset('Incluir Tramitação',
Fieldset(_('Incluir Tramitação'),
row1, row2, row3, row4, row5,
),
form_actions()
@ -285,7 +286,7 @@ class TramitacaoForm(ModelForm):
class LegislacaoCitadaForm(ModelForm):
tipo = forms.ModelChoiceField(
label='Tipo Norma',
label=_('Tipo Norma'),
required=True,
queryset=TipoNormaJuridica.objects.all(),
empty_label='Selecione',
@ -366,7 +367,7 @@ class LegislacaoCitadaForm(ModelForm):
self.helper.form_class = 'form-horizontal'
self.helper.layout = Layout(
Fieldset(
'Incluir Legislação Citada',
_('Incluir Legislação Citada'),
row1, row2, row3, row4,
form_actions()
)
@ -377,7 +378,7 @@ class LegislacaoCitadaForm(ModelForm):
class NumeracaoForm(ModelForm):
tipo_materia = forms.ModelChoiceField(
label='Tipo de Matéria',
label=_('Tipo de Matéria'),
required=True,
queryset=TipoMateriaLegislativa.objects.all(),
empty_label='Selecione',
@ -417,7 +418,7 @@ class NumeracaoForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Incluir Numeração',
_('Incluir Numeração'),
row1, row2,
form_actions()
)
@ -435,7 +436,7 @@ class DespachoInicialForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Adicionar Despacho Inicial',
_('Adicionar Despacho Inicial'),
'comissao',
form_actions()
)
@ -456,13 +457,13 @@ class MateriaAnexadaForm(ModelForm):
ano = forms.CharField(label='Ano', required=True)
data_anexacao = forms.DateField(label='Data Anexação',
data_anexacao = forms.DateField(label=_('Data Anexação'),
required=True,
input_formats=['%d/%m/%Y'],
widget=forms.TextInput(
attrs={'class': 'dateinput'}))
data_desanexacao = forms.DateField(label='Data Desanexação',
data_desanexacao = forms.DateField(label=_('Data Desanexação'),
required=False,
input_formats=['%d/%m/%Y'],
widget=forms.TextInput(
@ -485,7 +486,7 @@ class MateriaAnexadaForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Anexar Matéria',
_('Anexar Matéria'),
row1, row2,
form_actions()
)
@ -537,9 +538,9 @@ class FormularioSimplificadoForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Formulário Simplificado',
_('Formulário Simplificado'),
Fieldset(
'Identificação Básica',
_('Identificação Básica'),
row1, row2, row3, row4
),
form_actions()
@ -581,9 +582,9 @@ class FormularioCadastroForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Formulário de Cadastro',
_('Formulário de Cadastro'),
Fieldset(
'Identificação Básica',
_('Identificação Básica'),
'tipo',
'numero',
'ano',
@ -593,7 +594,7 @@ class FormularioCadastroForm(ModelForm):
'texto_original'
),
Fieldset(
'Outras Informações',
_('Outras Informações'),
'apelido',
'dias_prazo',
'polemica',
@ -605,7 +606,7 @@ class FormularioCadastroForm(ModelForm):
'complementar'
),
Fieldset(
'Origem Externa',
_('Origem Externa'),
'tipo_origem_externa',
'numero_origem_externa',
'ano_origem_externa',
@ -613,7 +614,7 @@ class FormularioCadastroForm(ModelForm):
'data_origem_externa'
),
Fieldset(
'Dados Textuais',
_('Dados Textuais'),
'ementa',
'indexacao',
'observacao'
@ -629,7 +630,7 @@ class AutoriaForm(forms.Form):
nome_autor = forms.CharField()
primeiro_autor = forms.CharField()
partido_autor = forms.ModelChoiceField(
label='Partido (Autor)',
label=_('Partido (Autor)'),
required=False,
queryset=Partido.objects.all(),
empty_label='Selecione')
@ -653,7 +654,7 @@ class MateriaLegislativaPesquisaForm(forms.Form):
)
tipo = forms.ModelChoiceField(
label='Tipo de Matéria',
label=_('Tipo de Matéria'),
required=False,
queryset=TipoMateriaLegislativa.objects.all(),
empty_label='Selecione',
@ -685,7 +686,7 @@ class MateriaLegislativaPesquisaForm(forms.Form):
attrs={'class': 'selector'}))
localizacao = forms.ModelChoiceField(
label='Localização Atual',
label=_('Localização Atual'),
required=False,
queryset=UnidadeTramitacao.objects.all(),
empty_label='Selecione',
@ -705,20 +706,20 @@ class MateriaLegislativaPesquisaForm(forms.Form):
attrs={'class': 'selector'}))
tipo_autor = forms.ModelChoiceField(
label='Tipo Autor',
label=_('Tipo Autor'),
required=False,
queryset=TipoAutor.objects.all(),
empty_label='Selecione',
)
partido_autor = forms.ModelChoiceField(
label='Partido (Autor)',
label=_('Partido (Autor)'),
required=False,
queryset=Partido.objects.all(),
empty_label='Selecione')
local_origem_externa = forms.ModelChoiceField(
label='Localização de Origem',
label=_('Localização de Origem'),
required=False,
queryset=Origem.objects.all(),
empty_label='Selecione')
@ -758,7 +759,7 @@ class MateriaLegislativaPesquisaForm(forms.Form):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset('Pesquisa Básica',
Fieldset(_('Pesquisa Básica'),
row1, row2, row3, row4, row5, row6, row7, row8),
form_actions(save_label='Pesquisar')
)

2
materia/models.py

@ -325,7 +325,7 @@ class Orgao(models.Model):
sigla = models.CharField(max_length=10, verbose_name=_('Sigla'))
unidade_deliberativa = models.BooleanField(
choices=YES_NO_CHOICES,
verbose_name=('Unidade Deliberativa'))
verbose_name=(_('Unidade Deliberativa')))
endereco = models.CharField(
max_length=100, blank=True, verbose_name=_('Endereço'))
telefone = models.CharField(

51
materia/views.py

@ -226,8 +226,8 @@ class MateriaAnexadaEditView(FormMixin, GenericView):
if mat_principal.tipo == mat_anexada.tipo:
msg = 'A matéria a ser anexada não pode ser do mesmo \
tipo da matéria principal.'
msg = _('A matéria a ser anexada não pode ser do mesmo \
tipo da matéria principal.')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'form': form,
@ -245,8 +245,8 @@ class MateriaAnexadaEditView(FormMixin, GenericView):
return self.form_valid(form)
except ObjectDoesNotExist:
msg = 'A matéria a ser anexada não existe no cadastro \
de matérias legislativas.'
msg = _('A matéria a ser anexada não existe no cadastro \
de matérias legislativas.')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'form': form,
@ -364,7 +364,7 @@ class LegislacaoCitadaView(FormMixin, GenericView):
numero=form.cleaned_data['numero'],
ano=form.cleaned_data['ano'])
except ObjectDoesNotExist:
msg = 'Norma Juridica não existe.'
msg = _('Norma Juridica não existe.')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response({'form': form,
'object': materia,
@ -430,7 +430,7 @@ class LegislacaoCitadaEditView(FormMixin, GenericView):
numero=form.cleaned_data['numero'],
ano=form.cleaned_data['ano'])
except ObjectDoesNotExist:
msg = 'Norma Juridica não existe.'
msg = _('Norma Juridica não existe.')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'form': form,
@ -735,7 +735,7 @@ class RelatoriaView(FormMixin, GenericView):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
if not materia.tramitacao_set.all():
msg = 'Adicione alguma Tramitação antes de adicionar uma Comissão!'
msg = _('Adicione alguma Tramitação antes de adicionar uma Comissão!')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'object': materia,
@ -762,7 +762,7 @@ class RelatoriaView(FormMixin, GenericView):
try:
composicao = Composicao.objects.get(comissao=comissao)
except ObjectDoesNotExist:
msg = 'Não há composição nesta Comissão!'
msg = _('Não há composição nesta Comissão!')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'object': materia,
@ -790,7 +790,7 @@ class RelatoriaView(FormMixin, GenericView):
materia=materia).last()
if not materia.tramitacao_set.all():
msg = 'Adicione alguma Tramitação antes de adicionar uma Comissão!'
msg = _('Adicione alguma Tramitação antes de adicionar uma Comissão!')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'object': materia,
@ -805,7 +805,7 @@ class RelatoriaView(FormMixin, GenericView):
composicao = Composicao.objects.filter(
comissao=comissao).last()
if not composicao:
msg = 'Não há composição nesta Comissão!'
msg = _('Não há composição nesta Comissão!')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'object': materia,
@ -814,7 +814,7 @@ class RelatoriaView(FormMixin, GenericView):
'comissao': comissao})
parlamentares = composicao.participacao_set.all()
except ObjectDoesNotExist:
msg = 'O local atual deve ser uma Comissão!'
msg = _('O local atual deve ser uma Comissão!')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'object': materia,
@ -853,6 +853,7 @@ def criar_email_confirmacao(request, casa_legislativa, materia, hash_txt=''):
if not materia:
raise ValueError("Matéria é obrigatória")
# FIXME i18n
casa_nome = (casa_legislativa.nome + ' de ' +
casa_legislativa.municipio + '-' +
casa_legislativa.uf)
@ -888,6 +889,7 @@ def criar_email_tramitacao(request, casa_legislativa, materia, hash_txt=''):
if not materia:
raise ValueError("Matéria é obrigatória")
# FIXME i18n
casa_nome = (casa_legislativa.nome + ' de ' +
casa_legislativa.municipio + '-' +
casa_legislativa.uf)
@ -972,6 +974,7 @@ def do_envia_email_confirmacao(request, materia, email):
casa = CasaLegislativa.objects.first()
sender = 'sapl-test@interlegis.leg.br'
# FIXME i18n
subject = "[SAPL] " + str(materia) + " - Ative o Acompanhamento da Materia"
messages = []
recipients = []
@ -1001,6 +1004,7 @@ def do_envia_email_tramitacao(request, materia):
casa = CasaLegislativa.objects.first()
sender = 'sapl-test@interlegis.leg.br'
# FIXME i18n
subject = "[SAPL] " + str(materia) + \
" - Acompanhamento de Materia Legislativa"
messages = []
@ -1053,8 +1057,8 @@ class TramitacaoView(FormMixin, GenericView):
tramitacao.materia = materia
tramitacao.save()
else:
msg = 'A origem da nova tramitação \
deve ser igual ao destino da última adicionada!'
msg = _('A origem da nova tramitação \
deve ser igual ao destino da última adicionada!')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'form': form,
@ -1102,8 +1106,7 @@ class TramitacaoEditView(FormMixin, GenericView):
tramitacao.delete()
return self.form_valid(form)
else:
msg = 'Somente a útlima tramitação pode ser\
deletada!'
msg = _('Somente a útlima tramitação pode ser deletada!')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'object': materia,
@ -1198,7 +1201,7 @@ class AutoriaView(GenericView):
'autores': Autor.objects.all(),
'tipo_autor_id': int(form.data['tipo_autor'])})
else:
msg = 'Essa autoria já foi adicionada!'
msg = _('Essa autoria já foi adicionada!')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'object': materia,
@ -1325,7 +1328,7 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView):
try:
int(request.POST['numero'])
except ValueError:
mensagem = "Insira um número inteiro em matéria!"
mensagem = _("Insira um número inteiro em matéria!")
messages.add_message(request, messages.INFO, mensagem)
return self.render_to_response(
{'form': form})
@ -1336,7 +1339,7 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView):
try:
int(request.POST['ano'])
except ValueError:
mensagem = "Insira uma data válida em Ano da Matéria!"
mensagem = _("Insira uma data válida em Ano da Matéria!")
messages.add_message(request, messages.INFO, mensagem)
return self.render_to_response(
{'form': form})
@ -1347,7 +1350,7 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView):
try:
int(request.POST['numero_protocolo'])
except ValueError:
mensagem = "Insira um Número de Protocolo válido!"
mensagem = _("Insira um Número de Protocolo válido!")
messages.add_message(request, messages.INFO, mensagem)
return self.render_to_response(
{'form': form})
@ -1360,7 +1363,7 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView):
request.POST['data_apresentacao'],
'%d/%m/%Y').strftime('%Y-%m-%d')
except ValueError:
mensagem = "Insira uma Data de Apresentação válida!"
mensagem = _("Insira uma Data de Apresentação válida!")
messages.add_message(request, messages.INFO, mensagem)
return self.render_to_response(
{'form': form})
@ -1375,7 +1378,7 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView):
request.POST['data_publicacao'],
'%d/%m/%Y').strftime('%Y-%m-%d')
except ValueError:
mensagem = "Insira uma Data de Publicação válida!"
mensagem = _("Insira uma Data de Publicação válida!")
messages.add_message(request, messages.INFO, mensagem)
return self.render_to_response(
{'form': form})
@ -1512,7 +1515,7 @@ class ProposicaoView(FormMixin, GenericView):
ano=int(form.data['ano_materia']),
numero=int(form.data['numero_materia']))
except ObjectDoesNotExist:
msg = 'Matéria adicionada não existe!'
msg = _('Matéria adicionada não existe!')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response({'form': form})
else:
@ -1585,8 +1588,8 @@ class AcompanhamentoMateriaView(materia_legislativa_crud.CrudDetailView):
return self.render_to_response(
{'form': form,
'materia': materia,
'error': 'Essa matéria já está\
sendo acompanhada por este e-mail.'})
'error': _('Essa matéria já está\
sendo acompanhada por este e-mail.')})
return self.form_valid(form)
else:
return self.render_to_response(

7
norma/forms.py

@ -3,6 +3,7 @@ from crispy_forms.layout import Fieldset, Layout
from django import forms
from django.forms import ModelForm
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
import crispy_layout_mixin
from crispy_layout_mixin import form_actions
@ -26,7 +27,7 @@ class HorizontalRadioRenderer(forms.RadioSelect.renderer):
class NormaJuridicaForm(ModelForm):
tipo_materia = forms.ModelChoiceField(
label='Matéria Legislativa',
label=_('Matéria Legislativa'),
required=False,
queryset=TipoMateriaLegislativa.objects.all(),
empty_label='Selecione'
@ -93,8 +94,8 @@ class NormaJuridicaForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset('Cadastro de Norma Jurídica',
Fieldset('Identificação Básica',
Fieldset(_('Cadastro de Norma Jurídica'),
Fieldset(_('Identificação Básica'),
row1, row2, row3, row4, row5, row6, row7, row8),
form_actions()
)

14
norma/models.py

@ -164,13 +164,13 @@ class LegislacaoCitada(models.Model):
class VinculoNormaJuridica(models.Model):
TIPO_VINCULO_CHOICES = (
('A', 'Altera a norma'),
('R', 'Revoga a norma'),
('P', 'Revoga parcialmente a norma'),
('T', 'Revoga por consolidação a norma'),
('C', 'Norma correlata'),
('I', 'Suspende a execução da norma'),
('G', 'Regulamenta a norma'),
('A', _('Altera a norma')),
('R', _('Revoga a norma')),
('P', _('Revoga parcialmente a norma')),
('T', _('Revoga por consolidação a norma')),
('C', _('Norma correlata')),
('I', _('Suspende a execução da norma')),
('G', _('Regulamenta a norma')),
)
# TODO M2M ???

2
norma/views.py

@ -48,7 +48,7 @@ class NormaIncluirView(FormMixin, GenericView):
except ObjectDoesNotExist:
return self.render_to_response(
{'form': form,
'error': 'Matéria adicionada não existe!'})
'error': _('Matéria adicionada não existe!')})
else:
norma.materia = materia

18
painel/models.py

@ -1,4 +1,5 @@
from django.db import models
from django.utils.translation import ugettext_lazy as _
class Painel(models.Model):
@ -9,8 +10,8 @@ class Painel(models.Model):
('M', 'Mensagem'),
)
aberto = models.BooleanField(verbose_name='Abrir painel', default=False)
data_painel = models.DateField(verbose_name='Data painel')
aberto = models.BooleanField(verbose_name=_('Abrir painel'), default=False)
data_painel = models.DateField(verbose_name=_('Data painel'))
mostrar = models.CharField(max_length=1,
choices=PAINEL_TYPES, default='C')
@ -20,9 +21,9 @@ class Painel(models.Model):
class Cronometro(models.Model):
CRONOMETRO_TYPES = (
('A', 'Aparte'),
('D', 'Discurso'),
('O', 'Ordem do dia')
('A', _('Aparte')),
('D', _('Discurso')),
('O', _('Ordem do dia'))
)
CRONOMETRO_STATUS = (
@ -33,9 +34,10 @@ class Cronometro(models.Model):
status = models.CharField(
max_length=1,
verbose_name='Status do cronômetro',
verbose_name=_('Status do cronômetro'),
choices=CRONOMETRO_STATUS,
default='S')
data_cronometro = models.DateField(verbose_name='Data do cronômetro')
data_cronometro = models.DateField(verbose_name=_('Data do cronômetro'))
tipo = models.CharField(
max_length=1, choices=CRONOMETRO_TYPES, verbose_name='Tipo Cronômetro')
max_length=1, choices=CRONOMETRO_TYPES,
verbose_name=_('Tipo Cronômetro'))

16
painel/views.py

@ -38,7 +38,7 @@ def controlador_painel(request):
def painel_view(request, pk):
context = {'head_title': 'Painel Plenário', 'sessao_id': pk}
context = {'head_title': _('Painel Plenário'), 'sessao_id': pk}
return render(request, 'painel/index.html', context)
@ -113,7 +113,7 @@ def get_presentes(pk, response, materia):
presentes_ordem_dia.append(
{'id': p.id,
'nome': nome_parlamentar,
'partido': 'Sem Registro',
'partido': _('Sem Registro'),
})
else:
presentes_ordem_dia.append(
@ -136,7 +136,7 @@ def get_presentes(pk, response, materia):
'presentes_sessao_plenaria': presentes_sessao_plenaria,
'num_presentes_sessao_plenaria': num_presentes_sessao_plen,
'status_painel': 'ABERTO',
'msg_painel': 'Votação aberta!',
'msg_painel': _('Votação aberta!'),
'numero_votos_sim': 0,
'numero_votos_nao': 0,
'numero_abstencoes': 0,
@ -193,7 +193,7 @@ def get_presentes_expediente(pk, response, materia):
presentes_expediente.append(
{'id': p.id,
'nome': nome_parlamentar,
'partido': 'Sem Registro',
'partido': _('Sem Registro'),
})
else:
presentes_expediente.append(
@ -215,8 +215,8 @@ def get_presentes_expediente(pk, response, materia):
'num_presentes_expediente': num_presentes_expediente,
'presentes_sessao_plenaria': presentes_sessao_plenaria,
'num_presentes_sessao_plenaria': num_presentes_sessao_plen,
'status_painel': 'ABERTO',
'msg_painel': 'Votação aberta!',
'status_painel': _('ABERTO'),
'msg_painel': _('Votação aberta!'),
'numero_votos_sim': 0,
'numero_votos_nao': 0,
'numero_abstencoes': 0,
@ -231,7 +231,7 @@ def get_presentes_expediente(pk, response, materia):
def response_null_materia(response):
response.update({
'status_painel': 'FECHADO',
'msg_painel': 'Nenhuma matéria disponivel para votação.'
'msg_painel': _('Nenhuma matéria disponivel para votação.')
})
return JsonResponse(response)
@ -291,7 +291,7 @@ def get_votos_nominal(response, materia):
votos.update({v.parlamentar.id: {
'parlamentar': v.parlamentar.nome_parlamentar,
'voto': str(v.voto),
'partido': 'Sem Registro'
'partido': _('Sem Registro')
}})
else:
votos.update({v.parlamentar.id: {

11
parlamentares/forms.py

@ -3,6 +3,7 @@ from crispy_forms.layout import HTML, Fieldset, Layout, Submit
from django import forms
from django.forms import ModelForm
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
import crispy_layout_mixin
from crispy_layout_mixin import form_actions
@ -39,7 +40,7 @@ class ParlamentaresForm (ModelForm):
widget=forms.TextInput(
attrs={'class': 'rg'}))
titulo_eleitor = forms.CharField(label='Título de Eleitor',
titulo_eleitor = forms.CharField(label=_('Título de Eleitor'),
required=False,
widget=forms.TextInput(
attrs={'class': 'titulo_eleitor'}))
@ -156,7 +157,7 @@ class ParlamentaresForm (ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset('Cadastro do Parlamentar',
Fieldset(_('Cadastro do Parlamentar'),
row1, row2, row3, row4, row5,
row6, row7, row8, row9, row10,
row11, row12, row13,
@ -217,7 +218,7 @@ class MandatoForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset('Adicionar Mandato', row1, row2, row3,
Fieldset(_('Adicionar Mandato'), row1, row2, row3,
form_actions())
)
@ -266,7 +267,7 @@ class DependenteForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset('Cadastro de Dependentes',
Fieldset(_('Cadastro de Dependentes'),
row1, row2, row3,
form_actions())
@ -304,7 +305,7 @@ class FiliacaoForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset('Adicionar Filiação', row1,
Fieldset(_('Adicionar Filiação'), row1,
form_actions())
)

4
parlamentares/models.py

@ -98,8 +98,8 @@ class ComposicaoColigacao(models.Model):
coligacao = models.ForeignKey(Coligacao)
class Meta:
verbose_name = ('Composição Coligação')
verbose_name_plural = ('Composição Coligações')
verbose_name = (_('Composição Coligação'))
verbose_name_plural = (_('Composição Coligações'))
def __str__(self):
return _('%(partido)s - %(coligacao)s') % {

62
parlamentares/views.py

@ -1,8 +1,11 @@
import os
from io import BytesIO
from re import sub
from django.contrib import messages
from django.core.exceptions import ValidationError
from django.core.urlresolvers import reverse
from django.forms.fields import ImageField
from django.utils.html import strip_tags
from django.utils.translation import ugettext_lazy as _
from django.views.generic.edit import FormMixin
@ -63,7 +66,7 @@ class ParlamentaresView(GenericView):
if m.parlamentar.filiacao_set.last():
partido = m.parlamentar.filiacao_set.last().partido.sigla
else:
partido = 'Sem Registro'
partido = _('Sem Registro')
dict_parlamentar = {
'id': m.parlamentar.id,
@ -91,7 +94,7 @@ class ParlamentaresView(GenericView):
if m.parlamentar.filiacao_set.last():
partido = m.parlamentar.filiacao_set.last().partido.sigla
else:
partido = 'Sem Registro'
partido = _('Sem Registro')
dict_parlamentar = {
'id': m.parlamentar.id,
@ -167,7 +170,6 @@ class ParlamentaresEditarView(FormMixin, GenericView):
parlamentar = form.save(commit=False)
if 'fotografia' in request.FILES:
parlamentar.fotografia = request.FILES['fotografia']
parlamentar.biografia = sub('&nbsp;',
' ',
strip_tags(form.data['biografia']))
@ -280,9 +282,9 @@ class MesaDiretoraView(FormMixin, GenericView):
# Essa função avisa quando se pode compor uma Mesa Legislativa)
def validation(self, request):
mensagem = "Não há nenhuma Sessão Legislativa cadastrada.\
é possível compor uma Mesa Diretora quando uma Sessão\
Legislativa cadastrada."
mensagem = _("Não há nenhuma Sessão Legislativa cadastrada. \
é possível compor uma Mesa Diretora quando uma Sessão \
Legislativa cadastrada.")
messages.add_message(request, messages.INFO, mensagem)
return self.render_to_response(
@ -447,16 +449,16 @@ class FiliacaoView(FormMixin, GenericView):
else:
# Dá erro caso não tenha se desfiliado do anterior
if candidato_nao_desfiliou:
mensagem = "Você não pode se filiar a algum partido\
sem antes se desfiliar do partido anterior"
mensagem = _("Você não pode se filiar a algum partido \
sem antes se desfiliar do partido anterior")
return self.error_message(
parlamentar, form, mensagem, request)
# Dá erro caso a data de desfiliação seja anterior a de
# filiação
if data_desfiliacao and data_desfiliacao < data_filiacao:
mensagem = "A data de filiação não pode ser\
anterior à data de desfiliação"
mensagem = _("A data de filiação não pode ser \
anterior à data de desfiliação")
return self.error_message(
parlamentar, form, mensagem, request)
@ -467,9 +469,9 @@ class FiliacaoView(FormMixin, GenericView):
data_init = todas_filiacoes[i].data
data_fim = todas_filiacoes[i].data_desfiliacao
if data_filiacao >= data_init and data_filiacao < data_fim:
mensagem = "A data de filiação e\
desfiliação não podem estar no intervalo\
de outro período de filiação"
mensagem = _("A data de filiação e \
desfiliação não podem estar no intervalo \
de outro período de filiação")
return self.error_message(
parlamentar, form, mensagem, request)
@ -477,18 +479,18 @@ class FiliacaoView(FormMixin, GenericView):
data_desfiliacao < data_fim and
data_desfiliacao > data_init):
mensagem = "A data de filiação e\
desfiliação não podem estar no intervalo\
de outro período de filiação"
mensagem = _("A data de filiação e \
desfiliação não podem estar no intervalo \
de outro período de filiação")
return self.error_message(
parlamentar, form, mensagem, request)
if (data_desfiliacao and
data_filiacao <= data_init and
data_desfiliacao >= data_fim):
mensagem = "A data de filiação e\
desfiliação não podem estar no intervalo\
de outro período de filiação"
mensagem = _("A data de filiação e \
desfiliação não podem estar no intervalo \
de outro período de filiação")
return self.error_message(
parlamentar, form, mensagem, request)
@ -563,8 +565,8 @@ class FiliacaoEditView(FormMixin, GenericView):
# Dá erro caso a data de desfiliação seja anterior a de
# filiação
if data_desfiliacao and data_desfiliacao < data_filiacao:
mensagem = "A data de filiação não pode\
anterior à data de desfiliação"
mensagem = _("A data de filiação não pode \
anterior à data de desfiliação")
return self.error_message(
parlamentar, form, mensagem, request)
@ -579,9 +581,9 @@ class FiliacaoEditView(FormMixin, GenericView):
if (data_filiacao >= data_init and
data_filiacao < data_fim):
mensagem = "A data de filiação e\
desfiliação não podem estar no intervalo\
de outro período de filiação"
mensagem = _("A data de filiação e \
desfiliação não podem estar no intervalo \
de outro período de filiação")
return self.error_message(parlamentar,
form,
mensagem,
@ -591,9 +593,9 @@ class FiliacaoEditView(FormMixin, GenericView):
data_desfiliacao < data_fim and
data_desfiliacao > data_init):
mensagem = "A data de filiação e\
desfiliação não podem estar no intervalo\
de outro período de filiação"
mensagem = _("A data de filiação e \
desfiliação não podem estar no intervalo \
de outro período de filiação")
return self.error_message(parlamentar,
form,
mensagem,
@ -601,9 +603,9 @@ class FiliacaoEditView(FormMixin, GenericView):
if (data_desfiliacao and
data_filiacao <= data_init and
data_desfiliacao >= data_fim):
mensagem = "A data de filiação e\
desfiliação não podem estar no intervalo\
de outro período de filiação"
mensagem = _("A data de filiação e \
desfiliação não podem estar no intervalo \
de outro período de filiação")
return self.error_message(parlamentar,
form,
mensagem,

63
protocoloadm/forms.py

@ -5,6 +5,7 @@ from crispy_forms.layout import HTML, Field, Fieldset, Layout, Submit
from django import forms
from django.forms import ModelForm
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
import crispy_layout_mixin
from crispy_layout_mixin import form_actions
@ -42,30 +43,30 @@ class ProtocoloForm(forms.Form):
YEARS = get_range_anos()
tipo_protocolo = forms.ChoiceField(required=False,
label='Tipo de Protocolo',
label=_('Tipo de Protocolo'),
choices=TIPOS_PROTOCOLO,
widget=forms.Select(
attrs={'class': 'selector'}))
numero_protocolo = forms.CharField(
label='Número de Protocolo', required=False)
label=_('Número de Protocolo'), required=False)
ano = forms.ChoiceField(required=False,
label='Ano',
choices=YEARS,
widget=forms.Select(
attrs={'class': 'selector'}))
inicial = forms.DateField(label='Data Inicial',
inicial = forms.DateField(label=_('Data Inicial'),
required=False,
widget=forms.TextInput(
attrs={'class': 'dateinput'}))
final = forms.DateField(label='Data Final', required=False,
final = forms.DateField(label=_('Data Final'), required=False,
widget=forms.TextInput(
attrs={'class': 'dateinput'}))
natureza_processo = forms.ChoiceField(required=False,
label='Natureza Processo',
label=_('Natureza Processo'),
choices=[
('0', 'Administrativo'),
('1', 'Legislativo'),
@ -76,7 +77,7 @@ class ProtocoloForm(forms.Form):
)
tipo_documento = forms.ModelChoiceField(
label='Tipo de Documento',
label=_('Tipo de Documento'),
required=False,
queryset=TipoDocumentoAdministrativo.objects.all(),
empty_label='Selecione',
@ -85,7 +86,7 @@ class ProtocoloForm(forms.Form):
interessado = forms.CharField(label='Interessado', required=False)
tipo_materia = forms.ModelChoiceField(
label='Tipo de Matéria',
label=_('Tipo de Matéria'),
required=False,
queryset=TipoMateriaLegislativa.objects.all(),
empty_label='Selecione',
@ -136,7 +137,7 @@ class AnularProcoloAdmForm(forms.Form):
YEARS = get_range_anos()
numero_protocolo = forms.CharField(
label='Número de Protocolo', required=True)
label=_('Número de Protocolo'), required=True)
ano_protocolo = forms.ChoiceField(required=False,
label='Ano',
choices=YEARS,
@ -155,7 +156,7 @@ class AnularProcoloAdmForm(forms.Form):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset('Identificação do Protocolo',
Fieldset(_('Identificação do Protocolo'),
row1,
row2,
HTML("&nbsp;"),
@ -168,8 +169,8 @@ class AnularProcoloAdmForm(forms.Form):
class ProtocoloDocumentForm(forms.Form):
NUMERACAO_CHOICES = [('1', 'Sequencial por Ano'),
('2', 'Sequencial Único')]
NUMERACAO_CHOICES = [('1', _('Sequencial por Ano')),
('2', _('Sequencial Único'))]
numeracao = forms.ChoiceField(required=True,
choices=NUMERACAO_CHOICES,
@ -178,19 +179,19 @@ class ProtocoloDocumentForm(forms.Form):
label='')
tipo_protocolo = forms.ChoiceField(required=True,
label='Tipo de Protocolo',
label=_('Tipo de Protocolo'),
choices=TIPOS_PROTOCOLO[1:],
widget=forms.RadioSelect(
renderer=HorizontalRadioRenderer))
tipo_documento = forms.ModelChoiceField(
label='Tipo de Documento',
label=_('Tipo de Documento'),
required=False,
queryset=TipoDocumentoAdministrativo.objects.all(),
empty_label='Selecione',
)
num_paginas = forms.CharField(label='Núm. Páginas', required=True)
num_paginas = forms.CharField(label=_('Núm. Páginas'), required=True)
assunto = forms.CharField(
widget=forms.Textarea, label='Assunto', required=True)
@ -218,15 +219,15 @@ class ProtocoloDocumentForm(forms.Form):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset('Protocolo - Opção de Numeração', row1),
Fieldset('Identificação de Documento',
Fieldset(_('Protocolo - Opção de Numeração'), row1),
Fieldset(_('Identificação de Documento'),
row2,
row3,
row4,
row5,
row6,
HTML("&nbsp;"),
form_actions(save_label='Protocolar Documento')
form_actions(save_label=_('Protocolar Documento'))
)
)
super(ProtocoloDocumentForm, self).__init__(
@ -235,8 +236,8 @@ class ProtocoloDocumentForm(forms.Form):
class ProtocoloMateriaForm(forms.Form):
NUMERACAO_CHOICES = [('1', 'Sequencial por Ano'),
('2', 'Sequencial Único')]
NUMERACAO_CHOICES = [('1', _('Sequencial por Ano')),
('2', _('Sequencial Único'))]
numeracao = forms.ChoiceField(required=True,
choices=NUMERACAO_CHOICES,
@ -245,19 +246,19 @@ class ProtocoloMateriaForm(forms.Form):
label='')
tipo_protocolo = forms.ChoiceField(required=True,
label='Tipo de Protocolo',
label=_('Tipo de Protocolo'),
choices=TIPOS_PROTOCOLO[1:],
widget=forms.RadioSelect(
renderer=HorizontalRadioRenderer))
tipo_materia = forms.ModelChoiceField(
label='Tipo de Matéria',
label=_('Tipo de Matéria'),
required=False,
queryset=TipoMateriaLegislativa.objects.all(),
empty_label='Selecione',
)
num_paginas = forms.CharField(label='Núm. Páginas', required=True)
num_paginas = forms.CharField(label=_('Núm. Páginas'), required=True)
ementa = forms.CharField(
widget=forms.Textarea, label='Ementa', required=True)
@ -288,14 +289,14 @@ class ProtocoloMateriaForm(forms.Form):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset('Protocolo - Opção de Numeração', row1),
Fieldset('Identificação da Matéria',
Fieldset(_('Protocolo - Opção de Numeração'), row1),
Fieldset(_('Identificação da Matéria'),
row2,
row3,
row4,
row5,
HTML("&nbsp;"),
form_actions(save_label='Protocolar Matéria')
form_actions(save_label=_('Protocolar Matéria'))
)
)
super(ProtocoloMateriaForm, self).__init__(
@ -310,11 +311,11 @@ class ProposicaoSimpleForm(forms.Form):
materia = forms.CharField(label='Matéria',
widget=forms.TextInput(
attrs={'readonly': 'readonly'}))
data_envio = forms.DateField(label='Data Envio',
data_envio = forms.DateField(label=_('Data Envio'),
widget=forms.DateInput(
format='%d/%m/%Y',
attrs={'readonly': 'readonly'}))
data_recebimento = forms.DateField(label='Data Recebimento',
data_recebimento = forms.DateField(label=_('Data Recebimento'),
widget=forms.DateInput(
format='%d/%m/%Y',
attrs={'readonly': 'readonly'}))
@ -366,7 +367,7 @@ class DocumentoAcessorioAdministrativoForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Incluir Documento Acessório',
_('Incluir Documento Acessório'),
row1, row2, row3, row4,
form_actions(more=more)
)
@ -413,7 +414,7 @@ class TramitacaoAdmForm(ModelForm):
def __init__(self, *args, **kwargs):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset('Incluir Tramitação',
Fieldset(_('Incluir Tramitação'),
'data_tramitacao',
'unidade_tramitacao_local',
'status',
@ -471,9 +472,9 @@ class DocumentoAdministrativoForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset('Identificação Básica',
Fieldset(_('Identificação Básica'),
row1, row2, row3, row4, row5),
Fieldset('Outras Informações',
Fieldset(_('Outras Informações'),
row6, row7),
form_actions(more=[Submit('Excluir', 'Excluir')]),
)

12
protocoloadm/views.py

@ -175,7 +175,7 @@ class AnularProtocoloAdmView(FormMixin, GenericView):
errors = form._errors.setdefault(
forms.forms.NON_FIELD_ERRORS,
forms.util.ErrorList())
errors.append("Procolo %s/%s já encontra-se anulado"
errors.append(_("Procolo %s/%s já está anulado")
% (numero, ano))
return self.form_invalid(form)
@ -189,7 +189,7 @@ class AnularProtocoloAdmView(FormMixin, GenericView):
except ObjectDoesNotExist:
errors = form._errors.setdefault(
forms.forms.NON_FIELD_ERRORS, forms.util.ErrorList())
errors.append("Procolo %s/%s não existe" % (numero, ano))
errors.append(_("Procolo %s/%s não existe") % (numero, ano))
return self.form_invalid(form)
else:
return self.form_invalid(form)
@ -301,7 +301,7 @@ class ComprovanteProtocoloView(TemplateView):
base64_data = create_barcode(numero.zfill(6))
barcode = 'data:image/png;base64,{0}'.format(base64_data)
autenticacao = "** NULO **"
autenticacao = _("** NULO **")
if not protocolo.anulado:
autenticacao = str(protocolo.tipo_processo) + \
@ -480,7 +480,7 @@ class PesquisarDocumentoAdministrativo(TemplateView):
if len(doc) == 0:
return self.render_to_response(
{'error': 'Nenhum resultado encontrado!',
{'error': _('Nenhum resultado encontrado!'),
"tipos_doc": TipoDocumentoAdministrativo.objects.all()}
)
else:
@ -587,8 +587,8 @@ class DocumentoAcessorioAdministrativoView(FormMixin, GenericView):
doc_acessorio = DocumentoAcessorioAdministrativo.objects.filter(
documento_id=kwargs['pk'])
if not doc_acessorio:
doc_ace_null = 'Nenhum documento acessório \
cadastrado para este processo.'
doc_ace_null = _('Nenhum documento acessório \
cadastrado para este processo.')
return self.render_to_response({'pk': kwargs['pk'],
'doc': doc,

80
relatorios/views.py

@ -2,6 +2,7 @@ from datetime import datetime
from bs4 import BeautifulSoup
from django.http import HttpResponse
from django.utils.translation import ugettext_lazy as _
from base.forms import ESTADOS
from base.models import CasaLegislativa
@ -40,6 +41,7 @@ def get_cabecalho(casa):
cabecalho = {}
cabecalho["nom_casa"] = casa.nome
# FIXME i18n
cabecalho["nom_estado"] = "Estado de " + ESTADOS[casa.uf.upper()]
return cabecalho
@ -72,7 +74,7 @@ def get_rodape(casa):
linha1 = linha1 + " - " + casa.municipio + " " + casa.uf
if casa.telefone:
linha1 = linha1 + " Tel.: " + casa.telefone
linha1 = linha1 + _(" Tel.: ") + casa.telefone
if casa.endereco_web:
linha2 = casa.endereco_web
@ -82,7 +84,7 @@ def get_rodape(casa):
if casa.email:
if casa.endereco_web:
linha2 = linha2 + " - "
linha2 = linha2 + "E-mail: " + casa.email
linha2 = linha2 + _("E-mail: ") + casa.email
data_emissao = datetime.today().strftime("%d/%m/%Y")
@ -243,9 +245,9 @@ def get_capa_processo(prot):
for materia_num in MateriaLegislativa.objects.filter(
numero_protocolo=p.numero, ano=p.ano):
for numera in Numeracao.objects.filter(materia=materia_num):
# FIXME i18n
dic['numeracao'] = 'PROCESSO N&#176; ' + \
str(numera.numero) + '/' + str(numera.ano)
dic['anulado'] = ''
if p.anulado == 1:
dic['anulado'] = 'Nulo'
@ -475,8 +477,8 @@ def get_espelho(mats):
dic['ultima_acao'] = txt_tramitacao
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')
# TODO
# for norma in context.zsql.materia_buscar_norma_juridica_zsql(
# cod_materia=materia.cod_materia):
@ -566,13 +568,13 @@ def get_sessao_plenaria(sessao, casa):
materia=materia).first()
if tram is not None:
if tram.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")),
("F", "Final")]:
if tram.turno == turno[0]:
dic_expediente_materia["des_turno"] = turno[1]
@ -614,8 +616,8 @@ def get_sessao_plenaria(sessao, casa):
dic_expediente_materia["votacao_observacao"] = (
expediente_materia.observacao)
else:
dic_expediente_materia["nom_resultado"] = "Matéria não votada"
dic_expediente_materia["votacao_observacao"] = "Vazio"
dic_expediente_materia["nom_resultado"] = _("Matéria não votada")
dic_expediente_materia["votacao_observacao"] = _("Vazio")
lst_expediente_materia.append(dic_expediente_materia)
# Lista dos oradores do Expediente
@ -678,14 +680,14 @@ def get_sessao_plenaria(sessao, casa):
materia=materia).first()
if tramitacao is not None:
if not tramitacao.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 tramitacao.turno == turno[0]:
dic_votacao["des_turno"] = turno[1]
@ -723,8 +725,8 @@ def get_sessao_plenaria(sessao, casa):
if votacao.observacao:
dic_votacao["votacao_observacao"] = votacao.observacao
else:
dic_votacao["nom_resultado"] = "Matéria não votada"
dic_votacao["votacao_observacao"] = "Vazio"
dic_votacao["nom_resultado"] = _("Matéria não votada")
dic_votacao["votacao_observacao"] = _("Vazio")
lst_votacao.append(dic_votacao)
# Lista dos oradores nas Explicações Pessoais
@ -1060,14 +1062,14 @@ def get_pauta_sessao(sessao, casa):
tramitacao = tramitacao.first()
if tramitacao.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.turno == turno.first():
dic_expediente_materia["des_turno"] = turno.first()
@ -1123,13 +1125,13 @@ def get_pauta_sessao(sessao, casa):
if tramitacao is not None:
tramitacao = tramitacao.first()
if tramitacao.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.turno == turno.first():
dic_votacao["des_turno"] = turno.first()

10
sapl/context_processors.py

@ -5,11 +5,11 @@ from base.views import get_casalegislativa
def parliament_info(request):
context = {
'state': 'Estado',
'state_abbr': 'UF',
'city': 'Cidade',
'parliament_type': 'Câmara Municipal',
'address': 'Rua Lorem Ipsum de Amet, Casa X',
'state': _('Estado'),
'state_abbr': _('UF'),
'city': _('Cidade'),
'parliament_type': _('Câmara Municipal'),
'address': _('Rua Lorem Ipsum de Amet, Casa X'),
'postal_code': '70000-000',
'phone_number': '00 0000-0000',
'url_portal': '#',

86
scripts/redbaron.py

@ -0,0 +1,86 @@
import os
import re
from redbaron import RedBaron
root = '/home/mazza/work/sapl'
def ignorado(path, name):
for pattern in [
'legacy.*',
'relatorios/templates.*',
'.*/migrations',
]:
if re.match(os.path.join(root, pattern), path):
return True
return name.startswith('ipython_log.py') or name == 'manage.py'
filenames = [os.path.join(path, name)
for path, subdirs, files in os.walk(root)
for name in files
if name.endswith('.py') and not ignorado(path, name)]
def build_reds():
for filename in filenames:
with open(filename, "r") as source_code:
red = RedBaron(source_code.read())
if red.data:
red.__filename__ = filename
yield red
reds = list(build_reds())
reds_without_tests = [r for r in reds
if not re.match('.*/test_.*\.py', r.__filename__)]
def write(node):
red = node.root
with open(red.__filename__, "w") as source_code:
source_code.write(red.dumps())
##############################################################################
# verificacoes ad-hoc
def flat(ll):
return [i for l in ll for i in l]
def inter(n):
'Se a string n está dentro de uma chamada de tradução'
try:
assert not n.next or n.next.type == 'string'
assert n.parent_find('call').parent.value[0].value == '_'
return True
except:
return False
def frase(n):
return ' ' in n.value
def get(r):
return [s for s in r('string')
if not inter(s)
# and frase(s)
and not s.value in ok]
def mark(n):
ok |= {n.value}
def fix(n):
n.value = '_(%s)' % n.value
write(n)
def local(node):
res = '%s:%s' % (node.root.__filename__,
node.absolute_bounding_box.top_left.line)
os.system("echo '%s' | xclip -selection c" % res)
return res

32
sessao/forms.py

@ -2,6 +2,7 @@ from crispy_forms.helper import FormHelper
from crispy_forms.layout import Fieldset, Layout
from django import forms
from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _
import crispy_layout_mixin
from crispy_layout_mixin import form_actions
@ -23,21 +24,22 @@ class ListMateriaForm(forms.Form):
class MateriaOrdemDiaForm(forms.Form):
data_sessao = forms.CharField(required=True, label='Data da Sessão')
numero_ordem = forms.IntegerField(required=True, label='Número Ordem')
tipo_votacao = forms.IntegerField(required=True, label='Tipo Votação')
tipo_sessao = forms.IntegerField(required=True, label='Tipo da Sessão')
ano_materia = forms.IntegerField(required=True, label='Ano Matéria')
numero_materia = forms.IntegerField(required=True, label='Número Matéria')
tipo_materia = forms.IntegerField(required=True, label='Tipo Matéria')
observacao = forms.CharField(required=False, label='Ementa')
error_message = forms.CharField(required=False, label='Matéria')
data_sessao = forms.CharField(required=True, label=_('Data da Sessão'))
numero_ordem = forms.IntegerField(required=True, label=_('Número Ordem'))
tipo_votacao = forms.IntegerField(required=True, label=_('Tipo Votação'))
tipo_sessao = forms.IntegerField(required=True, label=_('Tipo da Sessão'))
ano_materia = forms.IntegerField(required=True, label=_('Ano Matéria'))
numero_materia = forms.IntegerField(required=True,
label=_('Número Matéria'))
tipo_materia = forms.IntegerField(required=True, label=_('Tipo Matéria'))
observacao = forms.CharField(required=False, label=_('Ementa'))
error_message = forms.CharField(required=False, label=_('Matéria'))
class OradorForm(forms.Form):
numero_ordem = forms.IntegerField(
required=True,
label='Ordem de pronunciamento')
label=_('Ordem de pronunciamento'))
parlamentar = forms.CharField(required=False, max_length=20)
url_discurso = forms.CharField(required=False, max_length=100)
@ -68,15 +70,15 @@ class VotacaoEditForm(forms.Form):
class SessaoForm(ModelForm):
hora_inicio = forms.CharField(label='Horário Inicio',
hora_inicio = forms.CharField(label=_('Horário Inicio'),
required=True,
widget=forms.TextInput(
attrs={'class': 'hora'}))
attrs={'class': 'hora'}))
hora_fim = forms.CharField(label='Horário Fim',
hora_fim = forms.CharField(label=_('Horário Fim'),
required=True,
widget=forms.TextInput(
attrs={'class': 'hora'}))
attrs={'class': 'hora'}))
class Meta:
model = SessaoPlenaria
@ -124,7 +126,7 @@ class SessaoForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Dados Básicos',
_('Dados Básicos'),
row1,
row2,
row3,

86
sessao/views.py

@ -470,7 +470,7 @@ class EditMateriaOrdemDiaView(sessao_crud.CrudDetailView):
ano=request.POST['ano_materia'])
except ObjectDoesNotExist:
context.update(
{'error_message': "Matéria inexistente!"})
{'error_message': _("Matéria inexistente!")})
return self.form_invalid(form)
ordemdia.materia_id = materia.id
@ -649,7 +649,7 @@ class EditExpedienteOrdemDiaView(sessao_crud.CrudDetailView):
ano=request.POST['ano_materia'])
except ObjectDoesNotExist:
context.update(
{'error_message': "Matéria inexistente!"})
{'error_message': _("Matéria inexistente!")})
return self.form_invalid(form)
ordemdia.materia_id = materia.id
@ -661,7 +661,7 @@ class EditExpedienteOrdemDiaView(sessao_crud.CrudDetailView):
return self.form_valid(form)
else:
context.update(
{'error_message': "Não foi possível salvar formulário!"})
{'error_message': _("Não foi possível salvar formulário!")})
return self.form_invalid(form)
elif 'delete-ordemdia' in request.POST:
ordemdia.delete()
@ -934,23 +934,23 @@ class ResumoView(sessao_crud.CrudDetailView):
abertura = self.object.data_inicio.strftime('%d/%m/%Y')
encerramento = self.object.data_fim.strftime('%d/%m/%Y')
context.update({'basica': ['Tipo de Sessão: ' + str(self.object.tipo),
'Abertura: ' + abertura,
'Encerramento: ' + encerramento,
context.update({'basica': [_('Tipo de Sessão: ') + str(self.object.tipo),
_('Abertura: ') + abertura,
_('Encerramento: ') + encerramento,
]})
# =====================================================================
# Conteúdo Multimídia
if self.object.url_audio:
context.update({'multimidia_audio':
'Audio: ' + str(self.object.url_audio)})
_('Audio: ') + str(self.object.url_audio)})
else:
context.update({'multimidia_audio': 'Audio: Indisponivel'})
context.update({'multimidia_audio': _('Audio: Indisponivel')})
if self.object.url_video:
context.update({'multimidia_video':
'Video: ' + str(self.object.url_video)})
_('Video: ') + str(self.object.url_video)})
else:
context.update({'multimidia_video': 'Video: Indisponivel'})
context.update({'multimidia_video': _('Video: Indisponivel')})
# =====================================================================
# Mesa Diretora
@ -1013,7 +1013,7 @@ class ResumoView(sessao_crud.CrudDetailView):
if m.resultado:
resultado = m.resultado
else:
resultado = 'Matéria não votada'
resultado = _('Matéria não votada')
autoria = Autoria.objects.filter(materia_id=m.materia_id)
autor = [str(x.autor) for x in autoria]
@ -1074,7 +1074,7 @@ class ResumoView(sessao_crud.CrudDetailView):
if o.resultado:
resultado = o.resultado
else:
resultado = 'Matéria não votada'
resultado = _('Matéria não votada')
autoria = Autoria.objects.filter(
materia_id=o.materia_id)
@ -1347,11 +1347,11 @@ class VotacaoEditView(sessao_crud.CrudDetailView):
url = request.get_full_path()
if "votsimb" in url:
titulo = "Votação Simbólica"
titulo = _("Votação Simbólica")
elif "votsec" in url:
titulo = "Votação Secreta"
titulo = _("Votação Secreta")
else:
titulo = "Não definida"
titulo = _("Não definida")
materia_id = kwargs['oid']
ordem_id = kwargs['mid']
@ -1398,11 +1398,11 @@ class VotacaoView(sessao_crud.CrudDetailView):
# TODO: HACK, VERIFICAR MELHOR FORMA DE FAZER ISSO
if "votsimb" in url:
titulo = "Votação Simbólica"
titulo = _("Votação Simbólica")
elif "votsec" in url:
titulo = "Votação Secreta"
titulo = _("Votação Secreta")
else:
titulo = "Não definida"
titulo = _("Não definida")
ordem_id = kwargs['mid']
ordem = OrdemDia.objects.get(id=ordem_id)
@ -1424,11 +1424,11 @@ class VotacaoView(sessao_crud.CrudDetailView):
# ====================================================
if "votsimb" in url:
titulo = "Votação Simbólica"
titulo = _("Votação Simbólica")
elif "votsec" in url:
titulo = "Votação Secreta"
titulo = _("Votação Secreta")
else:
titulo = "Não definida"
titulo = _("Não definida")
ordem_id = kwargs['mid']
ordem = OrdemDia.objects.get(id=ordem_id)
@ -1582,13 +1582,13 @@ class VotacaoNominalView(sessao_crud.CrudDetailView):
voto_parlamentar = VotoParlamentar()
if voto == 'sim':
voto_parlamentar.voto = 'Sim'
voto_parlamentar.voto = _('Sim')
elif voto == 'nao':
voto_parlamentar.voto = 'Não'
voto_parlamentar.voto = _('Não')
elif voto == 'abstencao':
voto_parlamentar.voto = 'Abstenção'
voto_parlamentar.voto = _('Abstenção')
elif voto == 'nao_votou':
voto_parlamentar.voto = 'Não Votou'
voto_parlamentar.voto = _('Não Votou')
voto_parlamentar.parlamentar_id = parlamentar_id
voto_parlamentar.votacao_id = votacao.id
voto_parlamentar.save()
@ -1784,13 +1784,13 @@ class VotacaoNominalExpedienteView(sessao_crud.CrudDetailView):
voto_parlamentar = VotoParlamentar()
if(voto == 'sim'):
voto_parlamentar.voto = 'Sim'
voto_parlamentar.voto = _('Sim')
elif(voto == 'nao'):
voto_parlamentar.voto = 'Não'
voto_parlamentar.voto = _('Não')
elif(voto == 'abstencao'):
voto_parlamentar.voto = 'Abstenção'
voto_parlamentar.voto = _('Abstenção')
elif(voto == 'nao_votou'):
voto_parlamentar.voto = 'Não Votou'
voto_parlamentar.voto = _('Não Votou')
voto_parlamentar.parlamentar_id = parlamentar_id
voto_parlamentar.votacao_id = votacao.id
voto_parlamentar.save()
@ -1922,11 +1922,11 @@ class VotacaoExpedienteView(sessao_crud.CrudDetailView):
# TODO: HACK, VERIFICAR MELHOR FORMA DE FAZER ISSO
if "votsimb" in url:
titulo = "Votação Simbólica"
titulo = _("Votação Simbólica")
elif "votsec" in url:
titulo = "Votação Secreta"
titulo = _("Votação Secreta")
else:
titulo = "Não definida"
titulo = _("Não definida")
expediente_id = kwargs['mid']
expediente = ExpedienteMateria.objects.get(id=expediente_id)
@ -1949,11 +1949,11 @@ class VotacaoExpedienteView(sessao_crud.CrudDetailView):
# ====================================================
if "votsimb" in url:
titulo = "Votação Simbólica"
titulo = _("Votação Simbólica")
elif "votsec" in url:
titulo = "Votação Secreta"
titulo = _("Votação Secreta")
else:
titulo = "Não definida"
titulo = _("Não definida")
expediente_id = kwargs['mid']
expediente = ExpedienteMateria.objects.get(id=expediente_id)
@ -2054,11 +2054,11 @@ class VotacaoExpedienteEditView(sessao_crud.CrudDetailView):
url = request.get_full_path()
if "votsimb" in url:
titulo = "Votação Simbólica"
titulo = _("Votação Simbólica")
elif "votsec" in url:
titulo = "Votação Secreta"
titulo = _("Votação Secreta")
else:
titulo = "Não definida"
titulo = _("Não definida")
materia_id = kwargs['oid']
expediente_id = kwargs['mid']
@ -2142,9 +2142,9 @@ class PautaSessaoDetailView(sessao_crud.CrudDetailView):
else:
encerramento = ""
context.update({'basica': ['Tipo de Sessão: ' + str(self.object.tipo),
'Abertura: ' + abertura,
'Encerramento: ' + encerramento,
context.update({'basica': [_('Tipo de Sessão: ') + str(self.object.tipo),
_('Abertura: ') + abertura,
_('Encerramento: ') + encerramento,
]})
# =====================================================================
# Matérias Expediente
@ -2160,7 +2160,7 @@ class PautaSessaoDetailView(sessao_crud.CrudDetailView):
if m.resultado:
resultado = m.resultado
else:
resultado = 'Matéria não votada'
resultado = _('Matéria não votada')
autoria = Autoria.objects.filter(materia_id=m.materia_id)
autor = [str(x.autor) for x in autoria]
@ -2206,7 +2206,7 @@ class PautaSessaoDetailView(sessao_crud.CrudDetailView):
if o.resultado:
resultado = o.resultado
else:
resultado = 'Matéria não votada'
resultado = _('Matéria não votada')
autoria = Autoria.objects.filter(
materia_id=o.materia_id)

Loading…
Cancel
Save