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

8
comissoes/forms.py

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

4
comissoes/views.py

@ -59,7 +59,7 @@ class ComposicaoView(FormMixin, GenericView):
msg = '' msg = ''
else: else:
composicao_id = 0 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) messages.add_message(request, messages.INFO, msg)
return self.render_to_response({ return self.render_to_response({
@ -114,7 +114,7 @@ class ComissaoParlamentarIncluirView(FormMixin, GenericView):
if cargo.nome == 'Presidente': if cargo.nome == 'Presidente':
for p in Participacao.objects.filter(composicao=composicao): for p in Participacao.objects.filter(composicao=composicao):
if p.cargo.nome == 'Presidente': 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) messages.add_message(request, messages.INFO, msg)
return self.render_to_response( return self.render_to_response(
{'form': form, {'form': form,

8
compilacao/models.py

@ -658,7 +658,7 @@ class Dispositivo(BaseModel, TimestampedMixin):
elif irmaos_mesmo_tipo.count() == 1: elif irmaos_mesmo_tipo.count() == 1:
self.transform_in_next() self.transform_in_next()
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[1].strip(),
prefixo[0], prefixo[0],
self.get_nomenclatura_completa(), self.get_nomenclatura_completa(),
@ -686,7 +686,7 @@ class Dispositivo(BaseModel, TimestampedMixin):
ordem__gt=self.ordem, ordem__gt=self.ordem,
ordem__lt=irmaos_mesmo_tipo[0].ordem).exists(): ordem__lt=irmaos_mesmo_tipo[0].ordem).exists():
self.dispositivo0 = 2 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[1].strip(),
prefixo[0], prefixo[0],
self.get_nomenclatura_completa(), self.get_nomenclatura_completa(),
@ -695,7 +695,7 @@ class Dispositivo(BaseModel, TimestampedMixin):
self.tipo_dispositivo.rotulo_ordinal >= 0 self.tipo_dispositivo.rotulo_ordinal >= 0
else '',) else '',)
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[1].strip(),
prefixo[0], prefixo[0],
self.get_nomenclatura_completa(), self.get_nomenclatura_completa(),
@ -893,7 +893,7 @@ class Dispositivo(BaseModel, TimestampedMixin):
Max('ordem')) Max('ordem'))
if ordem_max['ordem__max'] is None: if ordem_max['ordem__max'] is None:
raise Exception( 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 ordem = ordem_max['ordem__max'] + Dispositivo.INTERVALO_ORDEM
return 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: if dispositivo.ta_publicado is not None:
d = dispositivo.dispositivo_atualizador.dispositivo_pai d = dispositivo.dispositivo_atualizador.dispositivo_pai
if dispositivo.texto == Dispositivo.TEXTO_PADRAO_DISPOSITIVO_REVOGADO: 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]) d, ta_pub_list[dispositivo.ta_publicado_id])
elif not dispositivo.dispositivo_substituido_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]) d, ta_pub_list[dispositivo.ta_publicado_id])
else: else:
return 'Alteração feita pelo %s - %s.' % ( return _('Alteração feita pelo %s - %s.') % (
d, ta_pub_list[dispositivo.ta_publicado_id]) d, ta_pub_list[dispositivo.ta_publicado_id])
return '' return ''

2
compilacao/utils.py

@ -4,7 +4,7 @@ def int_to_roman(int_value):
# if isinstance(int_value, type(1)): # if isinstance(int_value, type(1)):
# raise TypeError("expected integer, got %s" % type(int_value)) # raise TypeError("expected integer, got %s" % type(int_value))
if not 0 < int_value < 4000: 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) ints = (1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1)
nums = ('M', 'CM', 'D', 'CD', 'C', 'XC', nums = ('M', 'CM', 'D', 'CD', 'C', 'XC',
'L', 'XL', 'X', 'IX', 'V', 'IV', 'I') '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: if hasattr(item, 'ementa') and item.ementa:
ta.ementa = item.ementa ta.ementa = item.ementa
else: 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: if hasattr(item, 'observacao') and item.observacao:
ta.observacao = item.observacao ta.observacao = item.observacao
else: 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: if hasattr(item, 'numero') and item.numero:
ta.numero = item.numero ta.numero = item.numero
@ -338,12 +338,12 @@ class TextView(ListView, CompMixin):
if hasattr(item, 'ementa') and item.ementa: if hasattr(item, 'ementa') and item.ementa:
ta.ementa = item.ementa ta.ementa = item.ementa
else: 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: if hasattr(item, 'observacao') and item.observacao:
ta.observacao = item.observacao ta.observacao = item.observacao
else: 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: if hasattr(item, 'numero') and item.numero:
ta.numero = item.numero ta.numero = item.numero
@ -800,15 +800,15 @@ class DispositivoEditView(TextEditView):
else: else:
prox_possivel = None prox_possivel = None
result = [{'tipo_insert': 'Inserir Depois', result = [{'tipo_insert': _('Inserir Depois'),
'icone': '&#8631;&nbsp;', 'icone': '&#8631;&nbsp;',
'action': 'add_next', 'action': 'add_next',
'itens': []}, 'itens': []},
{'tipo_insert': 'Inserir Dentro', {'tipo_insert': _('Inserir Dentro'),
'icone': '&#8690;&nbsp;', 'icone': '&#8690;&nbsp;',
'action': 'add_in', 'action': 'add_in',
'itens': []}, 'itens': []},
{'tipo_insert': 'Inserir Antes', {'tipo_insert': _('Inserir Antes'),
'icone': '&#8630;&nbsp;', 'icone': '&#8630;&nbsp;',
'action': 'add_prior', 'action': 'add_prior',
'itens': []} 'itens': []}

63
materia/forms.py

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

51
materia/views.py

@ -226,8 +226,8 @@ class MateriaAnexadaEditView(FormMixin, GenericView):
if mat_principal.tipo == mat_anexada.tipo: if mat_principal.tipo == mat_anexada.tipo:
msg = 'A matéria a ser anexada não pode ser do mesmo \ msg = _('A matéria a ser anexada não pode ser do mesmo \
tipo da matéria principal.' tipo da matéria principal.')
messages.add_message(request, messages.INFO, msg) messages.add_message(request, messages.INFO, msg)
return self.render_to_response( return self.render_to_response(
{'form': form, {'form': form,
@ -245,8 +245,8 @@ class MateriaAnexadaEditView(FormMixin, GenericView):
return self.form_valid(form) return self.form_valid(form)
except ObjectDoesNotExist: except ObjectDoesNotExist:
msg = 'A matéria a ser anexada não existe no cadastro \ msg = _('A matéria a ser anexada não existe no cadastro \
de matérias legislativas.' de matérias legislativas.')
messages.add_message(request, messages.INFO, msg) messages.add_message(request, messages.INFO, msg)
return self.render_to_response( return self.render_to_response(
{'form': form, {'form': form,
@ -364,7 +364,7 @@ class LegislacaoCitadaView(FormMixin, GenericView):
numero=form.cleaned_data['numero'], numero=form.cleaned_data['numero'],
ano=form.cleaned_data['ano']) ano=form.cleaned_data['ano'])
except ObjectDoesNotExist: except ObjectDoesNotExist:
msg = 'Norma Juridica não existe.' msg = _('Norma Juridica não existe.')
messages.add_message(request, messages.INFO, msg) messages.add_message(request, messages.INFO, msg)
return self.render_to_response({'form': form, return self.render_to_response({'form': form,
'object': materia, 'object': materia,
@ -430,7 +430,7 @@ class LegislacaoCitadaEditView(FormMixin, GenericView):
numero=form.cleaned_data['numero'], numero=form.cleaned_data['numero'],
ano=form.cleaned_data['ano']) ano=form.cleaned_data['ano'])
except ObjectDoesNotExist: except ObjectDoesNotExist:
msg = 'Norma Juridica não existe.' msg = _('Norma Juridica não existe.')
messages.add_message(request, messages.INFO, msg) messages.add_message(request, messages.INFO, msg)
return self.render_to_response( return self.render_to_response(
{'form': form, {'form': form,
@ -735,7 +735,7 @@ class RelatoriaView(FormMixin, GenericView):
materia = MateriaLegislativa.objects.get(id=kwargs['pk']) materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
if not materia.tramitacao_set.all(): 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) messages.add_message(request, messages.INFO, msg)
return self.render_to_response( return self.render_to_response(
{'object': materia, {'object': materia,
@ -762,7 +762,7 @@ class RelatoriaView(FormMixin, GenericView):
try: try:
composicao = Composicao.objects.get(comissao=comissao) composicao = Composicao.objects.get(comissao=comissao)
except ObjectDoesNotExist: 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) messages.add_message(request, messages.INFO, msg)
return self.render_to_response( return self.render_to_response(
{'object': materia, {'object': materia,
@ -790,7 +790,7 @@ class RelatoriaView(FormMixin, GenericView):
materia=materia).last() materia=materia).last()
if not materia.tramitacao_set.all(): 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) messages.add_message(request, messages.INFO, msg)
return self.render_to_response( return self.render_to_response(
{'object': materia, {'object': materia,
@ -805,7 +805,7 @@ class RelatoriaView(FormMixin, GenericView):
composicao = Composicao.objects.filter( composicao = Composicao.objects.filter(
comissao=comissao).last() comissao=comissao).last()
if not composicao: 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) messages.add_message(request, messages.INFO, msg)
return self.render_to_response( return self.render_to_response(
{'object': materia, {'object': materia,
@ -814,7 +814,7 @@ class RelatoriaView(FormMixin, GenericView):
'comissao': comissao}) 'comissao': comissao})
parlamentares = composicao.participacao_set.all() parlamentares = composicao.participacao_set.all()
except ObjectDoesNotExist: 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) messages.add_message(request, messages.INFO, msg)
return self.render_to_response( return self.render_to_response(
{'object': materia, {'object': materia,
@ -853,6 +853,7 @@ def criar_email_confirmacao(request, casa_legislativa, materia, hash_txt=''):
if not materia: if not materia:
raise ValueError("Matéria é obrigatória") raise ValueError("Matéria é obrigatória")
# FIXME i18n
casa_nome = (casa_legislativa.nome + ' de ' + casa_nome = (casa_legislativa.nome + ' de ' +
casa_legislativa.municipio + '-' + casa_legislativa.municipio + '-' +
casa_legislativa.uf) casa_legislativa.uf)
@ -888,6 +889,7 @@ def criar_email_tramitacao(request, casa_legislativa, materia, hash_txt=''):
if not materia: if not materia:
raise ValueError("Matéria é obrigatória") raise ValueError("Matéria é obrigatória")
# FIXME i18n
casa_nome = (casa_legislativa.nome + ' de ' + casa_nome = (casa_legislativa.nome + ' de ' +
casa_legislativa.municipio + '-' + casa_legislativa.municipio + '-' +
casa_legislativa.uf) casa_legislativa.uf)
@ -972,6 +974,7 @@ def do_envia_email_confirmacao(request, materia, email):
casa = CasaLegislativa.objects.first() casa = CasaLegislativa.objects.first()
sender = 'sapl-test@interlegis.leg.br' sender = 'sapl-test@interlegis.leg.br'
# FIXME i18n
subject = "[SAPL] " + str(materia) + " - Ative o Acompanhamento da Materia" subject = "[SAPL] " + str(materia) + " - Ative o Acompanhamento da Materia"
messages = [] messages = []
recipients = [] recipients = []
@ -1001,6 +1004,7 @@ def do_envia_email_tramitacao(request, materia):
casa = CasaLegislativa.objects.first() casa = CasaLegislativa.objects.first()
sender = 'sapl-test@interlegis.leg.br' sender = 'sapl-test@interlegis.leg.br'
# FIXME i18n
subject = "[SAPL] " + str(materia) + \ subject = "[SAPL] " + str(materia) + \
" - Acompanhamento de Materia Legislativa" " - Acompanhamento de Materia Legislativa"
messages = [] messages = []
@ -1053,8 +1057,8 @@ class TramitacaoView(FormMixin, GenericView):
tramitacao.materia = materia tramitacao.materia = materia
tramitacao.save() tramitacao.save()
else: else:
msg = 'A origem da nova tramitação \ msg = _('A origem da nova tramitação \
deve ser igual ao destino da última adicionada!' deve ser igual ao destino da última adicionada!')
messages.add_message(request, messages.INFO, msg) messages.add_message(request, messages.INFO, msg)
return self.render_to_response( return self.render_to_response(
{'form': form, {'form': form,
@ -1102,8 +1106,7 @@ class TramitacaoEditView(FormMixin, GenericView):
tramitacao.delete() tramitacao.delete()
return self.form_valid(form) return self.form_valid(form)
else: else:
msg = 'Somente a útlima tramitação pode ser\ msg = _('Somente a útlima tramitação pode ser deletada!')
deletada!'
messages.add_message(request, messages.INFO, msg) messages.add_message(request, messages.INFO, msg)
return self.render_to_response( return self.render_to_response(
{'object': materia, {'object': materia,
@ -1198,7 +1201,7 @@ class AutoriaView(GenericView):
'autores': Autor.objects.all(), 'autores': Autor.objects.all(),
'tipo_autor_id': int(form.data['tipo_autor'])}) 'tipo_autor_id': int(form.data['tipo_autor'])})
else: else:
msg = 'Essa autoria já foi adicionada!' msg = _('Essa autoria já foi adicionada!')
messages.add_message(request, messages.INFO, msg) messages.add_message(request, messages.INFO, msg)
return self.render_to_response( return self.render_to_response(
{'object': materia, {'object': materia,
@ -1325,7 +1328,7 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView):
try: try:
int(request.POST['numero']) int(request.POST['numero'])
except ValueError: 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) messages.add_message(request, messages.INFO, mensagem)
return self.render_to_response( return self.render_to_response(
{'form': form}) {'form': form})
@ -1336,7 +1339,7 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView):
try: try:
int(request.POST['ano']) int(request.POST['ano'])
except ValueError: 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) messages.add_message(request, messages.INFO, mensagem)
return self.render_to_response( return self.render_to_response(
{'form': form}) {'form': form})
@ -1347,7 +1350,7 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView):
try: try:
int(request.POST['numero_protocolo']) int(request.POST['numero_protocolo'])
except ValueError: 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) messages.add_message(request, messages.INFO, mensagem)
return self.render_to_response( return self.render_to_response(
{'form': form}) {'form': form})
@ -1360,7 +1363,7 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView):
request.POST['data_apresentacao'], request.POST['data_apresentacao'],
'%d/%m/%Y').strftime('%Y-%m-%d') '%d/%m/%Y').strftime('%Y-%m-%d')
except ValueError: 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) messages.add_message(request, messages.INFO, mensagem)
return self.render_to_response( return self.render_to_response(
{'form': form}) {'form': form})
@ -1375,7 +1378,7 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView):
request.POST['data_publicacao'], request.POST['data_publicacao'],
'%d/%m/%Y').strftime('%Y-%m-%d') '%d/%m/%Y').strftime('%Y-%m-%d')
except ValueError: 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) messages.add_message(request, messages.INFO, mensagem)
return self.render_to_response( return self.render_to_response(
{'form': form}) {'form': form})
@ -1512,7 +1515,7 @@ class ProposicaoView(FormMixin, GenericView):
ano=int(form.data['ano_materia']), ano=int(form.data['ano_materia']),
numero=int(form.data['numero_materia'])) numero=int(form.data['numero_materia']))
except ObjectDoesNotExist: except ObjectDoesNotExist:
msg = 'Matéria adicionada não existe!' msg = _('Matéria adicionada não existe!')
messages.add_message(request, messages.INFO, msg) messages.add_message(request, messages.INFO, msg)
return self.render_to_response({'form': form}) return self.render_to_response({'form': form})
else: else:
@ -1585,8 +1588,8 @@ class AcompanhamentoMateriaView(materia_legislativa_crud.CrudDetailView):
return self.render_to_response( return self.render_to_response(
{'form': form, {'form': form,
'materia': materia, 'materia': materia,
'error': 'Essa matéria já está\ 'error': _('Essa matéria já está\
sendo acompanhada por este e-mail.'}) sendo acompanhada por este e-mail.')})
return self.form_valid(form) return self.form_valid(form)
else: else:
return self.render_to_response( 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 import forms
from django.forms import ModelForm from django.forms import ModelForm
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
import crispy_layout_mixin import crispy_layout_mixin
from crispy_layout_mixin import form_actions from crispy_layout_mixin import form_actions
@ -26,7 +27,7 @@ class HorizontalRadioRenderer(forms.RadioSelect.renderer):
class NormaJuridicaForm(ModelForm): class NormaJuridicaForm(ModelForm):
tipo_materia = forms.ModelChoiceField( tipo_materia = forms.ModelChoiceField(
label='Matéria Legislativa', label=_('Matéria Legislativa'),
required=False, required=False,
queryset=TipoMateriaLegislativa.objects.all(), queryset=TipoMateriaLegislativa.objects.all(),
empty_label='Selecione' empty_label='Selecione'
@ -93,8 +94,8 @@ class NormaJuridicaForm(ModelForm):
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
Fieldset('Cadastro de Norma Jurídica', Fieldset(_('Cadastro de Norma Jurídica'),
Fieldset('Identificação Básica', Fieldset(_('Identificação Básica'),
row1, row2, row3, row4, row5, row6, row7, row8), row1, row2, row3, row4, row5, row6, row7, row8),
form_actions() form_actions()
) )

14
norma/models.py

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

2
norma/views.py

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

18
painel/models.py

@ -1,4 +1,5 @@
from django.db import models from django.db import models
from django.utils.translation import ugettext_lazy as _
class Painel(models.Model): class Painel(models.Model):
@ -9,8 +10,8 @@ class Painel(models.Model):
('M', 'Mensagem'), ('M', 'Mensagem'),
) )
aberto = models.BooleanField(verbose_name='Abrir painel', default=False) aberto = models.BooleanField(verbose_name=_('Abrir painel'), default=False)
data_painel = models.DateField(verbose_name='Data painel') data_painel = models.DateField(verbose_name=_('Data painel'))
mostrar = models.CharField(max_length=1, mostrar = models.CharField(max_length=1,
choices=PAINEL_TYPES, default='C') choices=PAINEL_TYPES, default='C')
@ -20,9 +21,9 @@ class Painel(models.Model):
class Cronometro(models.Model): class Cronometro(models.Model):
CRONOMETRO_TYPES = ( CRONOMETRO_TYPES = (
('A', 'Aparte'), ('A', _('Aparte')),
('D', 'Discurso'), ('D', _('Discurso')),
('O', 'Ordem do dia') ('O', _('Ordem do dia'))
) )
CRONOMETRO_STATUS = ( CRONOMETRO_STATUS = (
@ -33,9 +34,10 @@ class Cronometro(models.Model):
status = models.CharField( status = models.CharField(
max_length=1, max_length=1,
verbose_name='Status do cronômetro', verbose_name=_('Status do cronômetro'),
choices=CRONOMETRO_STATUS, choices=CRONOMETRO_STATUS,
default='S') 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( 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): 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) return render(request, 'painel/index.html', context)
@ -113,7 +113,7 @@ def get_presentes(pk, response, materia):
presentes_ordem_dia.append( presentes_ordem_dia.append(
{'id': p.id, {'id': p.id,
'nome': nome_parlamentar, 'nome': nome_parlamentar,
'partido': 'Sem Registro', 'partido': _('Sem Registro'),
}) })
else: else:
presentes_ordem_dia.append( presentes_ordem_dia.append(
@ -136,7 +136,7 @@ def get_presentes(pk, response, materia):
'presentes_sessao_plenaria': presentes_sessao_plenaria, 'presentes_sessao_plenaria': presentes_sessao_plenaria,
'num_presentes_sessao_plenaria': num_presentes_sessao_plen, 'num_presentes_sessao_plenaria': num_presentes_sessao_plen,
'status_painel': 'ABERTO', 'status_painel': 'ABERTO',
'msg_painel': 'Votação aberta!', 'msg_painel': _('Votação aberta!'),
'numero_votos_sim': 0, 'numero_votos_sim': 0,
'numero_votos_nao': 0, 'numero_votos_nao': 0,
'numero_abstencoes': 0, 'numero_abstencoes': 0,
@ -193,7 +193,7 @@ def get_presentes_expediente(pk, response, materia):
presentes_expediente.append( presentes_expediente.append(
{'id': p.id, {'id': p.id,
'nome': nome_parlamentar, 'nome': nome_parlamentar,
'partido': 'Sem Registro', 'partido': _('Sem Registro'),
}) })
else: else:
presentes_expediente.append( presentes_expediente.append(
@ -215,8 +215,8 @@ def get_presentes_expediente(pk, response, materia):
'num_presentes_expediente': num_presentes_expediente, 'num_presentes_expediente': num_presentes_expediente,
'presentes_sessao_plenaria': presentes_sessao_plenaria, 'presentes_sessao_plenaria': presentes_sessao_plenaria,
'num_presentes_sessao_plenaria': num_presentes_sessao_plen, 'num_presentes_sessao_plenaria': num_presentes_sessao_plen,
'status_painel': 'ABERTO', 'status_painel': _('ABERTO'),
'msg_painel': 'Votação aberta!', 'msg_painel': _('Votação aberta!'),
'numero_votos_sim': 0, 'numero_votos_sim': 0,
'numero_votos_nao': 0, 'numero_votos_nao': 0,
'numero_abstencoes': 0, 'numero_abstencoes': 0,
@ -231,7 +231,7 @@ def get_presentes_expediente(pk, response, materia):
def response_null_materia(response): def response_null_materia(response):
response.update({ response.update({
'status_painel': 'FECHADO', 'status_painel': 'FECHADO',
'msg_painel': 'Nenhuma matéria disponivel para votação.' 'msg_painel': _('Nenhuma matéria disponivel para votação.')
}) })
return JsonResponse(response) return JsonResponse(response)
@ -291,7 +291,7 @@ def get_votos_nominal(response, materia):
votos.update({v.parlamentar.id: { votos.update({v.parlamentar.id: {
'parlamentar': v.parlamentar.nome_parlamentar, 'parlamentar': v.parlamentar.nome_parlamentar,
'voto': str(v.voto), 'voto': str(v.voto),
'partido': 'Sem Registro' 'partido': _('Sem Registro')
}}) }})
else: else:
votos.update({v.parlamentar.id: { 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 import forms
from django.forms import ModelForm from django.forms import ModelForm
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
import crispy_layout_mixin import crispy_layout_mixin
from crispy_layout_mixin import form_actions from crispy_layout_mixin import form_actions
@ -39,7 +40,7 @@ class ParlamentaresForm (ModelForm):
widget=forms.TextInput( widget=forms.TextInput(
attrs={'class': 'rg'})) attrs={'class': 'rg'}))
titulo_eleitor = forms.CharField(label='Título de Eleitor', titulo_eleitor = forms.CharField(label=_('Título de Eleitor'),
required=False, required=False,
widget=forms.TextInput( widget=forms.TextInput(
attrs={'class': 'titulo_eleitor'})) attrs={'class': 'titulo_eleitor'}))
@ -156,7 +157,7 @@ class ParlamentaresForm (ModelForm):
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
Fieldset('Cadastro do Parlamentar', Fieldset(_('Cadastro do Parlamentar'),
row1, row2, row3, row4, row5, row1, row2, row3, row4, row5,
row6, row7, row8, row9, row10, row6, row7, row8, row9, row10,
row11, row12, row13, row11, row12, row13,
@ -217,7 +218,7 @@ class MandatoForm(ModelForm):
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
Fieldset('Adicionar Mandato', row1, row2, row3, Fieldset(_('Adicionar Mandato'), row1, row2, row3,
form_actions()) form_actions())
) )
@ -266,7 +267,7 @@ class DependenteForm(ModelForm):
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
Fieldset('Cadastro de Dependentes', Fieldset(_('Cadastro de Dependentes'),
row1, row2, row3, row1, row2, row3,
form_actions()) form_actions())
@ -304,7 +305,7 @@ class FiliacaoForm(ModelForm):
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
Fieldset('Adicionar Filiação', row1, Fieldset(_('Adicionar Filiação'), row1,
form_actions()) form_actions())
) )

4
parlamentares/models.py

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

48
parlamentares/views.py

@ -1,8 +1,11 @@
import os import os
from io import BytesIO
from re import sub from re import sub
from django.contrib import messages from django.contrib import messages
from django.core.exceptions import ValidationError
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.forms.fields import ImageField
from django.utils.html import strip_tags from django.utils.html import strip_tags
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.views.generic.edit import FormMixin from django.views.generic.edit import FormMixin
@ -63,7 +66,7 @@ class ParlamentaresView(GenericView):
if m.parlamentar.filiacao_set.last(): if m.parlamentar.filiacao_set.last():
partido = m.parlamentar.filiacao_set.last().partido.sigla partido = m.parlamentar.filiacao_set.last().partido.sigla
else: else:
partido = 'Sem Registro' partido = _('Sem Registro')
dict_parlamentar = { dict_parlamentar = {
'id': m.parlamentar.id, 'id': m.parlamentar.id,
@ -91,7 +94,7 @@ class ParlamentaresView(GenericView):
if m.parlamentar.filiacao_set.last(): if m.parlamentar.filiacao_set.last():
partido = m.parlamentar.filiacao_set.last().partido.sigla partido = m.parlamentar.filiacao_set.last().partido.sigla
else: else:
partido = 'Sem Registro' partido = _('Sem Registro')
dict_parlamentar = { dict_parlamentar = {
'id': m.parlamentar.id, 'id': m.parlamentar.id,
@ -167,7 +170,6 @@ class ParlamentaresEditarView(FormMixin, GenericView):
parlamentar = form.save(commit=False) parlamentar = form.save(commit=False)
if 'fotografia' in request.FILES: if 'fotografia' in request.FILES:
parlamentar.fotografia = request.FILES['fotografia'] parlamentar.fotografia = request.FILES['fotografia']
parlamentar.biografia = sub('&nbsp;', parlamentar.biografia = sub('&nbsp;',
' ', ' ',
strip_tags(form.data['biografia'])) strip_tags(form.data['biografia']))
@ -280,9 +282,9 @@ class MesaDiretoraView(FormMixin, GenericView):
# Essa função avisa quando se pode compor uma Mesa Legislativa) # Essa função avisa quando se pode compor uma Mesa Legislativa)
def validation(self, request): def validation(self, request):
mensagem = "Não há nenhuma Sessão Legislativa cadastrada.\ mensagem = _("Não há nenhuma Sessão Legislativa cadastrada. \
é possível compor uma Mesa Diretora quando uma Sessão \ é possível compor uma Mesa Diretora quando uma Sessão \
Legislativa cadastrada." Legislativa cadastrada.")
messages.add_message(request, messages.INFO, mensagem) messages.add_message(request, messages.INFO, mensagem)
return self.render_to_response( return self.render_to_response(
@ -447,16 +449,16 @@ class FiliacaoView(FormMixin, GenericView):
else: else:
# Dá erro caso não tenha se desfiliado do anterior # Dá erro caso não tenha se desfiliado do anterior
if candidato_nao_desfiliou: if candidato_nao_desfiliou:
mensagem = "Você não pode se filiar a algum partido\ mensagem = _("Você não pode se filiar a algum partido \
sem antes se desfiliar do partido anterior" sem antes se desfiliar do partido anterior")
return self.error_message( return self.error_message(
parlamentar, form, mensagem, request) parlamentar, form, mensagem, request)
# Dá erro caso a data de desfiliação seja anterior a de # Dá erro caso a data de desfiliação seja anterior a de
# filiação # filiação
if data_desfiliacao and data_desfiliacao < data_filiacao: if data_desfiliacao and data_desfiliacao < data_filiacao:
mensagem = "A data de filiação não pode ser\ mensagem = _("A data de filiação não pode ser \
anterior à data de desfiliação" anterior à data de desfiliação")
return self.error_message( return self.error_message(
parlamentar, form, mensagem, request) parlamentar, form, mensagem, request)
@ -467,9 +469,9 @@ class FiliacaoView(FormMixin, GenericView):
data_init = todas_filiacoes[i].data data_init = todas_filiacoes[i].data
data_fim = todas_filiacoes[i].data_desfiliacao data_fim = todas_filiacoes[i].data_desfiliacao
if data_filiacao >= data_init and data_filiacao < data_fim: if data_filiacao >= data_init and data_filiacao < data_fim:
mensagem = "A data de filiação e\ mensagem = _("A data de filiação e \
desfiliação não podem estar no intervalo \ desfiliação não podem estar no intervalo \
de outro período de filiação" de outro período de filiação")
return self.error_message( return self.error_message(
parlamentar, form, mensagem, request) parlamentar, form, mensagem, request)
@ -477,18 +479,18 @@ class FiliacaoView(FormMixin, GenericView):
data_desfiliacao < data_fim and data_desfiliacao < data_fim and
data_desfiliacao > data_init): data_desfiliacao > data_init):
mensagem = "A data de filiação e\ mensagem = _("A data de filiação e \
desfiliação não podem estar no intervalo \ desfiliação não podem estar no intervalo \
de outro período de filiação" de outro período de filiação")
return self.error_message( return self.error_message(
parlamentar, form, mensagem, request) parlamentar, form, mensagem, request)
if (data_desfiliacao and if (data_desfiliacao and
data_filiacao <= data_init and data_filiacao <= data_init and
data_desfiliacao >= data_fim): data_desfiliacao >= data_fim):
mensagem = "A data de filiação e\ mensagem = _("A data de filiação e \
desfiliação não podem estar no intervalo \ desfiliação não podem estar no intervalo \
de outro período de filiação" de outro período de filiação")
return self.error_message( return self.error_message(
parlamentar, form, mensagem, request) parlamentar, form, mensagem, request)
@ -563,8 +565,8 @@ class FiliacaoEditView(FormMixin, GenericView):
# Dá erro caso a data de desfiliação seja anterior a de # Dá erro caso a data de desfiliação seja anterior a de
# filiação # filiação
if data_desfiliacao and data_desfiliacao < data_filiacao: if data_desfiliacao and data_desfiliacao < data_filiacao:
mensagem = "A data de filiação não pode\ mensagem = _("A data de filiação não pode \
anterior à data de desfiliação" anterior à data de desfiliação")
return self.error_message( return self.error_message(
parlamentar, form, mensagem, request) parlamentar, form, mensagem, request)
@ -579,9 +581,9 @@ class FiliacaoEditView(FormMixin, GenericView):
if (data_filiacao >= data_init and if (data_filiacao >= data_init and
data_filiacao < data_fim): data_filiacao < data_fim):
mensagem = "A data de filiação e\ mensagem = _("A data de filiação e \
desfiliação não podem estar no intervalo \ desfiliação não podem estar no intervalo \
de outro período de filiação" de outro período de filiação")
return self.error_message(parlamentar, return self.error_message(parlamentar,
form, form,
mensagem, mensagem,
@ -591,9 +593,9 @@ class FiliacaoEditView(FormMixin, GenericView):
data_desfiliacao < data_fim and data_desfiliacao < data_fim and
data_desfiliacao > data_init): data_desfiliacao > data_init):
mensagem = "A data de filiação e\ mensagem = _("A data de filiação e \
desfiliação não podem estar no intervalo \ desfiliação não podem estar no intervalo \
de outro período de filiação" de outro período de filiação")
return self.error_message(parlamentar, return self.error_message(parlamentar,
form, form,
mensagem, mensagem,
@ -601,9 +603,9 @@ class FiliacaoEditView(FormMixin, GenericView):
if (data_desfiliacao and if (data_desfiliacao and
data_filiacao <= data_init and data_filiacao <= data_init and
data_desfiliacao >= data_fim): data_desfiliacao >= data_fim):
mensagem = "A data de filiação e\ mensagem = _("A data de filiação e \
desfiliação não podem estar no intervalo \ desfiliação não podem estar no intervalo \
de outro período de filiação" de outro período de filiação")
return self.error_message(parlamentar, return self.error_message(parlamentar,
form, form,
mensagem, 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 import forms
from django.forms import ModelForm from django.forms import ModelForm
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
import crispy_layout_mixin import crispy_layout_mixin
from crispy_layout_mixin import form_actions from crispy_layout_mixin import form_actions
@ -42,30 +43,30 @@ class ProtocoloForm(forms.Form):
YEARS = get_range_anos() YEARS = get_range_anos()
tipo_protocolo = forms.ChoiceField(required=False, tipo_protocolo = forms.ChoiceField(required=False,
label='Tipo de Protocolo', label=_('Tipo de Protocolo'),
choices=TIPOS_PROTOCOLO, choices=TIPOS_PROTOCOLO,
widget=forms.Select( widget=forms.Select(
attrs={'class': 'selector'})) attrs={'class': 'selector'}))
numero_protocolo = forms.CharField( numero_protocolo = forms.CharField(
label='Número de Protocolo', required=False) label=_('Número de Protocolo'), required=False)
ano = forms.ChoiceField(required=False, ano = forms.ChoiceField(required=False,
label='Ano', label='Ano',
choices=YEARS, choices=YEARS,
widget=forms.Select( widget=forms.Select(
attrs={'class': 'selector'})) attrs={'class': 'selector'}))
inicial = forms.DateField(label='Data Inicial', inicial = forms.DateField(label=_('Data Inicial'),
required=False, required=False,
widget=forms.TextInput( widget=forms.TextInput(
attrs={'class': 'dateinput'})) attrs={'class': 'dateinput'}))
final = forms.DateField(label='Data Final', required=False, final = forms.DateField(label=_('Data Final'), required=False,
widget=forms.TextInput( widget=forms.TextInput(
attrs={'class': 'dateinput'})) attrs={'class': 'dateinput'}))
natureza_processo = forms.ChoiceField(required=False, natureza_processo = forms.ChoiceField(required=False,
label='Natureza Processo', label=_('Natureza Processo'),
choices=[ choices=[
('0', 'Administrativo'), ('0', 'Administrativo'),
('1', 'Legislativo'), ('1', 'Legislativo'),
@ -76,7 +77,7 @@ class ProtocoloForm(forms.Form):
) )
tipo_documento = forms.ModelChoiceField( tipo_documento = forms.ModelChoiceField(
label='Tipo de Documento', label=_('Tipo de Documento'),
required=False, required=False,
queryset=TipoDocumentoAdministrativo.objects.all(), queryset=TipoDocumentoAdministrativo.objects.all(),
empty_label='Selecione', empty_label='Selecione',
@ -85,7 +86,7 @@ class ProtocoloForm(forms.Form):
interessado = forms.CharField(label='Interessado', required=False) interessado = forms.CharField(label='Interessado', required=False)
tipo_materia = forms.ModelChoiceField( tipo_materia = forms.ModelChoiceField(
label='Tipo de Matéria', label=_('Tipo de Matéria'),
required=False, required=False,
queryset=TipoMateriaLegislativa.objects.all(), queryset=TipoMateriaLegislativa.objects.all(),
empty_label='Selecione', empty_label='Selecione',
@ -136,7 +137,7 @@ class AnularProcoloAdmForm(forms.Form):
YEARS = get_range_anos() YEARS = get_range_anos()
numero_protocolo = forms.CharField( numero_protocolo = forms.CharField(
label='Número de Protocolo', required=True) label=_('Número de Protocolo'), required=True)
ano_protocolo = forms.ChoiceField(required=False, ano_protocolo = forms.ChoiceField(required=False,
label='Ano', label='Ano',
choices=YEARS, choices=YEARS,
@ -155,7 +156,7 @@ class AnularProcoloAdmForm(forms.Form):
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
Fieldset('Identificação do Protocolo', Fieldset(_('Identificação do Protocolo'),
row1, row1,
row2, row2,
HTML("&nbsp;"), HTML("&nbsp;"),
@ -168,8 +169,8 @@ class AnularProcoloAdmForm(forms.Form):
class ProtocoloDocumentForm(forms.Form): class ProtocoloDocumentForm(forms.Form):
NUMERACAO_CHOICES = [('1', 'Sequencial por Ano'), NUMERACAO_CHOICES = [('1', _('Sequencial por Ano')),
('2', 'Sequencial Único')] ('2', _('Sequencial Único'))]
numeracao = forms.ChoiceField(required=True, numeracao = forms.ChoiceField(required=True,
choices=NUMERACAO_CHOICES, choices=NUMERACAO_CHOICES,
@ -178,19 +179,19 @@ class ProtocoloDocumentForm(forms.Form):
label='') label='')
tipo_protocolo = forms.ChoiceField(required=True, tipo_protocolo = forms.ChoiceField(required=True,
label='Tipo de Protocolo', label=_('Tipo de Protocolo'),
choices=TIPOS_PROTOCOLO[1:], choices=TIPOS_PROTOCOLO[1:],
widget=forms.RadioSelect( widget=forms.RadioSelect(
renderer=HorizontalRadioRenderer)) renderer=HorizontalRadioRenderer))
tipo_documento = forms.ModelChoiceField( tipo_documento = forms.ModelChoiceField(
label='Tipo de Documento', label=_('Tipo de Documento'),
required=False, required=False,
queryset=TipoDocumentoAdministrativo.objects.all(), queryset=TipoDocumentoAdministrativo.objects.all(),
empty_label='Selecione', 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( assunto = forms.CharField(
widget=forms.Textarea, label='Assunto', required=True) widget=forms.Textarea, label='Assunto', required=True)
@ -218,15 +219,15 @@ class ProtocoloDocumentForm(forms.Form):
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
Fieldset('Protocolo - Opção de Numeração', row1), Fieldset(_('Protocolo - Opção de Numeração'), row1),
Fieldset('Identificação de Documento', Fieldset(_('Identificação de Documento'),
row2, row2,
row3, row3,
row4, row4,
row5, row5,
row6, row6,
HTML("&nbsp;"), HTML("&nbsp;"),
form_actions(save_label='Protocolar Documento') form_actions(save_label=_('Protocolar Documento'))
) )
) )
super(ProtocoloDocumentForm, self).__init__( super(ProtocoloDocumentForm, self).__init__(
@ -235,8 +236,8 @@ class ProtocoloDocumentForm(forms.Form):
class ProtocoloMateriaForm(forms.Form): class ProtocoloMateriaForm(forms.Form):
NUMERACAO_CHOICES = [('1', 'Sequencial por Ano'), NUMERACAO_CHOICES = [('1', _('Sequencial por Ano')),
('2', 'Sequencial Único')] ('2', _('Sequencial Único'))]
numeracao = forms.ChoiceField(required=True, numeracao = forms.ChoiceField(required=True,
choices=NUMERACAO_CHOICES, choices=NUMERACAO_CHOICES,
@ -245,19 +246,19 @@ class ProtocoloMateriaForm(forms.Form):
label='') label='')
tipo_protocolo = forms.ChoiceField(required=True, tipo_protocolo = forms.ChoiceField(required=True,
label='Tipo de Protocolo', label=_('Tipo de Protocolo'),
choices=TIPOS_PROTOCOLO[1:], choices=TIPOS_PROTOCOLO[1:],
widget=forms.RadioSelect( widget=forms.RadioSelect(
renderer=HorizontalRadioRenderer)) renderer=HorizontalRadioRenderer))
tipo_materia = forms.ModelChoiceField( tipo_materia = forms.ModelChoiceField(
label='Tipo de Matéria', label=_('Tipo de Matéria'),
required=False, required=False,
queryset=TipoMateriaLegislativa.objects.all(), queryset=TipoMateriaLegislativa.objects.all(),
empty_label='Selecione', 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( ementa = forms.CharField(
widget=forms.Textarea, label='Ementa', required=True) widget=forms.Textarea, label='Ementa', required=True)
@ -288,14 +289,14 @@ class ProtocoloMateriaForm(forms.Form):
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
Fieldset('Protocolo - Opção de Numeração', row1), Fieldset(_('Protocolo - Opção de Numeração'), row1),
Fieldset('Identificação da Matéria', Fieldset(_('Identificação da Matéria'),
row2, row2,
row3, row3,
row4, row4,
row5, row5,
HTML("&nbsp;"), HTML("&nbsp;"),
form_actions(save_label='Protocolar Matéria') form_actions(save_label=_('Protocolar Matéria'))
) )
) )
super(ProtocoloMateriaForm, self).__init__( super(ProtocoloMateriaForm, self).__init__(
@ -310,11 +311,11 @@ class ProposicaoSimpleForm(forms.Form):
materia = forms.CharField(label='Matéria', materia = forms.CharField(label='Matéria',
widget=forms.TextInput( widget=forms.TextInput(
attrs={'readonly': 'readonly'})) attrs={'readonly': 'readonly'}))
data_envio = forms.DateField(label='Data Envio', data_envio = forms.DateField(label=_('Data Envio'),
widget=forms.DateInput( widget=forms.DateInput(
format='%d/%m/%Y', format='%d/%m/%Y',
attrs={'readonly': 'readonly'})) attrs={'readonly': 'readonly'}))
data_recebimento = forms.DateField(label='Data Recebimento', data_recebimento = forms.DateField(label=_('Data Recebimento'),
widget=forms.DateInput( widget=forms.DateInput(
format='%d/%m/%Y', format='%d/%m/%Y',
attrs={'readonly': 'readonly'})) attrs={'readonly': 'readonly'}))
@ -366,7 +367,7 @@ class DocumentoAcessorioAdministrativoForm(ModelForm):
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
Fieldset( Fieldset(
'Incluir Documento Acessório', _('Incluir Documento Acessório'),
row1, row2, row3, row4, row1, row2, row3, row4,
form_actions(more=more) form_actions(more=more)
) )
@ -413,7 +414,7 @@ class TramitacaoAdmForm(ModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
Fieldset('Incluir Tramitação', Fieldset(_('Incluir Tramitação'),
'data_tramitacao', 'data_tramitacao',
'unidade_tramitacao_local', 'unidade_tramitacao_local',
'status', 'status',
@ -471,9 +472,9 @@ class DocumentoAdministrativoForm(ModelForm):
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
Fieldset('Identificação Básica', Fieldset(_('Identificação Básica'),
row1, row2, row3, row4, row5), row1, row2, row3, row4, row5),
Fieldset('Outras Informações', Fieldset(_('Outras Informações'),
row6, row7), row6, row7),
form_actions(more=[Submit('Excluir', 'Excluir')]), form_actions(more=[Submit('Excluir', 'Excluir')]),
) )

12
protocoloadm/views.py

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

80
relatorios/views.py

@ -2,6 +2,7 @@ from datetime import datetime
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from django.http import HttpResponse from django.http import HttpResponse
from django.utils.translation import ugettext_lazy as _
from base.forms import ESTADOS from base.forms import ESTADOS
from base.models import CasaLegislativa from base.models import CasaLegislativa
@ -40,6 +41,7 @@ def get_cabecalho(casa):
cabecalho = {} cabecalho = {}
cabecalho["nom_casa"] = casa.nome cabecalho["nom_casa"] = casa.nome
# FIXME i18n
cabecalho["nom_estado"] = "Estado de " + ESTADOS[casa.uf.upper()] cabecalho["nom_estado"] = "Estado de " + ESTADOS[casa.uf.upper()]
return cabecalho return cabecalho
@ -72,7 +74,7 @@ def get_rodape(casa):
linha1 = linha1 + " - " + casa.municipio + " " + casa.uf linha1 = linha1 + " - " + casa.municipio + " " + casa.uf
if casa.telefone: if casa.telefone:
linha1 = linha1 + " Tel.: " + casa.telefone linha1 = linha1 + _(" Tel.: ") + casa.telefone
if casa.endereco_web: if casa.endereco_web:
linha2 = casa.endereco_web linha2 = casa.endereco_web
@ -82,7 +84,7 @@ def get_rodape(casa):
if casa.email: if casa.email:
if casa.endereco_web: if casa.endereco_web:
linha2 = linha2 + " - " linha2 = linha2 + " - "
linha2 = linha2 + "E-mail: " + casa.email linha2 = linha2 + _("E-mail: ") + casa.email
data_emissao = datetime.today().strftime("%d/%m/%Y") data_emissao = datetime.today().strftime("%d/%m/%Y")
@ -243,9 +245,9 @@ def get_capa_processo(prot):
for materia_num in MateriaLegislativa.objects.filter( for materia_num in MateriaLegislativa.objects.filter(
numero_protocolo=p.numero, ano=p.ano): numero_protocolo=p.numero, ano=p.ano):
for numera in Numeracao.objects.filter(materia=materia_num): for numera in Numeracao.objects.filter(materia=materia_num):
# FIXME i18n
dic['numeracao'] = 'PROCESSO N&#176; ' + \ dic['numeracao'] = 'PROCESSO N&#176; ' + \
str(numera.numero) + '/' + str(numera.ano) str(numera.numero) + '/' + str(numera.ano)
dic['anulado'] = '' dic['anulado'] = ''
if p.anulado == 1: if p.anulado == 1:
dic['anulado'] = 'Nulo' dic['anulado'] = 'Nulo'
@ -475,8 +477,8 @@ def get_espelho(mats):
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\ dic['norma_juridica_vinculada'] = _('Não há nenhuma \
norma jurídica vinculada' norma jurídica vinculada')
# TODO # TODO
# for norma in context.zsql.materia_buscar_norma_juridica_zsql( # for norma in context.zsql.materia_buscar_norma_juridica_zsql(
# cod_materia=materia.cod_materia): # cod_materia=materia.cod_materia):
@ -566,13 +568,13 @@ def get_sessao_plenaria(sessao, casa):
materia=materia).first() materia=materia).first()
if tram is not None: if tram is not None:
if tram.turno != '': if tram.turno != '':
for turno in [("P", "Primeiro"), for turno in [("P", _("Primeiro")),
("S", "Segundo"), ("S", _("Segundo")),
("U", "Único"), ("U", _("Único")),
("L", "Suplementar"), ("L", _("Suplementar")),
("A", "Votação Única em Regime de Urgência"), ("A", _("Votação Única em Regime de Urgência")),
("B", "1ª Votação"), ("B", _("1ª Votação")),
("C", "2ª e 3ª Votações"), ("C", _("2ª e 3ª Votações")),
("F", "Final")]: ("F", "Final")]:
if tram.turno == turno[0]: if tram.turno == turno[0]:
dic_expediente_materia["des_turno"] = turno[1] dic_expediente_materia["des_turno"] = turno[1]
@ -614,8 +616,8 @@ def get_sessao_plenaria(sessao, casa):
dic_expediente_materia["votacao_observacao"] = ( dic_expediente_materia["votacao_observacao"] = (
expediente_materia.observacao) expediente_materia.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")
lst_expediente_materia.append(dic_expediente_materia) lst_expediente_materia.append(dic_expediente_materia)
# Lista dos oradores do Expediente # Lista dos oradores do Expediente
@ -678,14 +680,14 @@ def get_sessao_plenaria(sessao, casa):
materia=materia).first() materia=materia).first()
if tramitacao is not None: if tramitacao is not None:
if not tramitacao.turno: if not tramitacao.turno:
for turno in [("P", "Primeiro"), for turno in [("P", _("Primeiro")),
("S", "Segundo"), ("S", _("Segundo")),
("U", "Único"), ("U", _("Único")),
("L", "Suplementar"), ("L", _("Suplementar")),
("F", "Final"), ("F", _("Final")),
("A", "Votação Única em Regime de Urgência"), ("A", _("Votação Única em Regime de Urgência")),
("B", "1ª Votação"), ("B", _("1ª Votação")),
("C", "2ª e 3ª Votações")]: ("C", _("2ª e 3ª Votações"))]:
if tramitacao.turno == turno[0]: if tramitacao.turno == turno[0]:
dic_votacao["des_turno"] = turno[1] dic_votacao["des_turno"] = turno[1]
@ -723,8 +725,8 @@ def get_sessao_plenaria(sessao, casa):
if votacao.observacao: if votacao.observacao:
dic_votacao["votacao_observacao"] = votacao.observacao dic_votacao["votacao_observacao"] = 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")
lst_votacao.append(dic_votacao) lst_votacao.append(dic_votacao)
# Lista dos oradores nas Explicações Pessoais # Lista dos oradores nas Explicações Pessoais
@ -1060,14 +1062,14 @@ def get_pauta_sessao(sessao, casa):
tramitacao = tramitacao.first() tramitacao = tramitacao.first()
if tramitacao.turno != '': if tramitacao.turno != '':
for turno in [("P", "Primeiro"), for turno in [("P", _("Primeiro")),
("S", "Segundo"), ("S", _("Segundo")),
("U", "Único"), ("U", _("Único")),
("F", "Final"), ("F", _("Final")),
("L", "Suplementar"), ("L", _("Suplementar")),
("A", "Votação Única em Regime de Urgência"), ("A", _("Votação Única em Regime de Urgência")),
("B", "1ª Votação"), ("B", _("1ª Votação")),
("C", "2ª e 3ª Votações")]: ("C", _("2ª e 3ª Votações"))]:
if tramitacao.turno == turno.first(): if tramitacao.turno == turno.first():
dic_expediente_materia["des_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: if tramitacao is not None:
tramitacao = tramitacao.first() tramitacao = tramitacao.first()
if tramitacao.turno != '': if tramitacao.turno != '':
for turno in [("P", "Primeiro"), for turno in [("P", _("Primeiro")),
("S", "Segundo"), ("S", _("Segundo")),
("U", "Único"), ("U", _("Único")),
("L", "Suplementar"), ("L", _("Suplementar")),
("A", "Votação Única em Regime de Urgência"), ("A", _("Votação Única em Regime de Urgência")),
("B", "1ª Votação"), ("B", _("1ª Votação")),
("C", "2ª e 3ª Votações")]: ("C", _("2ª e 3ª Votações"))]:
if tramitacao.turno == turno.first(): if tramitacao.turno == turno.first():
dic_votacao["des_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): def parliament_info(request):
context = { context = {
'state': 'Estado', 'state': _('Estado'),
'state_abbr': 'UF', 'state_abbr': _('UF'),
'city': 'Cidade', 'city': _('Cidade'),
'parliament_type': 'Câmara Municipal', 'parliament_type': _('Câmara Municipal'),
'address': 'Rua Lorem Ipsum de Amet, Casa X', 'address': _('Rua Lorem Ipsum de Amet, Casa X'),
'postal_code': '70000-000', 'postal_code': '70000-000',
'phone_number': '00 0000-0000', 'phone_number': '00 0000-0000',
'url_portal': '#', '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

28
sessao/forms.py

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

86
sessao/views.py

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

Loading…
Cancel
Save