diff --git a/sigi/apps/casas/admin.py b/sigi/apps/casas/admin.py index 2487381..ad3cb5d 100644 --- a/sigi/apps/casas/admin.py +++ b/sigi/apps/casas/admin.py @@ -2,6 +2,7 @@ from django.contrib import admin from django.contrib.contenttypes import generic from django.http import HttpResponseRedirect +from django.utils.translation import ugettext as _ from image_cropping import ImageCroppingMixin from sigi.apps.casas.forms import CasaLegislativaForm @@ -46,7 +47,7 @@ class FuncionariosInline(admin.StackedInline): inlines = (TelefonesInline,) def get_queryset(self, request): - return self.model.objects.exclude(cargo="Presidente") + return self.model.objects.exclude(cargo=_("Presidente")) class ConveniosInline(admin.StackedInline): @@ -64,17 +65,17 @@ class ConveniosInline(admin.StackedInline): def get_tramitacoes(self, obj): return '
'.join([t.__unicode__() for t in obj.tramitacao_set.all()]) - get_tramitacoes.short_description = 'Tramitações' + get_tramitacoes.short_description = _('Tramitações') get_tramitacoes.allow_tags = True def get_anexos(self, obj): return '
'.join(['%s' % (a.arquivo.url, a.__unicode__()) for a in obj.anexo_set.all()]) - get_anexos.short_description = 'Anexos' + get_anexos.short_description = _('Anexos') get_anexos.allow_tags = True def get_equipamentos(self, obj): return '
'.join([e.__unicode__() for e in obj.equipamentoprevisto_set.all()]) - get_equipamentos.short_description = 'Equipamentos previstos' + get_equipamentos.short_description = _('Equipamentos previstos') get_equipamentos.allow_tags = True def link_convenio(self, obj): @@ -88,7 +89,7 @@ class ConveniosInline(admin.StackedInline): Editar """ % (obj.pk, obj.pk, url) - link_convenio.short_description = 'Editar convenio' + link_convenio.short_description = _('Editar convenio') link_convenio.allow_tags = True @@ -108,7 +109,7 @@ class LegislaturaInline(admin.TabularInline): Editar """ % (obj.pk, obj.pk, url) - link_parlamentares.short_description = 'Parlamentares' + link_parlamentares.short_description = _('Parlamentares') link_parlamentares.allow_tags = True @@ -130,7 +131,7 @@ class DiagnosticoInline(admin.TabularInline): Abrir PDF """ % (obj.pk, obj.pk, url) - link_diagnostico.short_description = 'Ver PDF' + link_diagnostico.short_description = _('Ver PDF') link_diagnostico.allow_tags = True @@ -174,11 +175,11 @@ class CasaLegislativaAdmin(ImageCroppingMixin, BaseModelAdmin): (None, { 'fields': ('tipo', 'nome', 'cnpj', 'num_parlamentares', 'gerente_contas') }), - ('Endereço', { + (_(u'Endereço'), { 'fields': ('data_instalacao', 'logradouro', 'bairro', 'municipio', 'cep', 'pagina_web', 'email', 'ult_alt_endereco'), }), - ('Outras informações', { + (_(u'Outras informações'), { 'fields': ('observacoes', 'foto', 'recorte'), }), ) @@ -190,7 +191,7 @@ class CasaLegislativaAdmin(ImageCroppingMixin, BaseModelAdmin): def get_convenios(self, obj): return '' - get_convenios.short_description = u'Convênios' + get_convenios.short_description = _(u'Convênios') get_convenios.allow_tags = True def changelist_view(self, request, extra_context=None): @@ -205,23 +206,23 @@ class CasaLegislativaAdmin(ImageCroppingMixin, BaseModelAdmin): def etiqueta(self, request, queryset): return labels_report(request, queryset=queryset) - etiqueta.short_description = "Gerar etiqueta(s) da(s) casa(s) selecionada(s)" + etiqueta.short_description = _("Gerar etiqueta(s) da(s) casa(s) selecionada(s)") def etiqueta_sem_presidente(self, request, queryset): return labels_report_sem_presidente(request, queryset=queryset) - etiqueta_sem_presidente.short_description = "Gerar etiqueta(s) sem presidente da(s) casa(s) selecionada(s)" + etiqueta_sem_presidente.short_description = _("Gerar etiqueta(s) sem presidente da(s) casa(s) selecionada(s)") def relatorio(self, request, queryset): return report(request, queryset=queryset) - relatorio.short_description = u"Exportar a(s) casa(s) selecionada(s) para PDF" + relatorio.short_description = _(u"Exportar a(s) casa(s) selecionada(s) para PDF") def relatorio_completo(self, request, queryset): return report_complete(request, queryset=queryset) - relatorio_completo.short_description = u"Gerar relatório completo da(s) casa(s) selecionada(s)" + relatorio_completo.short_description = _(u"Gerar relatório completo da(s) casa(s) selecionada(s)") def relatorio_csv(self, request, queryset): return export_csv(request) - relatorio_csv.short_description = u"Exportar casa(s) selecionada(s) para CSV" + relatorio_csv.short_description = _(u"Exportar casa(s) selecionada(s) para CSV") def adicionar_casas(self, request, queryset): if 'carrinho_casas' in request.session: @@ -233,12 +234,12 @@ class CasaLegislativaAdmin(ImageCroppingMixin, BaseModelAdmin): q2 = len(request.session['carrinho_casas']) quant = q2 - q1 if quant: - self.message_user(request, str(q2 - q1) + " Casas Legislativas adicionadas no carrinho") + self.message_user(request, str(q2 - q1) + " " + _("Casas Legislativas adicionadas no carrinho")) else: - self.message_user(request, "As Casas Legislativas selecionadas já foram adicionadas anteriormente") + self.message_user(request, _("As Casas Legislativas selecionadas já foram adicionadas anteriormente")) return HttpResponseRedirect('.') - adicionar_casas.short_description = u"Armazenar casas no carrinho para exportar" + adicionar_casas.short_description = _(u"Armazenar casas no carrinho para exportar") def get_actions(self, request): actions = super(CasaLegislativaAdmin, self).get_actions(request) diff --git a/sigi/apps/casas/forms.py b/sigi/apps/casas/forms.py index 1d48fcc..b66c680 100644 --- a/sigi/apps/casas/forms.py +++ b/sigi/apps/casas/forms.py @@ -1,17 +1,18 @@ # -*- coding: utf-8 -*- from django import forms +from django.utils.translation import ugettext as _ from localflavor.br.forms import BRZipCodeField + from sigi.apps.casas.models import CasaLegislativa class CasaLegislativaForm(forms.ModelForm): # cnpj = BRCNPJField( - # label='CNPJ', + # label=_('CNPJ'), # required=False, - # help_text='Utilize o formato XX.XXX.XXX/XXXX-XX ou ' - # 'insira apenas os dígitos.' + # help_text=_('Utilize o formato XX.XXX.XXX/XXXX-XX ou insira apenas os dígitos.') #) - cep = BRZipCodeField(label='CEP', help_text='Formato: XXXXX-XXX.') + cep = BRZipCodeField(label=_('CEP'), help_text=_('Formato: XXXXX-XXX.')) class Meta: model = CasaLegislativa diff --git a/sigi/apps/casas/reports.py b/sigi/apps/casas/reports.py index 8c8b561..87ce190 100644 --- a/sigi/apps/casas/reports.py +++ b/sigi/apps/casas/reports.py @@ -1,17 +1,15 @@ # -*- coding: utf-8 -*- +from django.utils.translation import ugettext as _ +from geraldo import Report, DetailBand, Label, ObjectValue, ReportGroup, ReportBand, landscape, SubReport, BAND_WIDTH, SystemField +from geraldo.graphics import Image +from reportlab.lib.enums import TA_CENTER from reportlab.lib.pagesizes import A4 from reportlab.lib.units import cm -from reportlab.lib.enums import TA_CENTER, TA_RIGHT -from geraldo import Report, DetailBand, Label, ObjectValue, ManyElements, \ - ReportGroup, ReportBand, landscape, SubReport, BAND_WIDTH, SystemField from sigi.apps.relatorios.reports import ReportDefault from sigi.settings import STATICFILES_DIRS -from geraldo.graphics import Image - - def string_to_cm(texto): tamanho = 0 minEspeciais = { @@ -97,7 +95,7 @@ class CasasLegislativasLabels(Report): my_elements = [ Label( - text='A Sua Excelência o(a) Senhor(a):', + text=_('A Sua Excelência o(a) Senhor(a):'), top=calc_top(0), left=calc_left, width=calc_width, ), ObjectValue( @@ -110,7 +108,7 @@ class CasasLegislativasLabels(Report): attribute_name='nome', top=calc_top(2), left=calc_left, width=calc_width, height=calc_height(2), get_value=lambda instance: - ("Presidente da %s" % instance.nome) + (_("Presidente da %s") % instance.nome) ), ObjectValue( attribute_name='logradouro', @@ -123,7 +121,7 @@ class CasasLegislativasLabels(Report): attribute_name='cep', top=calc_top(8), left=calc_left, width=calc_width, get_value=lambda instance: - "CEP: %s" % instance.cep + _("CEP: %s") % instance.cep ), ] self.band_detail = DetailBand( @@ -146,14 +144,14 @@ class CasasLegislativasLabelsSemPresidente(CasasLegislativasLabels): my_elements = [ Label( - text='A Sua Excelência o(a) Senhor(a):', + text=_('A Sua Excelência o(a) Senhor(a):'), top=calc_top(0), left=calc_left, width=calc_width, ), ObjectValue( attribute_name='nome', top=calc_top(1), left=calc_left, width=calc_width, height=calc_height(2), get_value=lambda instance: - ("Presidente da %s" % instance.nome) + (_("Presidente da %s") % instance.nome) ), ObjectValue( attribute_name='logradouro', @@ -166,7 +164,7 @@ class CasasLegislativasLabelsSemPresidente(CasasLegislativasLabels): attribute_name='cep', top=calc_top(8), left=calc_left, width=calc_width, get_value=lambda instance: - "CEP: %s" % instance.cep + _("CEP: %s") % instance.cep ), ] self.band_detail = DetailBand( @@ -178,7 +176,7 @@ class CasasLegislativasLabelsSemPresidente(CasasLegislativasLabels): class CasasLegislativasReport(ReportDefault): - title = u'Relatório de Casas Legislativas' + title = _(u'Relatório de Casas Legislativas') height = 80 * cm page_size = landscape(A4) @@ -197,10 +195,10 @@ class CasasLegislativasReport(ReportDefault): left=1 * cm, right=1 * cm, top=0.1 * cm, bottom=1 * cm, width=3 * cm, height=3 * cm, ), - Label(text="SENADO FEDERAL", top=1 * cm, left=0, width=BAND_WIDTH, + Label(text=_("SENADO FEDERAL"), top=1 * cm, left=0, width=BAND_WIDTH, style={'fontName': 'Helvetica-Bold', 'fontSize': 14, 'alignment': TA_CENTER} ), - Label(text="SINTER - Secretaria Especial do Interlegis", top=1.5 * cm, left=0, width=BAND_WIDTH, + Label(text=_("SINTER - Secretaria Especial do Interlegis"), top=1.5 * cm, left=0, width=BAND_WIDTH, style={'fontName': 'Helvetica-Bold', 'fontSize': 13, 'alignment': TA_CENTER} ), SystemField( @@ -208,32 +206,32 @@ class CasasLegislativasReport(ReportDefault): style={'fontName': 'Helvetica-Bold', 'fontSize': 14, 'alignment': TA_CENTER} ), Label( - text="UF", + text=_("UF"), left=label_left[0] * cm, top=label_top, ), Label( - text="Municipio", + text=_("Municipio"), left=label_left[1] * cm, top=label_top, ), Label( - text="Presidente", + text=_("Presidente"), left=label_left[2] * cm, top=label_top, ), Label( - text="Endereço", + text=_("Endereço"), left=label_left[3] * cm, top=label_top, ), Label( - text="Endereço na Internet", + text=_("Endereço na Internet"), left=label_left[4] * cm, top=label_top, ), Label( - text="Email", + text=_("Email"), left=label_left[5] * cm, top=label_top, ), @@ -292,11 +290,11 @@ class CasasLegislativasReport(ReportDefault): class CasasSemConvenioReport(CasasLegislativasReport): - title = u'Relatório de Casas Legislativas sem Convênio' + title = _(u'Relatório de Casas Legislativas sem Convênio') class InfoCasaLegislativa(ReportDefault): - title = u'Casa Legislativa' + title = _(u'Casa Legislativa') class band_summary(ReportBand): pass @@ -305,7 +303,7 @@ class InfoCasaLegislativa(ReportDefault): height = 1 * cm elements = [ - SystemField(expression=u'%(now:%d/%m/%Y)s às %(now:%H:%M)s', top=0.3 * cm), + SystemField(expression=_(u'%(now:%d/%m/%Y)s às %(now:%H:%M)s'), top=0.3 * cm), ] class band_detail(ReportDefault.band_detail): @@ -343,7 +341,7 @@ class InfoCasaLegislativa(ReportDefault): elements = [ Label( - text="Tipo: ", + text=_("Tipo: "), left=posicao_left[0] * cm, top=posicao_top[0] * cm, ), @@ -354,7 +352,7 @@ class InfoCasaLegislativa(ReportDefault): width=6 * cm, ), Label( - text="Região: ", + text=_("Região: "), left=posicao_left[2] * cm, top=posicao_top[1] * cm, ), @@ -363,11 +361,11 @@ class InfoCasaLegislativa(ReportDefault): left=posicao_left[3] * cm, top=posicao_top[1] * cm, get_value=lambda instance: - {'SL': 'Sul', 'SD': 'Sudeste', 'CO': 'Centro-Oeste', 'NE': 'Nordeste', 'NO': 'Norte', } + {'SL': _('Sul'), 'SD': _('Sudeste'), 'CO': _('Centro-Oeste'), 'NE': _('Nordeste'), 'NO': _('Norte'), } [instance.municipio.uf.regiao] ), Label( - text="U.F.: ", + text=_("U.F.: "), left=posicao_left[4] * cm, top=posicao_top[2] * cm, ), @@ -377,7 +375,7 @@ class InfoCasaLegislativa(ReportDefault): top=posicao_top[2] * cm, ), Label( - text="Município: ", + text=_("Município: "), left=posicao_left[6] * cm, top=posicao_top[3] * cm, ), @@ -389,7 +387,7 @@ class InfoCasaLegislativa(ReportDefault): ), # Linha 3 Label( - text="Endereço: ", + text=_("Endereço: "), left=posicao_left[8] * cm, top=posicao_top[4] * cm, ), @@ -400,7 +398,7 @@ class InfoCasaLegislativa(ReportDefault): width=20 * cm, ), Label( - text="Bairro: ", + text=_("Bairro: "), left=posicao_left[10] * cm, top=posicao_top[5] * cm, ), @@ -410,7 +408,7 @@ class InfoCasaLegislativa(ReportDefault): top=posicao_top[5] * cm, ), Label( - text="CEP: ", + text=_("CEP: "), left=posicao_left[12] * cm, top=posicao_top[6] * cm, ), @@ -420,7 +418,7 @@ class InfoCasaLegislativa(ReportDefault): top=posicao_top[6] * cm, ), Label( - text="CNPJ: ", + text=_("CNPJ: "), left=posicao_left[14] * cm, top=posicao_top[7] * cm, ), @@ -430,7 +428,7 @@ class InfoCasaLegislativa(ReportDefault): top=posicao_top[7] * cm, ), Label( - text="Telefone: ", + text=_("Telefone: "), left=posicao_left[16] * cm, top=posicao_top[8] * cm, ), @@ -440,7 +438,7 @@ class InfoCasaLegislativa(ReportDefault): top=posicao_top[8] * cm, ), Label( - text="Presidente: ", + text=_("Presidente: "), left=posicao_left[18] * cm, top=posicao_top[9] * cm, ), @@ -469,14 +467,14 @@ class InfoCasaLegislativa(ReportDefault): height=2.5 * cm, elements=[ Label( - text="Telefone(s)", + text=_("Telefone(s)"), style={'fontSize': 14, 'alignment': TA_CENTER}, width=BAND_WIDTH, top=1 * cm, ), - Label(text="Número", left=tel_left[0] * cm, top=tel_top), - Label(text="Tipo", left=tel_left[1] * cm, top=tel_top), - Label(text="Nota", left=tel_left[2] * cm, top=tel_top), + Label(text=_("Número"), left=tel_left[0] * cm, top=tel_top), + Label(text=_("Tipo"), left=tel_left[1] * cm, top=tel_top), + Label(text=_("Nota"), left=tel_left[2] * cm, top=tel_top), ], borders={'bottom': True}, ), @@ -487,7 +485,7 @@ class InfoCasaLegislativa(ReportDefault): ObjectValue(attribute_name='__unicode__', left=tel_left[0] * cm), ObjectValue(attribute_name='tipo', left=tel_left[1] * cm, get_value=lambda instance: - {'F': 'Fixo', 'M': u'Móvel', 'X': 'Fax', 'I': 'Indefinido'}[instance.tipo], + {'F': _('Fixo'), 'M': _(u'Móvel'), 'X': _('Fax'), 'I': _('Indefinido')}[instance.tipo], ), ObjectValue(attribute_name='nota', left=tel_left[2] * cm), ], @@ -502,14 +500,14 @@ class InfoCasaLegislativa(ReportDefault): height=2.5 * cm, elements=[ Label( - text="Contato(s)", + text=_("Contato(s)"), style={'fontSize': 14, 'alignment': TA_CENTER}, width=BAND_WIDTH, top=1 * cm, ), - Label(text="Nome", left=cont_left[0] * cm, top=cont_top), - Label(text="Nota", left=cont_left[1] * cm, top=cont_top), - Label(text="E-mail", left=cont_left[2] * cm, top=cont_top), + Label(text=_("Nome"), left=cont_left[0] * cm, top=cont_top), + Label(text=_("Nota"), left=cont_left[1] * cm, top=cont_top), + Label(text=_("E-mail"), left=cont_left[2] * cm, top=cont_top), ], borders={'bottom': True, 'top': True}, ), @@ -532,18 +530,18 @@ class InfoCasaLegislativa(ReportDefault): height=2.5 * cm, elements=[ Label( - text="Convênio(s)", + text=_("Convênio(s)"), style={'fontSize': 14, 'alignment': TA_CENTER}, width=BAND_WIDTH, top=1 * cm, ), - Label(text="Projeto", left=convenio_left[0] * cm, top=convenio_top), - Label(text="Nº Convenio", left=convenio_left[1] * cm, top=convenio_top), - Label(text="Nº Processo SF", left=convenio_left[2] * cm, top=convenio_top), - Label(text="Adesão", left=convenio_left[3] * cm, top=convenio_top), - Label(text="Convênio", left=convenio_left[4] * cm, top=convenio_top), - Label(text="Equipada", left=convenio_left[5] * cm, top=convenio_top), - Label(text="Data D.O.", left=convenio_left[6] * cm, top=convenio_top), + Label(text=_("Projeto"), left=convenio_left[0] * cm, top=convenio_top), + Label(text=_("Nº Convenio"), left=convenio_left[1] * cm, top=convenio_top), + Label(text=_("Nº Processo SF"), left=convenio_left[2] * cm, top=convenio_top), + Label(text=_("Adesão"), left=convenio_left[3] * cm, top=convenio_top), + Label(text=_("Convênio"), left=convenio_left[4] * cm, top=convenio_top), + Label(text=_("Equipada"), left=convenio_left[5] * cm, top=convenio_top), + Label(text=_("Data D.O."), left=convenio_left[6] * cm, top=convenio_top), ], borders={'bottom': True} ), diff --git a/sigi/apps/casas/views.py b/sigi/apps/casas/views.py index 0ae19c4..a031d7d 100644 --- a/sigi/apps/casas/views.py +++ b/sigi/apps/casas/views.py @@ -1,23 +1,18 @@ # -*- coding: utf-8 -*- +import csv +from functools import reduce + +from django.conf import settings +from django.core.paginator import Paginator, InvalidPage, EmptyPage from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render +from django.utils.translation import ugettext as _ from geraldo.generators import PDFGenerator -from sigi.apps.casas.models import CasaLegislativa, Funcionario -from sigi.apps.casas.reports import CasasLegislativasLabels -from sigi.apps.casas.reports import CasasLegislativasLabelsSemPresidente -from sigi.apps.casas.reports import CasasLegislativasReport -from sigi.apps.casas.reports import CasasSemConvenioReport -from sigi.apps.casas.reports import InfoCasaLegislativa -from sigi.apps.parlamentares.models import Parlamentar +from sigi.apps.casas.models import CasaLegislativa +from sigi.apps.casas.reports import CasasLegislativasLabels, CasasLegislativasLabelsSemPresidente, CasasLegislativasReport, CasasSemConvenioReport, InfoCasaLegislativa from sigi.apps.parlamentares.reports import ParlamentaresLabels -from django.core.paginator import Paginator, InvalidPage, EmptyPage - -from django.conf import settings - -import csv -from functools import reduce # @param qs: queryset # @param o: (int) number of order field @@ -327,7 +322,7 @@ def export_csv(request): atributos2 = [s.encode("utf-8") for s in atributos] try: - atributos2.insert(atributos2.index('Município'), u'UF') + atributos2.insert(atributos2.index(_(u'Município')), _(u'UF')) except ValueError: pass @@ -337,49 +332,49 @@ def export_csv(request): lista = [] contatos = casa.funcionario_set.filter(setor="contato_interlegis") for atributo in atributos: - if u"CNPJ" == atributo: + if _(u"CNPJ") == atributo: lista.append(casa.cnpj.encode("utf-8")) - elif u"Código IBGE" == atributo: + elif _(u"Código IBGE") == atributo: lista.append(str(casa.municipio.codigo_ibge).encode("utf-8")) - elif u"Código TSE" == atributo: + elif _(u"Código TSE") == atributo: lista.append(str(casa.municipio.codigo_tse).encode("utf-8")) - elif u"Nome" == atributo: + elif _(u"Nome") == atributo: lista.append(casa.nome.encode("utf-8")) - elif u"Município" == atributo: + elif _(u"Município") == atributo: lista.append(unicode(casa.municipio.uf.sigla).encode("utf-8")) lista.append(unicode(casa.municipio.nome).encode("utf-8")) - elif u"Presidente" == atributo: + elif _(u"Presidente") == atributo: # TODO: Esse encode deu erro em 25/04/2012. Comentei para que o usuário pudesse continuar seu trabalho # É preciso descobrir o porque do erro e fazer a correção definitiva. # lista.append(str(casa.presidente or "").encode("utf-8")) lista.append(str(casa.presidente or "")) - elif u"Logradouro" == atributo: + elif _(u"Logradouro") == atributo: lista.append(casa.logradouro.encode("utf-8")) - elif u"Bairro" == atributo: + elif _(u"Bairro") == atributo: lista.append(casa.bairro.encode("utf-8")) - elif u"CEP" == atributo: + elif _(u"CEP") == atributo: lista.append(casa.cep.encode("utf-8")) - elif u"Telefone" == atributo: + elif _(u"Telefone") == atributo: lista.append(str(casa.telefone or "")) - elif u"Página web" == atributo: + elif _(u"Página web") == atributo: lista.append(casa.pagina_web.encode("utf-8")) - elif u"Email" == atributo: + elif _(u"Email") == atributo: lista.append(casa.email.encode("utf-8")) - elif u"Número de parlamentares" == atributo: + elif _(u"Número de parlamentares") == atributo: lista.append(casa.total_parlamentares) - elif u"Última alteração de endereco" == atributo: + elif _(u"Última alteração de endereco") == atributo: lista.append(casa.ult_alt_endereco) - elif u"Nome contato" == atributo: + elif _(u"Nome contato") == atributo: if contatos and contatos[0].nome: lista.append(contatos[0].nome.encode("utf-8")) else: lista.append('') - elif u"Cargo contato" == atributo: + elif _(u"Cargo contato") == atributo: if contatos and contatos[0].cargo: lista.append(contatos[0].cargo.encode("utf-8")) else: lista.append('') - elif u"Email contato" == atributo: + elif _(u"Email contato") == atributo: if contatos and contatos[0].email: lista.append(contatos[0].email.encode("utf-8")) else: diff --git a/sigi/apps/contatos/admin.py b/sigi/apps/contatos/admin.py index ba934e4..c9687e4 100644 --- a/sigi/apps/contatos/admin.py +++ b/sigi/apps/contatos/admin.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- from django.contrib import admin +from django.utils.translation import ugettext as _ + from sigi.apps.contatos.filters import PopulationFilter from sigi.apps.contatos.models import (UnidadeFederativa, Municipio, Telefone, Contato) @@ -29,7 +31,7 @@ class MunicipioAdmin(BaseModelAdmin): 'codigo_microrregiao', 'nome', 'data_criacao', 'uf', 'is_capital', 'populacao', 'is_polo', 'idh', 'pib_ano', 'pib_total', 'pib_percapita') }), - ('Posição geográfica', { + (_(u'Posição geográfica'), { 'fields': ('latitude', 'longitude'), }), ) diff --git a/sigi/apps/contatos/filters.py b/sigi/apps/contatos/filters.py index 8bf5b77..edf543e 100644 --- a/sigi/apps/contatos/filters.py +++ b/sigi/apps/contatos/filters.py @@ -1,11 +1,12 @@ # coding: utf-8 from django.contrib import admin +from django.utils.translation import ugettext as _ class PopulationFilter(admin.SimpleListFilter): # Human-readable title which will be displayed in the # right admin sidebar just above the filter options. - title = 'População' + title = _('População') # Parameter for the filter that will be used in the URL query. parameter_name = 'faixa' @@ -19,10 +20,10 @@ class PopulationFilter(admin.SimpleListFilter): in the right sidebar. """ return ( - ('1', '< 100 Mil'), - ('2', '100 Mil a 1 Milhão'), - ('3', '1 Milhão a 100 Milhões'), - ('4', '> 100 Milhões'), + ('1', _('< 100 Mil')), + ('2', _('100 Mil a 1 Milhão')), + ('3', _('1 Milhão a 100 Milhões')), + ('4', _('> 100 Milhões')), ) def queryset(self, request, queryset): diff --git a/sigi/apps/contatos/models.py b/sigi/apps/contatos/models.py index 288ac19..32ec243 100644 --- a/sigi/apps/contatos/models.py +++ b/sigi/apps/contatos/models.py @@ -1,9 +1,11 @@ # -*- coding: utf-8 -*- -from django.db import models -from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes import generic -from sigi.apps.utils import SearchField +from django.contrib.contenttypes.models import ContentType from django.core.validators import MaxValueValidator, MinValueValidator +from django.db import models +from django.utils.translation import ugettext as _ + +from sigi.apps.utils import SearchField class UnidadeFederativa(models.Model): @@ -11,33 +13,33 @@ class UnidadeFederativa(models.Model): """ Modelo que representa um estado brasileiro """ REGIAO_CHOICES = ( - ('SL', 'Sul'), - ('SD', 'Sudeste'), - ('CO', 'Centro-Oeste'), - ('NE', 'Nordeste'), - ('NO', 'Norte'), + ('SL', _('Sul')), + ('SD', _('Sudeste')), + ('CO', _('Centro-Oeste')), + ('NE', _('Nordeste')), + ('NO', _('Norte')), ) codigo_ibge = models.PositiveIntegerField( u'código IBGE', primary_key=True, unique=True, - help_text='Código do estado segundo IBGE.' + help_text=_('Código do estado segundo IBGE.') ) - nome = models.CharField('Nome UF', max_length=25) + nome = models.CharField(_('Nome UF'), max_length=25) # Campo de busca em caixa baixa sem acento search_text = SearchField(field_names=['nome']) sigla = models.CharField( max_length=2, unique=True, - help_text="Exemplo: MG.", + help_text=_("Exemplo: MG."), ) - regiao = models.CharField('região', max_length=2, choices=REGIAO_CHOICES) - populacao = models.PositiveIntegerField('população') + regiao = models.CharField(_('região'), max_length=2, choices=REGIAO_CHOICES) + populacao = models.PositiveIntegerField(_('população')) class Meta: - ordering = ('nome',) - verbose_name = 'Unidade Federativa' - verbose_name_plural = 'Unidades Federativas' + ordering = (_('nome'),) + verbose_name = _('Unidade Federativa') + verbose_name_plural = _('Unidades Federativas') def __unicode__(self): return self.nome @@ -48,41 +50,41 @@ class Municipio(models.Model): """ Modelo para representar as cidades brasileiras """ codigo_ibge = models.PositiveIntegerField( - u'código IBGE', + _(u'código IBGE'), primary_key=True, unique=True, - help_text='Código do município segundo IBGE.' + help_text=_('Código do município segundo IBGE.') ) # agrupamento baseado em similaridades econômicas e sociais codigo_mesorregiao = models.PositiveIntegerField( - u'código mesorregião', + _(u'código mesorregião'), blank=True, null=True ) # agrupamento baseado em similaridades econômicas e sociais codigo_microrregiao = models.PositiveIntegerField( - u'código microrregião', + _(u'código microrregião'), blank=True, null=True ) # codio designado pelo Tribunal Superior Eleitoral codigo_tse = models.PositiveIntegerField( - u'código TSE', + _(u'código TSE'), unique=True, null=True, - help_text='Código do município segundo TSE.' + help_text=_('Código do município segundo TSE.') ) nome = models.CharField(max_length=50) - search_text = SearchField(field_names=['nome', 'uf']) - uf = models.ForeignKey(UnidadeFederativa, verbose_name='UF') + search_text = SearchField(field_names=[_('nome'), _('uf')]) + uf = models.ForeignKey(UnidadeFederativa, verbose_name=_('UF')) # verdadeiro se o município é capital do estado - is_capital = models.BooleanField('capital', default=False) - populacao = models.PositiveIntegerField(u'população') + is_capital = models.BooleanField(_('capital'), default=False) + populacao = models.PositiveIntegerField(_(u'população')) populacao.list_filter_range = [10000, 100000, 1000000] - is_polo = models.BooleanField(u'pólo', default=False) - data_criacao = models.DateField(u'data de criação do município', null=True, blank=True) + is_polo = models.BooleanField(_(u'pólo'), default=False) + data_criacao = models.DateField(_(u'data de criação do município'), null=True, blank=True) # posição geográfica do município latitude = models.DecimalField( @@ -90,28 +92,28 @@ class Municipio(models.Model): decimal_places=8, null=True, blank=True, - help_text='Exemplo: -20,464.' + help_text=_('Exemplo: -20,464.') ) longitude = models.DecimalField( max_digits=11, decimal_places=8, null=True, blank=True, - help_text='Exemplo: -45,426.' + help_text=_('Exemplo: -45,426.') ) - idh = models.DecimalField(u'IDH', help_text=u'Índice de desenvolvimento Humano', max_digits=4, decimal_places=3, + idh = models.DecimalField(_(u'IDH'), help_text=_(u'Índice de desenvolvimento Humano'), max_digits=4, decimal_places=3, validators=[MinValueValidator(0), MaxValueValidator(1)]) idh.list_filter_range = [0.500, 0.800] - pib_total = models.DecimalField(u'PIB total', max_digits=18, decimal_places=3, blank=True, null=True) - pib_percapita = models.DecimalField(u'PIB per capita', max_digits=18, decimal_places=3, blank=True, null=True) - pib_ano = models.IntegerField(u'Ano de apuração do PIB', blank=True, null=True) + pib_total = models.DecimalField(_(u'PIB total'), max_digits=18, decimal_places=3, blank=True, null=True) + pib_percapita = models.DecimalField(_(u'PIB per capita'), max_digits=18, decimal_places=3, blank=True, null=True) + pib_ano = models.IntegerField(_(u'Ano de apuração do PIB'), blank=True, null=True) class Meta: - ordering = ('nome', 'codigo_ibge') - verbose_name = 'município' - verbose_name_plural = 'municípios' + ordering = (_('nome'), _('codigo_ibge')) + verbose_name = _('município') + verbose_name_plural = _('municípios') def __unicode__(self): return "%s - %s" % (self.nome, self.uf) @@ -126,15 +128,15 @@ class Telefone(models.Model): """ Modelo genérico para agrupar telefones dos modulos do sistema """ TELEFONE_CHOICES = ( - ('F', 'Fixo'), - ('M', 'Móvel'), - ('X', 'Fax'), - ('I', 'Indefinido'), + ('F', _('Fixo')), + ('M', _('Móvel')), + ('X', _('Fax')), + ('I', _('Indefinido')), ) numero = models.CharField( - 'número', + _('número'), max_length=64, # TODO: diminuir tamanho de campo após migração de dados - help_text='Exemplo: (31)8851-9898.', + help_text=_('Exemplo: (31)8851-9898.'), ) tipo = models.CharField( max_length=1, @@ -142,7 +144,7 @@ class Telefone(models.Model): default='I' ) nota = models.CharField(max_length=70, null=True, blank=True) - ult_alteracao = models.DateTimeField(u'Última alteração', null=True, blank=True, editable=False, auto_now=True) + ult_alteracao = models.DateTimeField(_(u'Última alteração'), null=True, blank=True, editable=False, auto_now=True) # guarda o tipo do objeto (classe) vinculado a esse registro content_type = models.ForeignKey(ContentType) @@ -163,16 +165,16 @@ class Contato(models.Model): """ Modelo generico para registrar contatos vinculados aos modulos do sistema """ - nome = models.CharField('nome completo', max_length=120) + nome = models.CharField(_('nome completo'), max_length=120) nome.alphabetic_filter = True nota = models.CharField(max_length=70, blank=True) - email = models.EmailField('e-mail', blank=True) + email = models.EmailField(_('e-mail'), blank=True) telefones = generic.GenericRelation(Telefone) municipio = models.ForeignKey( Municipio, - verbose_name='município', + verbose_name=_('município'), blank=True, null=True, ) @@ -185,8 +187,8 @@ class Contato(models.Model): class Meta: ordering = ('nome',) - verbose_name = 'contato Interlegis' - verbose_name_plural = 'contatos Interlegis' + verbose_name = _('contato Interlegis') + verbose_name_plural = _('contatos Interlegis') def __unicode__(self): return self.nome @@ -194,51 +196,51 @@ class Contato(models.Model): class Endereco(models.Model): TIPO_CHOICES = ( - ('aeroporto', 'Aeroporto'), - ('alameda', 'Alameda'), - ('area', u'Área'), - ('avenida', 'Avenida'), - ('campo', 'Campo'), - ('chacara', u'Chácara'), - ('colonia', u'Colônia'), - ('condominio', u'Condomínio'), - ('conjunto', 'Conjunto'), - ('distrito', 'Distrito'), - ('esplanada', 'Esplanada'), - ('estacao', u'Estação'), - ('estrada', 'Estrada'), - ('favela', 'Favela'), - ('fazenda', 'Fazenda'), - ('feira', 'Feira'), - ('jardim', 'Jardim'), - ('ladeira', 'Ladeira'), - ('lago', 'Lago'), - ('lagoa', 'Lagoa'), - ('largo', 'Largo'), - ('loteamento', 'Loteamento'), - ('morro', 'Morro'), - ('nucleo', u'Núcleo'), - ('parque', 'Parque'), - ('passarela', 'Passarela'), - ('patio', u'Pátio'), - ('praca', u'Praça'), - ('quadra', 'Quadra'), - ('recanto', 'Recanto'), - ('residencial', 'Residencial'), - ('rodovia', 'Rodovia'), - ('rua', 'Rua'), - ('setor', 'Setor'), - ('sitio', u'Sítio'), - ('travessa', 'Travessa'), - ('trecho', 'Trecho'), - ('trevo', 'Trevo'), - ('vale', 'Vale'), - ('vereda', 'Vereda'), - ('via', 'Via'), - ('viaduto', 'Viaduto'), - ('viela', 'Viela'), - ('vila', 'Vila'), - ('outro', 'Outro'), + ('aeroporto', _('Aeroporto')), + ('alameda', _('Alameda')), + ('area', _(u'Área')), + ('avenida', _('Avenida')), + ('campo', _('Campo')), + ('chacara', _(u'Chácara')), + ('colonia', _(u'Colônia')), + ('condominio', _(u'Condomínio')), + ('conjunto', _('Conjunto')), + ('distrito', _('Distrito')), + ('esplanada', _('Esplanada')), + ('estacao', _(u'Estação')), + ('estrada', _('Estrada')), + ('favela', _('Favela')), + ('fazenda', _('Fazenda')), + ('feira', _('Feira')), + ('jardim', _('Jardim')), + ('ladeira', _('Ladeira')), + ('lago', _('Lago')), + ('lagoa', _('Lagoa')), + ('largo', _('Largo')), + ('loteamento', _('Loteamento')), + ('morro', _('Morro')), + ('nucleo', _(u'Núcleo')), + ('parque', _('Parque')), + ('passarela', _('Passarela')), + ('patio', _(u'Pátio')), + ('praca', _(u'Praça')), + ('quadra', _('Quadra')), + ('recanto', _('Recanto')), + ('residencial', _('Residencial')), + ('rodovia', _('Rodovia')), + ('rua', _('Rua')), + ('setor', _('Setor')), + ('sitio', _(u'Sítio')), + ('travessa', _('Travessa')), + ('trecho', _('Trecho')), + ('trevo', _('Trevo')), + ('vale', _('Vale')), + ('vereda', _('Vereda')), + ('via', _('Via')), + ('viaduto', _('Viaduto')), + ('viela', _('Viela')), + ('vila', _('Vila')), + ('outro', _('Outro')), ) # tipo do endereço obtido no site dos correios @@ -254,16 +256,16 @@ class Endereco(models.Model): bairro = models.CharField(max_length=100, blank=True) cep = models.CharField( - 'CEP', + _('CEP'), max_length=9, blank=True, null=True, - help_text="Formato: XXXXX-XXX." + help_text=_("Formato: XXXXX-XXX.") ) municipio = models.ForeignKey( Municipio, - verbose_name='município', + verbose_name=_(u'município'), blank=True, null=True, ) @@ -277,8 +279,8 @@ class Endereco(models.Model): class Meta: ordering = ('logradouro', 'numero') - verbose_name = u'endereço' - verbose_name_plural = u'endereços' + verbose_name = _(u'endereço') + verbose_name_plural = _(u'endereços') def __unicode__(self): return self.tipo + ' ' + self.logradouro + ', ' + self.numero \ diff --git a/sigi/apps/convenios/admin.py b/sigi/apps/convenios/admin.py index aceb412..7b3e63a 100644 --- a/sigi/apps/convenios/admin.py +++ b/sigi/apps/convenios/admin.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from django.contrib import admin from django.http import HttpResponse, HttpResponseRedirect +from django.utils.translation import ugettext as _ from geraldo.generators import PDFGenerator from sigi.apps.convenios.models import Projeto, Convenio, EquipamentoPrevisto, Anexo, Tramitacao @@ -42,12 +43,12 @@ class ConvenioAdmin(BaseModelAdmin): (None, {'fields': ('casa_legislativa', 'num_processo_sf', 'num_convenio', 'projeto', 'observacao')} ), - ('Datas', + (_('Datas'), {'fields': ('data_adesao', 'data_retorno_assinatura', 'data_termo_aceite', 'data_pub_diario', 'data_devolucao_via', 'data_postagem_correio')} ), - ('Datas - Convenio sem assinatura', + (_('Datas - Convenio sem assinatura'), {'fields': ('data_devolucao_sem_assinatura', 'data_retorno_sem_assinatura',)} ), ) @@ -68,7 +69,7 @@ class ConvenioAdmin(BaseModelAdmin): def get_uf(self, obj): return obj.casa_legislativa.municipio.uf.sigla - get_uf.short_description = 'UF' + get_uf.short_description = _('UF') get_uf.admin_order_field = 'casa_legislativa__municipio__uf__sigla' def changelist_view(self, request, extra_context=None): @@ -103,7 +104,7 @@ class ConvenioAdmin(BaseModelAdmin): report = ConvenioReport(queryset=queryset) report.generate_by(PDFGenerator, filename=response) return response - relatorio.short_description = u'Exportar convênios selecionados para PDF' + relatorio.short_description = _(u'Exportar convênios selecionados para PDF') def adicionar_convenios(self, request, queryset): if 'carrinho_convenios' in request.session: @@ -114,11 +115,11 @@ class ConvenioAdmin(BaseModelAdmin): q2 = len(request.session['carrinho_convenios']) quant = q2 - q1 if quant: - self.message_user(request, str(q2 - q1) + " Convênios adicionados no carrinho") + self.message_user(request, str(q2 - q1) + _(" Convênios adicionados no carrinho")) else: - self.message_user(request, "Os Convênios selecionados já foram adicionadas anteriormente") + self.message_user(request, _("Os Convênios selecionados já foram adicionadas anteriormente")) return HttpResponseRedirect('.') - adicionar_convenios.short_description = u"Armazenar convênios no carrinho para exportar" + adicionar_convenios.short_description = _(u"Armazenar convênios no carrinho para exportar") def get_actions(self, request): actions = super(ConvenioAdmin, self).get_actions(request) diff --git a/sigi/apps/convenios/models.py b/sigi/apps/convenios/models.py index ac9d40f..5d7ca45 100644 --- a/sigi/apps/convenios/models.py +++ b/sigi/apps/convenios/models.py @@ -1,7 +1,8 @@ # style="list-style-type: noneo -*- coding: utf-8 -*- from datetime import datetime from django.db import models -from django.contrib.contenttypes import generic +from django.utils.translation import ugettext as _ + from sigi.apps.utils import SearchField @@ -29,67 +30,67 @@ class Convenio(models.Model): """ casa_legislativa = models.ForeignKey( 'casas.CasaLegislativa', - verbose_name='Casa Legislativa' + verbose_name=_('Casa Legislativa') ) # campo de busca em caixa baixa e sem acentos search_text = SearchField(field_names=['casa_legislativa']) - projeto = models.ForeignKey('Projeto') + projeto = models.ForeignKey(_('Projeto')) # numero designado pelo Senado Federal para o convênio num_processo_sf = models.CharField( - 'número do processo SF (Senado Federal)', + _('número do processo SF (Senado Federal)'), max_length=20, blank=True, - help_text='Formatos:
Antigo: XXXXXX/XX-X.
SIGAD: XXXXX.XXXXXX/XXXX-XX' + help_text=_('Formatos:
Antigo: XXXXXX/XX-X.
SIGAD: XXXXX.XXXXXX/XXXX-XX') ) num_convenio = models.CharField( - 'número do convênio', + _('número do convênio'), max_length=10, blank=True ) data_adesao = models.DateField( - 'Aderidas', + _('Aderidas'), null=True, blank=True, ) data_retorno_assinatura = models.DateField( - 'Conveniadas', + _('Conveniadas'), null=True, blank=True, - help_text='Convênio firmado.' + help_text=_('Convênio firmado.') ) data_pub_diario = models.DateField( - 'data da publicação no Diário Oficial', + _('data da publicação no Diário Oficial'), null=True, blank=True ) data_termo_aceite = models.DateField( - 'Equipadas', + _('Equipadas'), null=True, blank=True, - help_text='Equipamentos recebidos.' + help_text=_('Equipamentos recebidos.') ) data_devolucao_via = models.DateField( - 'data de devolução da via', + _('data de devolução da via'), null=True, blank=True, - help_text=u'Data de devolução da via do convênio à Câmara Municipal.' + help_text=_(u'Data de devolução da via do convênio à Câmara Municipal.') ) data_postagem_correio = models.DateField( - 'data postagem correio', + _('data postagem correio'), null=True, blank=True, ) data_devolucao_sem_assinatura = models.DateField( - 'data de devolução por falta de assinatura', + _('data de devolução por falta de assinatura'), null=True, blank=True, - help_text=u'Data de devolução por falta de assinatura', + help_text=_(u'Data de devolução por falta de assinatura'), ) data_retorno_sem_assinatura = models.DateField( - 'data do retorno sem assinatura', + _('data do retorno sem assinatura'), null=True, blank=True, - help_text=u'Data do retorno do convênio sem assinatura', + help_text=_(u'Data do retorno do convênio sem assinatura'), ) observacao = models.CharField( null=True, @@ -107,13 +108,13 @@ class Convenio(models.Model): class Meta: get_latest_by = 'id' ordering = ('id',) - verbose_name = u'convênio' + verbose_name = _(u'convênio') def __unicode__(self): if self.data_retorno_assinatura is not None: - return u"Convênio nº %s - projeto %s, em %s" % (self.num_convenio, self.projeto.sigla, self.data_retorno_assinatura) + return _(u"Convênio nº %s - projeto %s, em %s") % (self.num_convenio, self.projeto.sigla, self.data_retorno_assinatura) else: - return u"Adesão ao projeto %s, em %s" % (self.projeto.sigla, self.data_adesao) + return _(u"Adesão ao projeto %s, em %s") % (self.projeto.sigla, self.data_adesao) class EquipamentoPrevisto(models.Model): @@ -122,13 +123,13 @@ class EquipamentoPrevisto(models.Model): disponibilizados para as Casas Legislativas (foi usado na prmeira etapa do programa) """ - convenio = models.ForeignKey(Convenio, verbose_name=u'convênio') + convenio = models.ForeignKey(Convenio, verbose_name=_(u'convênio')) equipamento = models.ForeignKey('inventario.Equipamento') quantidade = models.PositiveSmallIntegerField(default=1) class Meta: - verbose_name = 'equipamento previsto' - verbose_name_plural = 'equipamentos previstos' + verbose_name = _('equipamento previsto') + verbose_name_plural = _('equipamentos previstos') def __unicode__(self): return u'%s %s(s)' % (self.quantidade, self.equipamento) @@ -139,12 +140,12 @@ class Anexo(models.Model): """ Modelo para giardar os documentos gerados no processo de convênio """ - convenio = models.ForeignKey(Convenio, verbose_name=u'convênio') + convenio = models.ForeignKey(Convenio, verbose_name=_(u'convênio')) # caminho no sistema para o documento anexo arquivo = models.FileField(upload_to='apps/convenios/anexo/arquivo',) - descricao = models.CharField('descrição', max_length='70') + descricao = models.CharField(_('descrição'), max_length='70') data_pub = models.DateTimeField( - 'data da publicação do anexo', + _('data da publicação do anexo'), default=datetime.now ) @@ -173,21 +174,21 @@ class Tramitacao(models.Model): """ Modelo para registrar as vias do processo de convênio e a Unidade responsável pelo tramite (ex. colher assinaturas do secretário do senado) """ - convenio = models.ForeignKey(Convenio, verbose_name=u'convênio') - unid_admin = models.ForeignKey(UnidadeAdministrativa, verbose_name=u'Unidade Administrativa') + convenio = models.ForeignKey(Convenio, verbose_name=_(u'convênio')) + unid_admin = models.ForeignKey(UnidadeAdministrativa, verbose_name=_(u'Unidade Administrativa')) data = models.DateField() observacao = models.CharField( - 'observação', + _('observação'), max_length='512', null=True, blank=True, ) class Meta: - verbose_name_plural = u'Tramitações' + verbose_name_plural = _(u'Tramitações') def __unicode__(self): if self.observacao: - return unicode("%s em %s (%s)" % (self.unid_admin, self.data, self.observacao)) + return unicode(_("%s em %s (%s)") % (self.unid_admin, self.data, self.observacao)) else: - return unicode("%s em %s" % (self.unid_admin, self.data)) + return unicode(_("%s em %s") % (self.unid_admin, self.data)) diff --git a/sigi/apps/convenios/reports.py b/sigi/apps/convenios/reports.py index f314536..d43816a 100644 --- a/sigi/apps/convenios/reports.py +++ b/sigi/apps/convenios/reports.py @@ -1,18 +1,11 @@ # -*- coding: utf-8 -*- -import os -from ctypes import alignment -from operator import attrgetter -from geraldo import Report, ReportBand, ObjectValue, DetailBand, Label, \ - landscape, SystemField, BAND_WIDTH, ReportGroup, \ - FIELD_ACTION_SUM, FIELD_ACTION_COUNT, FIELD_ACTION_AVG -from geraldo.graphics import Image - +from django.utils.translation import ugettext as _ +from geraldo import ReportBand, ObjectValue, Label, ReportGroup, FIELD_ACTION_SUM from reportlab.lib.units import cm -from reportlab.lib.pagesizes import A4 -from reportlab.lib.enums import TA_CENTER, TA_RIGHT from sigi.apps.relatorios.reports import ReportDefault + #from abc import ABCMeta @@ -33,7 +26,7 @@ class SemEquipamentosReport(object): class ConvenioReport(ReportDefault): - title = u'Relatório de Convênios' + title = _(u'Relatório de Convênios') class band_page_header(ReportDefault.band_page_header): @@ -44,47 +37,47 @@ class ConvenioReport(ReportDefault): elements += [ Label( - text="UF", + text=_("UF"), left=label_left[0] * cm, top=label_top + 0.4 * cm, ), Label( - text="Municipio", + text=_("Municipio"), left=label_left[1] * cm, top=label_top + 0.4 * cm, ), Label( - text="Data de Adesão", + text=_("Data de Adesão"), left=label_left[2] * cm, top=label_top, width=2 * cm, ), Label( - text="Número do Convênio", + text=_("Número do Convênio"), left=label_left[3] * cm, top=label_top, width=2 * cm, ), Label( - text="Data do Convênio", + text=_("Data do Convênio"), left=label_left[4] * cm, top=label_top, width=2 * cm, ), Label( - text="Data de Publicação", + text=_("Data de Publicação"), left=label_left[5] * cm, top=label_top, width=2 * cm, ), Label( - text="Data de Aceite", + text=_("Data de Aceite"), left=label_left[6] * cm, top=label_top, width=2 * cm, ), Label( - text="Projeto", + text=_("Projeto"), left=label_left[7] * cm, top=label_top + 0.4 * cm, width=2 * cm, @@ -147,7 +140,7 @@ class ConvenioReport(ReportDefault): height=0.7 * cm, elements=[ ObjectValue(attribute_name='casa_legislativa.municipio.uf', - get_Value=lambda instance: 'CasaLegislativa: ' + (instance.casa_legislativa.uf) + get_Value=lambda instance: _('CasaLegislativa: ') + (instance.casa_legislativa.uf) ) ], borders={'top': True}, @@ -167,41 +160,41 @@ class ConvenioReportSemAceite(ConvenioReport): elements += [ Label( - text="UF", + text=_("UF"), left=label_left[0] * cm, top=label_top + 0.4 * cm, ), Label( - text="Município", + text=_("Município"), left=label_left[1] * cm, top=label_top + 0.4 * cm, ), Label( - text="Data de Adesão", + text=_("Data de Adesão"), left=label_left[3] * cm, top=label_top, width=2 * cm, ), Label( - text="Número do Convênio", + text=_("Número do Convênio"), left=label_left[4] * cm, top=label_top, width=2 * cm, ), Label( - text="Data do Convênio", + text=_("Data do Convênio"), left=label_left[5] * cm, top=label_top, width=2 * cm, ), Label( - text="Data de Publicação", + text=_("Data de Publicação"), left=label_left[6] * cm, top=label_top, width=2 * cm, ), Label( - text="Projeto", + text=_("Projeto"), left=label_left[7] * cm, top=label_top + 0.4 * cm, width=2 * cm, @@ -254,7 +247,7 @@ float_duas_casas = lambda instance: '%.2f' % (instance) class ConvenioReportRegiao(ReportDefault): - title = u'Relatório de Convênios por Região' + title = _(u'Relatório de Convênios por Região') class band_page_header(ReportDefault.band_page_header): label_top = ReportDefault.band_page_header.label_top @@ -264,11 +257,11 @@ class ConvenioReportRegiao(ReportDefault): elements = list(ReportDefault.band_page_header.elements) elements += [ - Label(text="UF", left=label_left[0] * cm, top=label_top,), - Label(text="Total", left=label_left[1] * cm, top=label_top,), - Label(text="Aderidas", left=label_left[2] * cm, top=label_top,), + Label(text=_("UF"), left=label_left[0] * cm, top=label_top,), + Label(text=_("Total"), left=label_left[1] * cm, top=label_top,), + Label(text=_("Aderidas"), left=label_left[2] * cm, top=label_top,), Label(text="%", left=label_left[3] * cm, top=label_top), - Label(text="Ñ Aderidas", left=label_left[4] * cm, top=label_top,), + Label(text=_("Ñ Aderidas"), left=label_left[4] * cm, top=label_top,), Label(text="%", left=label_left[5] * cm, top=label_top), ] @@ -290,7 +283,7 @@ class ConvenioReportRegiao(ReportDefault): class band_summary(ReportBand): label_left = [0.5, 6, 8, 10, 12, 14] elements = [ - Label(text="Total", top=0.1 * cm, left=label_left[0] * cm), + Label(text=_("Total"), top=0.1 * cm, left=label_left[0] * cm), ObjectValue(attribute_name='quant_casas', action=FIELD_ACTION_SUM, left=label_left[1] * cm, ), ObjectValue(attribute_name='quant_casas_aderidas', action=FIELD_ACTION_SUM, left=label_left[2] * cm), # ObjectValue(attribute_name='porc_casas_aderidas', action=FIELD_ACTION_AVG, left=label_left[3]*cm, @@ -305,16 +298,16 @@ class ConvenioReportRegiao(ReportDefault): class ConvenioPorCMReport(ConvenioReport): - title = u'Relatório de Convênios por Câmara Municipal' + title = _(u'Relatório de Convênios por Câmara Municipal') class ConvenioPorALReport(ConvenioReport): - title = u'Relatório de Convênios por Assembléia Legislativa' + title = _(u'Relatório de Convênios por Assembléia Legislativa') class ConvenioReportSemAceiteCM(ConvenioReportSemAceite): - title = u'Relatório de Convênios por Câmara Municipal' + title = _(u'Relatório de Convênios por Câmara Municipal') class ConvenioReportSemAceiteAL(ConvenioReportSemAceite): - title = u'Relatório de Convênios por Assembléia Legislativa' + title = _(u'Relatório de Convênios por Assembléia Legislativa') diff --git a/sigi/apps/convenios/views.py b/sigi/apps/convenios/views.py index 5405c8f..46f2596 100644 --- a/sigi/apps/convenios/views.py +++ b/sigi/apps/convenios/views.py @@ -1,26 +1,20 @@ #-*- coding:utf-8 -*- +import csv + +import datetime +import ho.pisa as pisa +from django.conf import settings +from django.core.paginator import Paginator, InvalidPage, EmptyPage from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render, get_list_or_404 +from django.template import Context, loader +from django.utils.translation import ugettext as _ from geraldo.generators import PDFGenerator -from sigi.apps.convenios.models import Convenio, Projeto -from sigi.apps.convenios.reports import ConvenioReport \ - , ConvenioPorCMReport \ - , ConvenioPorALReport \ - , ConvenioReportSemAceiteAL \ - , ConvenioReportSemAceiteCM + from sigi.apps.casas.models import CasaLegislativa from sigi.apps.contatos.models import UnidadeFederativa - -import ho.pisa as pisa -from django.template import Context, loader - -from django.core.paginator import Paginator, InvalidPage, EmptyPage - -from django.conf import settings - -import datetime - -import csv +from sigi.apps.convenios.models import Convenio, Projeto +from sigi.apps.convenios.reports import ConvenioPorCMReport, ConvenioPorALReport, ConvenioReportSemAceiteAL, ConvenioReportSemAceiteCM def query_ordena(qs, o, ot): @@ -230,12 +224,12 @@ def casas_estado_to_tabela(casas, convenios, regiao): ) cabecalho_topo = ( - u'UF', - u'Câmaras municipais', - u'Não Aderidas', - u'Aderidas', - u'Conveniadas', - u'Equipadas' + _(u'UF'), + _(u'Câmaras municipais'), + _(u'Não Aderidas'), + _(u'Aderidas'), + _(u'Conveniadas'), + _(u'Equipadas') ) return { @@ -252,11 +246,11 @@ def report_regiao(request, regiao='NE'): regiao = request.POST['regiao'] REGIAO_CHOICES = { - 'SL': 'Sul', - 'SD': 'Sudeste', - 'CO': 'Centro-Oeste', - 'NE': 'Nordeste', - 'NO': 'Norte', + 'SL': _('Sul'), + 'SD': _('Sudeste'), + 'CO': _('Centro-Oeste'), + 'NE': _('Nordeste'), + 'NO': _('Norte'), } projetos = Projeto.objects.all() @@ -267,7 +261,7 @@ def report_regiao(request, regiao='NE'): # Geral convenios = Convenio.objects.filter(casa_legislativa__tipo__sigla='CM') tabela = casas_estado_to_tabela(camaras, convenios, regiao) - tabela["projeto"] = "Geral" + tabela["projeto"] = _("Geral") tabelas.append(tabela) @@ -301,47 +295,47 @@ def export_csv(request): if not convenios: return HttpResponseRedirect('../') - atributos = [u"No. Processo", u"No. Convênio", u"Projeto", u"Casa Legislativa", u"Data de Adesão", u"Data de Convênio", - u"Data da Publicacao no D.O.", u"Data Equipada", ] + atributos = [_(u"No. Processo"), _(u"No. Convênio"), _(u"Projeto"), _(u"Casa Legislativa"), _(u"Data de Adesão"), _(u"Data de Convênio"), + _(u"Data da Publicacao no D.O."), _(u"Data Equipada"), ] if request.POST: atributos = request.POST.getlist("itens_csv_selected") col_titles = atributos - if u"Casa Legislativa" in col_titles: - pos = col_titles.index(u"Casa Legislativa") + 1 - col_titles.insert(pos, u"uf") + if _(u"Casa Legislativa") in col_titles: + pos = col_titles.index(_(u"Casa Legislativa")) + 1 + col_titles.insert(pos, _(u"uf")) csv_writer.writerow([s.encode("utf-8") for s in col_titles]) for convenio in convenios: lista = [] for atributo in atributos: - if u"No. Processo" == atributo: + if _(u"No. Processo") == atributo: lista.append(convenio.num_processo_sf.encode("utf-8")) - elif u"No. Convênio" == atributo: + elif _(u"No. Convênio") == atributo: lista.append(convenio.num_convenio.encode("utf-8")) - elif u"Projeto" == atributo: + elif _(u"Projeto") == atributo: lista.append(convenio.projeto.nome.encode("utf-8")) - elif u"Casa Legislativa" == atributo: + elif _(u"Casa Legislativa") == atributo: lista.append(convenio.casa_legislativa.nome.encode("utf-8")) lista.append(convenio.casa_legislativa.municipio.uf.sigla.encode("utf-8")) - elif u"Data de Adesão" == atributo: + elif _(u"Data de Adesão") == atributo: data = '' if convenio.data_adesao: data = convenio.data_adesao.strftime("%d/%m/%Y") lista.append(data.encode("utf-8")) - elif u"Data de Convênio" == atributo: + elif _(u"Data de Convênio") == atributo: data = '' if convenio.data_retorno_assinatura: data = convenio.data_retorno_assinatura.strftime("%d/%m/%Y") lista.append(data.encode("utf-8")) - elif u"Data da Publicacao no D.O." == atributo: + elif _(u"Data da Publicacao no D.O.") == atributo: data = '' if convenio.data_pub_diario: data = convenio.data_pub_diario.strftime("%d/%m/%Y") lista.append(data.encode("utf-8")) data = '' - elif u"Data Equipada" == atributo: + elif _(u"Data Equipada") == atributo: if convenio.data_termo_aceite: data = convenio.data_termo_aceite.strftime("%d/%m/%Y") lista.append(data.encode("utf-8")) diff --git a/sigi/apps/diagnosticos/admin.py b/sigi/apps/diagnosticos/admin.py index 4a751e5..1d8f7a7 100644 --- a/sigi/apps/diagnosticos/admin.py +++ b/sigi/apps/diagnosticos/admin.py @@ -2,7 +2,9 @@ from datetime import datetime from django.contrib import admin from django.db.utils import OperationalError, ProgrammingError +from django.utils.translation import ugettext as _ from eav.admin import BaseEntityAdmin, BaseSchemaAdmin + from sigi.apps.diagnosticos.forms import DiagnosticoForm from sigi.apps.diagnosticos.models import Diagnostico, Pergunta, Escolha, Equipe, Anexo, Categoria from sigi.apps.utils.base_admin import BaseModelAdmin @@ -19,15 +21,15 @@ def publicar_diagnostico(self, request, queryset): email = diagnostico.responsavel.user.email if email: diagnostico.email_diagnostico_publicado(email, request.get_host()) - self.message_user(request, "Diagnóstico(s) publicado(s) com sucesso!") -publicar_diagnostico.short_description = u""" - Definir diagnósticos como publicado""" + self.message_user(request, _("Diagnóstico(s) publicado(s) com sucesso!")) +publicar_diagnostico.short_description = _(u""" + Definir diagnósticos como publicado""") def despublicar_diagnostico(self, request, queryset): queryset.update(publicado=False) -despublicar_diagnostico.short_description = u""" - Definir diagnósticos como não publicado""" +despublicar_diagnostico.short_description = _(u""" + Definir diagnósticos como não publicado""") class EquipeInline(admin.TabularInline): @@ -84,7 +86,7 @@ class DiagnosticoAdmin(BaseEntityAdmin): def get_uf(self, obj): return '%s' % (obj.casa_legislativa.municipio.uf) - get_uf.short_description = 'UF' + get_uf.short_description = _('UF') get_uf.admin_order_field = 'casa_legislativa__municipio__uf__nome' def lookup_allowed(self, lookup, value): @@ -126,7 +128,7 @@ class EscolhaInline(admin.TabularInline): model = Escolha fk_name = 'schema' raw_id_fields = ('schema_to_open',) - verbose_name = 'Escolhas (apenas para choices ou multiple choices)' + verbose_name = _('Escolhas (apenas para choices ou multiple choices)') extra = 0 diff --git a/sigi/apps/diagnosticos/forms.py b/sigi/apps/diagnosticos/forms.py index f06232f..a271a1f 100644 --- a/sigi/apps/diagnosticos/forms.py +++ b/sigi/apps/diagnosticos/forms.py @@ -1,18 +1,20 @@ # -*- coding: utf-8 -*- - from copy import deepcopy + from django import forms -from django.forms.forms import BoundField +from django.contrib.contenttypes.generic import generic_inlineformset_factory from django.forms import (BooleanField, CharField, DateField, FloatField, ModelChoiceField, Textarea, ModelMultipleChoiceField) -from django.contrib.contenttypes.generic import generic_inlineformset_factory +from django.forms.forms import BoundField +from django.utils.translation import ugettext as _ +from eav.fields import RangeField +from eav.forms import BaseDynamicEntityForm + from sigi.apps.casas.models import CasaLegislativa, Funcionario from sigi.apps.contatos.models import Telefone from sigi.apps.diagnosticos.models import Diagnostico from sigi.apps.diagnosticos.widgets import EavCheckboxSelectMultiple, EavRadioSelect -from eav.forms import BaseDynamicEntityForm -from eav.fields import RangeField class DiagnosticoForm(BaseDynamicEntityForm): @@ -131,7 +133,7 @@ class DiagnosticoMobileForm(BaseDynamicEntityForm): class CasaLegislativaMobileForm(forms.ModelForm): - data_instalacao = forms.DateField(label=u'Data de instalação da Casa Legislativa', required=False) + data_instalacao = forms.DateField(label=_(u'Data de instalação da Casa Legislativa'), required=False) data_criacao = forms.DateField() class Meta: @@ -141,7 +143,7 @@ class CasaLegislativaMobileForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(CasaLegislativaMobileForm, self).__init__(*args, **kwargs) self.fields['data_criacao'] = forms.DateField( - label=u'Data de criação do Município', + label=_(u'Data de criação do Município'), initial=self.instance.municipio.data_criacao, required=False) diff --git a/sigi/apps/diagnosticos/models.py b/sigi/apps/diagnosticos/models.py index f26160c..3f6ed71 100644 --- a/sigi/apps/diagnosticos/models.py +++ b/sigi/apps/diagnosticos/models.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- from datetime import datetime from django.db import models +from django.utils.translation import ugettext as _ +from eav.models import BaseChoice, BaseEntity, BaseSchema, BaseAttribute -from sigi.apps.casas.models import CasaLegislativa from sigi.apps.utils import SearchField from sigi.apps.utils.email import enviar_email -from eav.models import BaseChoice, BaseEntity, BaseSchema, BaseAttribute class Diagnostico(BaseEntity): @@ -15,7 +15,7 @@ class Diagnostico(BaseEntity): """ casa_legislativa = models.ForeignKey( 'casas.CasaLegislativa', - verbose_name='Casa Legislativa') + verbose_name=_('Casa Legislativa')) # campo de busca em caixa baixa e sem acento search_text = SearchField(field_names=['casa_legislativa']) @@ -39,10 +39,10 @@ class Diagnostico(BaseEntity): ) responsavel = models.ForeignKey('servidores.Servidor', - verbose_name=u'responsável') + verbose_name=_(u'responsável')) class Meta: - verbose_name, verbose_name_plural = u'diagnóstico', u'diagnósticos' + verbose_name, verbose_name_plural = _(u'diagnóstico'), _(u'diagnósticos') @property def membros(self): @@ -85,7 +85,7 @@ class Diagnostico(BaseEntity): * host - O Host do sistema, para ser usado na construção do endereço do diagnóstico """ - enviar_email(from_email, u"Diagnóstico publicado", + enviar_email(from_email, _(u"Diagnóstico publicado"), 'diagnosticos/email_diagnostico_publicado.txt', { 'responsavel': self.responsavel.nome_completo, @@ -93,7 +93,7 @@ class Diagnostico(BaseEntity): 'data_diagnostico': self.data_visita_inicio, 'host': host, 'url_diagnostico': self.get_absolute_url(), - 'status': u"Publicado", + 'status': _(u"Publicado"), }) def email_diagnostico_alterado(self, from_email, host): @@ -103,7 +103,7 @@ class Diagnostico(BaseEntity): * host - O Host do sistema, para ser usado na construção do endereço do diagnóstico """ - enviar_email(from_email, u"Diagnóstico alterado", + enviar_email(from_email, _(u"Diagnóstico alterado"), 'diagnosticos/email_diagnostico_alterado.txt', { 'servidor': self.responsavel.nome_completo, @@ -111,7 +111,7 @@ class Diagnostico(BaseEntity): 'data_diagnostico': self.data_visita_inicio, 'host': host, 'url_diagnostico': self.get_absolute_url(), - 'status': "Alterado", + 'status': _("Alterado"), }) def get_schemata(self, category=None, *args, **kwargs): @@ -188,7 +188,7 @@ class Pergunta(BaseSchema): class Meta: ordering = ('title',) - verbose_name, verbose_name_plural = 'pergunta', 'perguntas' + verbose_name, verbose_name_plural = _('pergunta'), _('perguntas') class Escolha(BaseChoice): @@ -197,14 +197,14 @@ class Escolha(BaseChoice): cadastradas neste modelo """ schema = models.ForeignKey(Pergunta, - related_name='choices', verbose_name='pergunta') + related_name='choices', verbose_name=_('pergunta')) schema_to_open = models.ForeignKey(Pergunta, related_name='', - verbose_name='pergunta para abrir', blank=True, null=True) + verbose_name=_('pergunta para abrir'), blank=True, null=True) ordem = models.PositiveIntegerField(blank=True, null=True) class Meta: ordering = ('schema', 'ordem') - verbose_name, verbose_name_plural = 'escolha', 'escolhas' + verbose_name, verbose_name_plural = _('escolha'), _('escolhas') class Resposta(BaseAttribute): @@ -213,12 +213,12 @@ class Resposta(BaseAttribute): de um diagnosico """ schema = models.ForeignKey(Pergunta, related_name='attrs', - verbose_name='pergunta') - choice = models.ForeignKey(Escolha, verbose_name='escolha', + verbose_name=_('pergunta')) + choice = models.ForeignKey(Escolha, verbose_name=_('escolha'), blank=True, null=True) class Meta: - verbose_name, verbose_name_plural = 'resposta', 'respostas' + verbose_name, verbose_name_plural = _('resposta'), _('respostas') class Equipe(models.Model): @@ -229,7 +229,7 @@ class Equipe(models.Model): membro = models.ForeignKey('servidores.Servidor') class Meta: - verbose_name, verbose_name_plural = u'equipe', u'equipe' + verbose_name, verbose_name_plural = _(u'equipe'), _(u'equipe') def __unicode__(self): return self.membro.__unicode__() @@ -242,8 +242,8 @@ class Anexo(models.Model): """ diagnostico = models.ForeignKey(Diagnostico, verbose_name=u'diagnóstico') arquivo = models.FileField(upload_to='apps/diagnostico/anexo/arquivo',) - descricao = models.CharField('descrição', max_length='70') - data_pub = models.DateTimeField('data da publicação do anexo', + descricao = models.CharField(_('descrição'), max_length='70') + data_pub = models.DateTimeField(_('data da publicação do anexo'), default=datetime.now) class Meta: diff --git a/sigi/apps/diagnosticos/views.py b/sigi/apps/diagnosticos/views.py index 7e2dac3..cb45a1b 100644 --- a/sigi/apps/diagnosticos/views.py +++ b/sigi/apps/diagnosticos/views.py @@ -1,21 +1,21 @@ # -*- coding: utf-8 -*- - +import json as simplejson # XXX trocar isso por simplesmente import json e refatorar o codigo from itertools import cycle from django.http import HttpResponse -import json as simplejson # XXX trocar isso por simplesmente import json e refatorar o codigo from django.shortcuts import render_to_response, get_object_or_404 from django.template import RequestContext +from django.utils.translation import ugettext as _ from django.views.decorators.cache import never_cache -from sigi.apps.diagnosticos.urls import LOGIN_REDIRECT_URL -from sigi.apps.utils.decorators import login_required -from sigi.apps.diagnosticos.decorators import validate_diagnostico -from sigi.apps.diagnosticos.models import Diagnostico, Categoria, Pergunta from sigi.apps.casas.models import Funcionario +from sigi.apps.contatos.models import Telefone +from sigi.apps.diagnosticos.decorators import validate_diagnostico from sigi.apps.diagnosticos.forms import (DiagnosticoMobileForm, CasaLegislativaMobileForm, FuncionariosMobileForm) -from sigi.apps.contatos.models import Telefone +from sigi.apps.diagnosticos.models import Diagnostico, Categoria, Pergunta +from sigi.apps.diagnosticos.urls import LOGIN_REDIRECT_URL +from sigi.apps.utils.decorators import login_required from sigi.shortcuts import render_to_pdf @@ -186,7 +186,9 @@ def categoria_contatos(request, id_diagnostico): for form_telefones in form.telefones.forms: tel = form_telefones.instance if tel._state.adding and tel.numero != '': - s += '

Novo telefone %s: %s

' % (form_telefones.instance.get_tipo_display(), form_telefones.instance.numero) + s += _('

Novo telefone %(type)s: %(number)s

') % dict( + type=form_telefones.instance.get_tipo_display(), + number=form_telefones.instance.numero) resposta['clean'] += ('id_' + form_telefones.prefix + '-numero',) if s != '': resposta['fones'][form.prefix] = s @@ -205,8 +207,9 @@ def categoria_contatos(request, id_diagnostico): Telefone.objects.get(pk=form_telefones.fields['id'].initial).delete() if form.prefix not in resposta['fones']: resposta['fones'][form.prefix] = '' - resposta['fones'][form.prefix] += u'

O telefone %s %s foi excluído da base de dados

' % ( - form_telefones.instance.get_tipo_display(), form_telefones.instance.numero) + resposta['fones'][form.prefix] += _(u'

O telefone %(type)s %(number)s foi excluído da base de dados

') % dict( + type=form_telefones.instance.get_tipo_display(), + number=form_telefones.instance.numero) else: for key, value in form_telefones.errors.iteritems(): key = form_telefones.prefix + "-id-errors" diff --git a/sigi/apps/financeiro/models.py b/sigi/apps/financeiro/models.py index 0b7d70b..f9dcf91 100644 --- a/sigi/apps/financeiro/models.py +++ b/sigi/apps/financeiro/models.py @@ -1,18 +1,20 @@ # -*- coding: utf-8 -*- from django.db import models +from django.utils.translation import ugettext as _ + from sigi.apps.convenios.models import Projeto class Desembolso(models.Model): - projeto = models.ForeignKey(Projeto, verbose_name=u'Projeto') - descricao = models.CharField(u'Descrição da despesa', max_length=100) - data = models.DateField(u'Data do desembolso') - valor_reais = models.DecimalField(u'Valor em R$', max_digits=18, decimal_places=2) - valor_dolar = models.DecimalField(u'Valor em US$', max_digits=18, decimal_places=2) + projeto = models.ForeignKey(Projeto, verbose_name=_(u'Projeto')) + descricao = models.CharField(_(u'Descrição da despesa'), max_length=100) + data = models.DateField(_(u'Data do desembolso')) + valor_reais = models.DecimalField(_(u'Valor em R$'), max_digits=18, decimal_places=2) + valor_dolar = models.DecimalField(_(u'Valor em US$'), max_digits=18, decimal_places=2) class Meta: - verbose_name = 'Desembolso' - verbose_name_plural = 'Desembolsos' + verbose_name = _('Desembolso') + verbose_name_plural = _('Desembolsos') def __unicode__(self): return u"%s (US$ %s)" % (self.descricao, self.valor_dolar) diff --git a/sigi/apps/inventario/models.py b/sigi/apps/inventario/models.py index 396b522..ecda67a 100644 --- a/sigi/apps/inventario/models.py +++ b/sigi/apps/inventario/models.py @@ -1,19 +1,20 @@ # -*- coding: utf-8 -*- -from django.db import models from django.contrib.contenttypes import generic +from django.db import models +from django.utils.translation import ugettext as _ class Fornecedor(models.Model): nome = models.CharField(max_length=40) nome.alphabetic_filter = True - email = models.EmailField('e-mail', blank=True) - pagina_web = models.URLField('página web', blank=True) + email = models.EmailField(_('e-mail'), blank=True) + pagina_web = models.URLField(_('página web'), blank=True) telefones = generic.GenericRelation('contatos.Telefone') contatos = generic.GenericRelation('contatos.Contato') class Meta: ordering = ('nome',) - verbose_name_plural = 'fornecedores' + verbose_name_plural = _('fornecedores') def __unicode__(self): return self.nome @@ -35,8 +36,8 @@ class TipoEquipamento(models.Model): class Meta: ordering = ('tipo',) - verbose_name = 'tipo de equipamento' - verbose_name_plural = 'tipos de equipamentos' + verbose_name = _('tipo de equipamento') + verbose_name_plural = _('tipos de equipamentos') def __unicode__(self): return self.tipo @@ -45,14 +46,14 @@ class TipoEquipamento(models.Model): class ModeloEquipamento(models.Model): tipo = models.ForeignKey( TipoEquipamento, - verbose_name='tipo de equipamento' + verbose_name=_('tipo de equipamento') ) modelo = models.CharField(max_length=30) class Meta: ordering = ('modelo',) - verbose_name = 'modelo de equipamento' - verbose_name_plural = 'modelos de equipamentos' + verbose_name = _('modelo de equipamento') + verbose_name_plural = _('modelos de equipamentos') def __unicode__(self): return self.modelo @@ -75,20 +76,20 @@ class Bem(models.Model): equipamento = models.ForeignKey(Equipamento) fornecedor = models.ForeignKey(Fornecedor) num_serie = models.CharField( - 'número de série', + _('número de série'), max_length=64, - help_text='Número fornecido pelo fabricante.', + help_text=_('Número fornecido pelo fabricante.'), unique=True ) recebido_por = models.CharField( max_length=64, blank=True, - help_text='Nome de quem recebeu o equipamento.' + help_text=_('Nome de quem recebeu o equipamento.') ) - observacoes = models.TextField('observações', blank=True) + observacoes = models.TextField(_('observações'), blank=True) class Meta: - verbose_name_plural = 'bens' + verbose_name_plural = _('bens') def __unicode__(self): return unicode('%s (%s)') % (self.equipamento, self.casa_legislativa) diff --git a/sigi/apps/mesas/admin.py b/sigi/apps/mesas/admin.py index a66aae1..de82f82 100644 --- a/sigi/apps/mesas/admin.py +++ b/sigi/apps/mesas/admin.py @@ -2,6 +2,7 @@ from django.contrib import admin from django.http import HttpResponse from django.utils.html import escape +from django.utils.translation import ugettext as _ from sigi.apps.mesas.models import (Legislatura, Coligacao, ComposicaoColigacao, SessaoLegislativa, MesaDiretora, Cargo, @@ -26,7 +27,7 @@ class LegislaturaAdmin(BaseModelAdmin): def uf(self, obj): return obj.casa_legislativa.municipio.uf.sigla - uf.short_description = 'UF' + uf.short_description = _('UF') uf.admin_order_field = 'casa_legislativa__municipio__uf' def lookup_allowed(self, lookup, value): diff --git a/sigi/apps/mesas/models.py b/sigi/apps/mesas/models.py index 957e26f..69ed4fa 100644 --- a/sigi/apps/mesas/models.py +++ b/sigi/apps/mesas/models.py @@ -1,15 +1,17 @@ # coding: utf-8 from django.db import models +from django.utils.translation import ugettext as _ + from sigi.apps.casas.models import CasaLegislativa class Legislatura(models.Model): casa_legislativa = models.ForeignKey(CasaLegislativa) - numero = models.PositiveSmallIntegerField(u'número legislatura') - data_inicio = models.DateField(u'início') - data_fim = models.DateField(u'fim') - data_eleicao = models.DateField(u'data da eleição') - total_parlamentares = models.PositiveIntegerField(u"Total de parlamentares") + numero = models.PositiveSmallIntegerField(_(u'número legislatura')) + data_inicio = models.DateField(_(u'início')) + data_fim = models.DateField(_(u'fim')) + data_eleicao = models.DateField(_(u'data da eleição')) + total_parlamentares = models.PositiveIntegerField(_(u"Total de parlamentares")) casa_legislativa.convenio_uf_filter = True casa_legislativa.convenio_cl_tipo_filter = True @@ -19,34 +21,34 @@ class Legislatura(models.Model): ordering = ['casa_legislativa__municipio__uf__sigla', '-data_inicio'] def __unicode__(self): - return u"%sª legislatura da %s (%s-%s)" % (self.numero, self.casa_legislativa.__unicode__(), self.data_inicio.year, self.data_fim.year) + return _(u"%sª legislatura da %s (%s-%s)") % (self.numero, self.casa_legislativa.__unicode__(), self.data_inicio.year, self.data_fim.year) class Coligacao(models.Model): nome = models.CharField(max_length=50) legislatura = models.ForeignKey(Legislatura) numero_votos = models.PositiveIntegerField( - u'número de votos', + _(u'número de votos'), blank=True, null=True, ) class Meta: ordering = ('legislatura', 'nome') - verbose_name = 'coligação' - verbose_name_plural = 'coligações' + verbose_name = _('coligação') + verbose_name_plural = _('coligações') def __unicode__(self): return self.nome class ComposicaoColigacao(models.Model): - coligacao = models.ForeignKey(Coligacao, verbose_name='coligação') + coligacao = models.ForeignKey(Coligacao, verbose_name=_('coligação')) partido = models.ForeignKey('parlamentares.Partido') class Meta: - verbose_name = 'composição da coligação' - verbose_name_plural = 'composições das coligações' + verbose_name = _('composição da coligação') + verbose_name_plural = _('composições das coligações') def __unicode__(self): return str(self.id) @@ -54,13 +56,13 @@ class ComposicaoColigacao(models.Model): class SessaoLegislativa(models.Model): SESSAO_CHOICES = ( - ('O', 'Ordinária'), - ('E', 'Extraordinária'), + ('O', _('Ordinária')), + ('E', _('Extraordinária')), ) - numero = models.PositiveSmallIntegerField(u'número da sessão', unique=True) + numero = models.PositiveSmallIntegerField(_(u'número da sessão'), unique=True) mesa_diretora = models.ForeignKey( 'MesaDiretora', - verbose_name='Mesa Diretora' + verbose_name=_('Mesa Diretora') ) legislatura = models.ForeignKey(Legislatura) tipo = models.CharField( @@ -68,23 +70,23 @@ class SessaoLegislativa(models.Model): choices=SESSAO_CHOICES, default='O' ) - data_inicio = models.DateField(u'início') - data_fim = models.DateField('fim') + data_inicio = models.DateField(_(u'início')) + data_fim = models.DateField(_('fim')) data_inicio_intervalo = models.DateField( - u'início de intervalo', + _(u'início de intervalo'), blank=True, null=True ) data_fim_intervalo = models.DateField( - 'fim de intervalo', + _('fim de intervalo'), blank=True, null=True ) class Meta: ordering = ('legislatura', 'numero') - verbose_name = 'Sessão Legislativa' - verbose_name_plural = 'Sessões Legislativas' + verbose_name = _('Sessão Legislativa') + verbose_name_plural = _('Sessões Legislativas') def __unicode__(self): return str(self.numero) @@ -93,19 +95,19 @@ class SessaoLegislativa(models.Model): class MesaDiretora(models.Model): casa_legislativa = models.ForeignKey( 'casas.CasaLegislativa', - verbose_name='Casa Legislativa' + verbose_name=_('Casa Legislativa') ) class Meta: - verbose_name = 'Mesa Diretora' - verbose_name_plural = 'Mesas Diretoras' + verbose_name = _('Mesa Diretora') + verbose_name_plural = _('Mesas Diretoras') def __unicode__(self): - return 'Mesa Diretora da %s' % unicode(self.casa_legislativa) + return _('Mesa Diretora da %s') % unicode(self.casa_legislativa) class Cargo(models.Model): - descricao = models.CharField(u'descrição', max_length=30) + descricao = models.CharField(_(u'descrição'), max_length=30) class Meta: ordering = ('descricao',) @@ -122,8 +124,8 @@ class MembroMesaDiretora(models.Model): class Meta: ordering = ('parlamentar',) unique_together = ('cargo', 'mesa_diretora') - verbose_name = 'membro de Mesa Diretora' - verbose_name_plural = 'membros de Mesas Diretora' + verbose_name = _('membro de Mesa Diretora') + verbose_name_plural = _('membros de Mesas Diretora') def __unicode__(self): return '%s (%s)' % (unicode(self.parlamentar), unicode(self.cargo)) diff --git a/sigi/apps/metas/admin.py b/sigi/apps/metas/admin.py index 502770b..37c0941 100644 --- a/sigi/apps/metas/admin.py +++ b/sigi/apps/metas/admin.py @@ -1,9 +1,11 @@ # -*- coding: utf-8 -*- from django.contrib import admin +from django.utils.translation import ugettext as _ from sigi.apps.metas.models import PlanoDiretor from sigi.apps.utils.base_admin import BaseModelAdmin + class MetaAdmin(BaseModelAdmin): list_display = ('projeto', 'titulo', 'data_inicio', 'data_fim', 'valor_meta', 'valor_executado', 'percentual_concluido',) fields = ('projeto', 'titulo', 'descricao', 'data_inicio', 'data_fim', 'algoritmo', 'valor_meta',) @@ -18,7 +20,7 @@ class PlanoDiretorAdmin(BaseModelAdmin): def get_uf(self, obj): return obj.casa_legislativa.municipio.uf.nome - get_uf.short_description = u"UF" + get_uf.short_description = _(u"UF") get_uf.admin_order_field = 'casa_legislativa__municipio__uf__nome' def lookup_allowed(self, lookup, value): diff --git a/sigi/apps/metas/management/commands/gera_map_data.py b/sigi/apps/metas/management/commands/gera_map_data.py index 4b9e687..a5541b2 100644 --- a/sigi/apps/metas/management/commands/gera_map_data.py +++ b/sigi/apps/metas/management/commands/gera_map_data.py @@ -22,11 +22,13 @@ # 02110-1301, USA. # from django.core.management.base import BaseCommand +from django.utils.translation import ugettext as _ + from sigi.apps.metas.views import gera_map_data_file class Command(BaseCommand): - help = u'Gera arquivo de dados de plotagem do mapa de atuação do Interlegis.' + help = _(u'Gera arquivo de dados de plotagem do mapa de atuação do Interlegis.') def handle(self, *args, **options): result = gera_map_data_file(cronjob=True) diff --git a/sigi/apps/metas/models.py b/sigi/apps/metas/models.py index e7609dd..32a9713 100644 --- a/sigi/apps/metas/models.py +++ b/sigi/apps/metas/models.py @@ -1,32 +1,34 @@ # -*- coding: utf-8 -*- -from datetime import date, datetime +from datetime import date from django.db import models +from django.utils.translation import ugettext as _ + +from sigi.apps.casas.models import CasaLegislativa from sigi.apps.convenios.models import Projeto, Convenio from sigi.apps.diagnosticos.models import Diagnostico -from sigi.apps.casas.models import CasaLegislativa from sigi.apps.financeiro.models import Desembolso class Meta(models.Model): ALGORITMO_CHOICES = ( - ('SUM_GASTOS', u'Soma dos desembolsos'), - ('COUNT_EQUI', u'Quantidade de casas equipadas'), - ('COUNT_ADER', u'Quantidade de casas aderidas'), - ('COUNT_DIAG', u'Quantidade de casas diagnosticadas'), - ('COUNT_PDIR', u'Quantidade de planos diretores'), - ('COUNT_CONV', u'Quantidade de casas conveniadas'), + ('SUM_GASTOS', _(u'Soma dos desembolsos')), + ('COUNT_EQUI', _(u'Quantidade de casas equipadas')), + ('COUNT_ADER', _(u'Quantidade de casas aderidas')), + ('COUNT_DIAG', _(u'Quantidade de casas diagnosticadas')), + ('COUNT_PDIR', _(u'Quantidade de planos diretores')), + ('COUNT_CONV', _(u'Quantidade de casas conveniadas')), ) - projeto = models.ForeignKey(Projeto, verbose_name=u'Projeto', help_text=u'Projeto ao qual a meta se refere') - titulo = models.CharField(u'Título', max_length=40, help_text=u'Título da meta que aparecerá no dashboard') - descricao = models.TextField(u'Descrição') - data_inicio = models.DateField(u'Data inicial', help_text=u'Início do período de cômputo da meta') - data_fim = models.DateField(u'Data final', help_text=u'Prazo final para cumprimento da meta') - algoritmo = models.CharField(u'Algoritmo de cálculo', max_length=10, choices=ALGORITMO_CHOICES) - valor_meta = models.FloatField(u'Valor da meta', help_text=u'Valor que deve ser atingido até o prazo final da meta') + projeto = models.ForeignKey(Projeto, verbose_name=_(u'Projeto'), help_text=_(u'Projeto ao qual a meta se refere')) + titulo = models.CharField(_(u'Título'), max_length=40, help_text=_(u'Título da meta que aparecerá no dashboard')) + descricao = models.TextField(_(u'Descrição')) + data_inicio = models.DateField(_(u'Data inicial'), help_text=_(u'Início do período de cômputo da meta')) + data_fim = models.DateField(_(u'Data final'), help_text=_(u'Prazo final para cumprimento da meta')) + algoritmo = models.CharField(_(u'Algoritmo de cálculo'), max_length=10, choices=ALGORITMO_CHOICES) + valor_meta = models.FloatField(_(u'Valor da meta'), help_text=_(u'Valor que deve ser atingido até o prazo final da meta')) class Meta: - verbose_name = 'Meta BID' - verbose_name_plural = 'Metas BID' + verbose_name = _('Meta BID') + verbose_name_plural = _('Metas BID') def __unicode__(self): return self.titulo @@ -109,19 +111,19 @@ class Meta(models.Model): class PlanoDiretor(models.Model): STATUS_CHOICE = ( - ('E', u'Entregue'), - ('I', u'Implantado'), + ('E', _(u'Entregue')), + ('I', _(u'Implantado')), ) - projeto = models.ForeignKey(Projeto, verbose_name=u'Projeto') - casa_legislativa = models.ForeignKey(CasaLegislativa, verbose_name=u'Casa Legislativa') + projeto = models.ForeignKey(Projeto, verbose_name=_(u'Projeto')) + casa_legislativa = models.ForeignKey(CasaLegislativa, verbose_name=_(u'Casa Legislativa')) casa_legislativa.casa_uf_filter = True - status = models.CharField(u'Status', max_length=1, choices=STATUS_CHOICE, default='E') - data_entrega = models.DateField(u'Data de entrega', blank=True, null=True) - data_implantacao = models.DateField(u'Data de implantação', blank=True, null=True) + status = models.CharField(_(u'Status'), max_length=1, choices=STATUS_CHOICE, default='E') + data_entrega = models.DateField(_(u'Data de entrega'), blank=True, null=True) + data_implantacao = models.DateField(_(u'Data de implantação'), blank=True, null=True) class Meta: - verbose_name = 'Plano Diretor' - verbose_name_plural = 'Planos Diretores' + verbose_name = _('Plano Diretor') + verbose_name_plural = _('Planos Diretores') def __unicode__(self): return self.casa_legislativa.nome diff --git a/sigi/apps/metas/templatetags/mapa_tags.py b/sigi/apps/metas/templatetags/mapa_tags.py index 4357a16..1ef0ebe 100644 --- a/sigi/apps/metas/templatetags/mapa_tags.py +++ b/sigi/apps/metas/templatetags/mapa_tags.py @@ -1,9 +1,11 @@ # -*- coding: utf-8 -*- - from django import template from django.utils.safestring import mark_safe +from django.utils.translation import ugettext as _ + from sigi.apps.casas.models import CasaLegislativa + register = template.Library() @@ -15,21 +17,21 @@ def descricao_servicos(value): result = "" for sv in value.servico_set.all(): - result += u'
  • %s ativado em %s
  • ' % (sv.tipo_servico.nome, sv.data_ativacao.strftime('%d/%m/%Y')) + result += _(u'
  • %s ativado em %s
  • ') % (sv.tipo_servico.nome, sv.data_ativacao.strftime('%d/%m/%Y')) for cv in value.convenio_set.all(): if (cv.data_retorno_assinatura is None) and (cv.equipada and cv.data_termo_aceite is not None): - result += u"
  • Equipada em %s pelo %s
  • " % (cv.data_termo_aceite.strftime('%d/%m/%Y'), cv.projeto.sigla) + result += _(u"
  • Equipada em %s pelo %s
  • ") % (cv.data_termo_aceite.strftime('%d/%m/%Y'), cv.projeto.sigla) if (cv.data_retorno_assinatura is not None) and not (cv.equipada and cv.data_termo_aceite is not None): - result += u"
  • Conveniada ao %s em %s
  • " % (cv.projeto.sigla, cv.data_retorno_assinatura.strftime('%d/%m/%Y')) + result += _(u"
  • Conveniada ao %s em %s
  • ") % (cv.projeto.sigla, cv.data_retorno_assinatura.strftime('%d/%m/%Y')) if (cv.data_retorno_assinatura is not None) and (cv.equipada and cv.data_termo_aceite is not None): - result += u"
  • Conveniada ao %s em %s e equipada em %s
  • " % (cv.projeto.sigla, cv.data_retorno_assinatura.strftime('%d/%m/%Y'), cv.data_termo_aceite.strftime('%d/%m/%Y')) + result += _(u"
  • Conveniada ao %s em %s e equipada em %s
  • ") % (cv.projeto.sigla, cv.data_retorno_assinatura.strftime('%d/%m/%Y'), cv.data_termo_aceite.strftime('%d/%m/%Y')) for dg in value.diagnostico_set.all(): - result += u'
  • Diagnosticada no período de %s a %s
  • ' % (dg.data_visita_inicio.strftime('%d/%m/%Y') if dg.data_visita_inicio - else u"<< sem data inicial >>", + result += _(u'
  • Diagnosticada no período de %s a %s
  • ') % (dg.data_visita_inicio.strftime('%d/%m/%Y') if dg.data_visita_inicio + else _(u"<< sem data inicial >>"), dg.data_visita_fim.strftime('%d/%m/%Y') if dg.data_visita_fim - else u"<< sem data final >>") + else _(u"<< sem data final >>")) return mark_safe(result) descricao_servicos.is_safe = True diff --git a/sigi/apps/metas/views.py b/sigi/apps/metas/views.py index f6e0cd7..efdc747 100644 --- a/sigi/apps/metas/views.py +++ b/sigi/apps/metas/views.py @@ -1,27 +1,29 @@ # -*- coding: utf-8 -*- import csv +import json as simplejson # XXX trocar isso por simplesmente import json e refatorar o codigo import os +from functools import reduce -from django.http import HttpResponse +from django.contrib.auth.decorators import login_required from django.core.exceptions import PermissionDenied -import json as simplejson # XXX trocar isso por simplesmente import json e refatorar o codigo -from django.utils.datastructures import SortedDict +from django.db.models import Q +from django.db.models.aggregates import Sum +from django.http import HttpResponse from django.shortcuts import render_to_response from django.template import RequestContext -from django.db.models import Q +from django.utils.datastructures import SortedDict +from django.utils.translation import ugettext as _ from django.views.decorators.cache import cache_page -from django.db.models.aggregates import Sum -from django.contrib.auth.decorators import user_passes_test, login_required -from sigi.settings import MEDIA_ROOT, STATIC_URL -from sigi.shortcuts import render_to_pdf -from sigi.apps.servicos.models import TipoServico, Servico -from sigi.apps.convenios.models import Projeto, Convenio -from sigi.apps.contatos.models import UnidadeFederativa + from sigi.apps.casas.models import CasaLegislativa -from sigi.apps.utils import to_ascii +from sigi.apps.contatos.models import UnidadeFederativa +from sigi.apps.convenios.models import Projeto from sigi.apps.financeiro.models import Desembolso -from sigi.apps.metas.templatetags.mapa_tags import descricao_servicos -from functools import reduce +from sigi.apps.servicos.models import TipoServico +from sigi.apps.utils import to_ascii +from sigi.settings import MEDIA_ROOT, STATIC_URL +from sigi.shortcuts import render_to_pdf + JSON_FILE_NAME = os.path.join(MEDIA_ROOT, 'apps/metas/map_data.json') @@ -308,28 +310,30 @@ def gera_map_data_file(cronjob=False): } for sv in c.servico_set.all(): - casa['info'].append(u"%s ativado em %s link" % ( - sv.tipo_servico.nome, sv.data_ativacao.strftime('%d/%m/%Y') if sv.data_ativacao else - u'', sv.url, STATIC_URL)) + casa['info'].append( + _(u"%(name)s ativado em %(date)s") % dict( + name=sv.tipo_servico.nome, + date=sv.data_ativacao.strftime('%d/%m/%Y') if sv.data_ativacao else _(u'')) + + " link" % (sv.url, STATIC_URL)) casa['seit'].append(sv.tipo_servico.sigla) for cv in c.convenio_set.all(): if (cv.data_retorno_assinatura is None) and (cv.equipada and cv.data_termo_aceite is not None): - casa['info'].append(u"Equipada em %s pelo %s" % (cv.data_termo_aceite.strftime('%d/%m/%Y'), cv.projeto.sigla)) + casa['info'].append(_(u"Equipada em %s pelo %s") % (cv.data_termo_aceite.strftime('%d/%m/%Y'), cv.projeto.sigla)) casa['equipadas'].append(cv.projeto.sigla) if (cv.data_retorno_assinatura is not None) and not (cv.equipada and cv.data_termo_aceite is not None): - casa['info'].append(u"Conveniada ao %s em %s" % (cv.projeto.sigla, cv.data_retorno_assinatura.strftime('%d/%m/%Y'))) + casa['info'].append(_(u"Conveniada ao %s em %s") % (cv.projeto.sigla, cv.data_retorno_assinatura.strftime('%d/%m/%Y'))) casa['convenios'].append(cv.projeto.sigla) if (cv.data_retorno_assinatura is not None) and (cv.equipada and cv.data_termo_aceite is not None): - casa['info'].append(u"Conveniada ao %s em %s e equipada em %s" % (cv.projeto.sigla, cv.data_retorno_assinatura.strftime('%d/%m/%Y'), cv.data_termo_aceite.strftime('%d/%m/%Y'))) + casa['info'].append(_(u"Conveniada ao %s em %s e equipada em %s") % (cv.projeto.sigla, cv.data_retorno_assinatura.strftime('%d/%m/%Y'), cv.data_termo_aceite.strftime('%d/%m/%Y'))) casa['equipadas'].append(cv.projeto.sigla) casa['convenios'].append(cv.projeto.sigla) for dg in c.diagnostico_set.all(): casa['diagnosticos'].append('P' if dg.publicado else 'A') - casa['info'].append(u'Diagnosticada no período de %s a %s' % (dg.data_visita_inicio.strftime('%d/%m/%Y') if - dg.data_visita_inicio is not None else u"", - dg.data_visita_fim.strftime('%d/%m/%Y') if dg.data_visita_fim else u"")) + casa['info'].append(_(u'Diagnosticada no período de %s a %s') % (dg.data_visita_inicio.strftime('%d/%m/%Y') if + dg.data_visita_inicio is not None else _(u""), + dg.data_visita_fim.strftime('%d/%m/%Y') if dg.data_visita_fim else _(u""))) casa['info'] = "
    ".join(casa['info']) @@ -348,6 +352,6 @@ def gera_map_data_file(cronjob=False): pass # ... ou os dados poderão ser usados de qualquer forma if cronjob: - return "Arquivo %s gerado em %d segundos" % (JSON_FILE_NAME, time.time() - start) + return _("Arquivo %s gerado em %d segundos") % (JSON_FILE_NAME, time.time() - start) return json_data diff --git a/sigi/apps/ocorrencias/admin.py b/sigi/apps/ocorrencias/admin.py index 035dad7..82d98bd 100644 --- a/sigi/apps/ocorrencias/admin.py +++ b/sigi/apps/ocorrencias/admin.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from django.contrib import admin from django.contrib.admin.views.main import ChangeList +from django.utils.translation import ugettext as _ from filters import OcorrenciaListFilter from sigi.apps.ocorrencias.models import Ocorrencia, Comentario, Anexo, Categoria, TipoContato @@ -13,7 +14,7 @@ class ComentarioViewInline(admin.TabularInline): extra = 0 max_num = 0 can_delete = False - verbose_name, verbose_name_plural = u"Comentário anterior", u"Comentários anteriores" + verbose_name, verbose_name_plural = _(u"Comentário anterior"), _(u"Comentários anteriores") fields = ('usuario', 'data_criacao', 'novo_status', 'encaminhar_setor', 'descricao', ) readonly_fields = ('novo_status', 'encaminhar_setor', 'descricao', 'data_criacao', 'usuario',) @@ -21,7 +22,7 @@ class ComentarioViewInline(admin.TabularInline): class ComentarioInline(admin.StackedInline): model = Comentario extra = 1 - verbose_name, verbose_name_plural = u"Comentário novo", u"Comentários novos" + verbose_name, verbose_name_plural = _(u"Comentário novo"), _(u"Comentários novos") fieldsets = ((None, {'fields': (('novo_status', 'encaminhar_setor',), 'descricao', )}),) def get_queryset(self, queryset): @@ -114,12 +115,12 @@ class OcorrenciaAdmin(BaseModelAdmin): def get_uf(self, obj): return obj.casa_legislativa.municipio.uf - get_uf.short_description = u'UF' + get_uf.short_description = _(u'UF') get_uf.admin_order_field = 'casa_legislativa__municipio__uf' def get_municipio(self, obj): return obj.casa_legislativa.municipio.nome - get_municipio.short_description = u'Município' + get_municipio.short_description = _(u'Município') get_municipio.admin_order_field = 'casa_legislativa__municipio__nome' diff --git a/sigi/apps/ocorrencias/filters.py b/sigi/apps/ocorrencias/filters.py index 1567526..533d373 100644 --- a/sigi/apps/ocorrencias/filters.py +++ b/sigi/apps/ocorrencias/filters.py @@ -1,17 +1,19 @@ # -*- coding: utf-8 -*- from django.contrib import admin +from django.utils.translation import ugettext as _ + from sigi.apps.servidores.models import Servidor class OcorrenciaListFilter(admin.SimpleListFilter): - title = u'Relacionadas a Mim' + title = _(u'Relacionadas a Mim') parameter_name = 'minhas' def lookups(self, request, model_admin): return ( - ('S', u'Atribuídos ao meu setor'), - ('M', u'Registrados por mim'), + ('S', _(u'Atribuídos ao meu setor')), + ('M', _(u'Registrados por mim')), ) def queryset(self, request, queryset): diff --git a/sigi/apps/ocorrencias/models.py b/sigi/apps/ocorrencias/models.py index f60cc45..538516c 100644 --- a/sigi/apps/ocorrencias/models.py +++ b/sigi/apps/ocorrencias/models.py @@ -1,24 +1,25 @@ # -*- coding: utf-8 -*- from django.db import models +from django.utils.translation import ugettext as _ class Categoria(models.Model): - nome = models.CharField(u"Categoria", max_length=50) - descricao = models.TextField(u'descrição', blank=True, null=True) - setor_responsavel = models.ForeignKey('servidores.Servico', verbose_name=u"Setor responsável") + nome = models.CharField(_(u"Categoria"), max_length=50) + descricao = models.TextField(_(u'descrição'), blank=True, null=True) + setor_responsavel = models.ForeignKey('servidores.Servico', verbose_name=_(u"Setor responsável")) class Meta: - verbose_name, verbose_name_plural = u'Categoria', u'Categorias' + verbose_name, verbose_name_plural = _(u'Categoria'), _(u'Categorias') def __unicode__(self): return self.nome class TipoContato(models.Model): - descricao = models.CharField(u"Descrição", max_length=50) + descricao = models.CharField(_(u"Descrição"), max_length=50) class Meta: - verbose_name, verbose_name_plural = u"Tipo de contato", u"Tipos de contato" + verbose_name, verbose_name_plural = _(u"Tipo de contato"), _(u"Tipos de contato") def __unicode__(self): return self.descricao @@ -26,40 +27,40 @@ class TipoContato(models.Model): class Ocorrencia(models.Model): STATUS_CHOICES = ( - (1, u'Aberto'), - (2, u'Reaberto'), - (3, u'Resolvido'), - (4, u'Fechado'), - (5, u'Duplicado'), + (1, _(u'Aberto')), + (2, _(u'Reaberto')), + (3, _(u'Resolvido')), + (4, _(u'Fechado')), + (5, _(u'Duplicado')), ) PRIORITY_CHOICES = ( - (1, u'Altíssimo'), - (2, u'Alto'), - (3, u'Normal'), - (4, u'Baixo'), - (5, u'Baixíssimo'), + (1, _(u'Altíssimo')), + (2, _(u'Alto')), + (3, _(u'Normal')), + (4, _(u'Baixo')), + (5, _(u'Baixíssimo')), ) - casa_legislativa = models.ForeignKey('casas.CasaLegislativa', verbose_name=u'Casa Legislativa') + casa_legislativa = models.ForeignKey('casas.CasaLegislativa', verbose_name=_(u'Casa Legislativa')) casa_legislativa.convenio_uf_filter = True casa_legislativa.convenio_cl_tipo_filter = True - data_criacao = models.DateField(u'Data de criação', null=True, blank=True, auto_now_add=True) - data_modificacao = models.DateField(u'Data de modificação', null=True, blank=True, auto_now=True) - categoria = models.ForeignKey(Categoria, verbose_name=u'Categoria') - tipo_contato = models.ForeignKey(TipoContato, verbose_name=u"Tipo de contato") - assunto = models.CharField(u'Assunto', max_length=200) + data_criacao = models.DateField(_(u'Data de criação'), null=True, blank=True, auto_now_add=True) + data_modificacao = models.DateField(_(u'Data de modificação'), null=True, blank=True, auto_now=True) + categoria = models.ForeignKey(Categoria, verbose_name=_(u'Categoria')) + tipo_contato = models.ForeignKey(TipoContato, verbose_name=_(u"Tipo de contato")) + assunto = models.CharField(_(u'Assunto'), max_length=200) assunto.grupo_filter = True - status = models.IntegerField(u'Status', choices=STATUS_CHOICES, default=1,) + status = models.IntegerField(_(u'Status'), choices=STATUS_CHOICES, default=1,) status.multichoice_filter = True - prioridade = models.IntegerField(u'Prioridade', choices=PRIORITY_CHOICES, default=3, ) - descricao = models.TextField(u'descrição', blank=True,) - resolucao = models.TextField(u'resolução', blank=True,) - servidor_registro = models.ForeignKey('servidores.Servidor', verbose_name=u"Servidor que registrou a ocorrência") - setor_responsavel = models.ForeignKey('servidores.Servico', verbose_name=u"Setor responsável") + prioridade = models.IntegerField(_(u'Prioridade'), choices=PRIORITY_CHOICES, default=3, ) + descricao = models.TextField(_(u'descrição'), blank=True,) + resolucao = models.TextField(_(u'resolução'), blank=True,) + servidor_registro = models.ForeignKey('servidores.Servidor', verbose_name=_(u"Servidor que registrou a ocorrência")) + setor_responsavel = models.ForeignKey('servidores.Servico', verbose_name=_(u"Setor responsável")) class Meta: - verbose_name, verbose_name_plural = u'ocorrência', u'ocorrências' + verbose_name, verbose_name_plural = _(u'ocorrência'), _(u'ocorrências') ordering = ['prioridade', 'data_modificacao', 'data_criacao', ] def __unicode__(self): @@ -67,23 +68,23 @@ class Ocorrencia(models.Model): class Comentario(models.Model): - ocorrencia = models.ForeignKey(Ocorrencia, verbose_name=u'Ocorrência') - data_criacao = models.DateTimeField(u'Data de criação', null=True, blank=True, auto_now_add=True) - descricao = models.TextField(u'Descrição', blank=True, null=True) - usuario = models.ForeignKey('servidores.Servidor', verbose_name=u'Usuário') - novo_status = models.IntegerField(u'Novo status', choices=Ocorrencia.STATUS_CHOICES, blank=True, null=True) - encaminhar_setor = models.ForeignKey('servidores.Servico', verbose_name=u'Encaminhar para setor', blank=True, null=True) + ocorrencia = models.ForeignKey(Ocorrencia, verbose_name=_(u'Ocorrência')) + data_criacao = models.DateTimeField(_(u'Data de criação'), null=True, blank=True, auto_now_add=True) + descricao = models.TextField(_(u'Descrição'), blank=True, null=True) + usuario = models.ForeignKey('servidores.Servidor', verbose_name=_(u'Usuário')) + novo_status = models.IntegerField(_(u'Novo status'), choices=Ocorrencia.STATUS_CHOICES, blank=True, null=True) + encaminhar_setor = models.ForeignKey('servidores.Servico', verbose_name=_(u'Encaminhar para setor'), blank=True, null=True) class Anexo(models.Model): - ocorrencia = models.ForeignKey(Ocorrencia, verbose_name=u'ocorrência') - arquivo = models.FileField(u'Arquivo anexado', upload_to='apps/ocorrencia/anexo/arquivo',) - descricao = models.CharField(u'descrição do anexo', max_length='70') - data_pub = models.DateTimeField(u'data da publicação do anexo', null=True, blank=True, auto_now_add=True) + ocorrencia = models.ForeignKey(Ocorrencia, verbose_name=_(u'ocorrência')) + arquivo = models.FileField(_(u'Arquivo anexado'), upload_to='apps/ocorrencia/anexo/arquivo',) + descricao = models.CharField(_(u'descrição do anexo'), max_length='70') + data_pub = models.DateTimeField(_(u'data da publicação do anexo'), null=True, blank=True, auto_now_add=True) class Meta: ordering = ('-data_pub',) - verbose_name, verbose_name_plural = u'Anexo', u'Anexos' + verbose_name, verbose_name_plural = _(u'Anexo'), _(u'Anexos') def __unicode__(self): return u"%(arquivo_name)s: %(descricao)s" % {'arquivo_name': self.arquivo.name, 'descricao': self.descricao} diff --git a/sigi/apps/parlamentares/admin.py b/sigi/apps/parlamentares/admin.py index 8215b3e..5319bbf 100644 --- a/sigi/apps/parlamentares/admin.py +++ b/sigi/apps/parlamentares/admin.py @@ -2,6 +2,7 @@ from django.contrib import admin from django.contrib.contenttypes import generic from django.http import HttpResponseRedirect +from django.utils.translation import ugettext as _ from sigi.apps.contatos.models import Telefone from sigi.apps.parlamentares.models import Partido, Parlamentar, Mandato @@ -28,7 +29,7 @@ class PartidoAdmin(BaseModelAdmin): class ParlamentarNomeCompletoFilter(AlphabeticFilter): - title = 'Inicial do Nome Completo' + title = _('Inicial do Nome Completo') parameter_name = 'nome_completo' @@ -42,10 +43,10 @@ class ParlamentarAdmin(BaseModelAdmin): (None, { 'fields': ('nome_completo', 'nome_parlamentar', 'sexo'), }), - # ('Endereço', { + # (_('Endereço'), { # 'fields': ('logradouro', 'bairro', 'municipio', 'cep'), # }), - ('Outras informações', { + (_('Outras informações'), { 'fields': ('data_nascimento', 'email', 'pagina_web', 'foto'), }), ) @@ -63,12 +64,12 @@ class ParlamentarAdmin(BaseModelAdmin): q2 = len(request.session['carrinho_parlamentar']) quant = q2 - q1 if quant: - self.message_user(request, "%s Parlamentares adicionados no carrinho" % (quant)) + self.message_user(request, _("%s Parlamentares adicionados no carrinho") % (quant)) else: - self.message_user(request, "Os parlamentares selecionadas já foram adicionadas anteriormente") + self.message_user(request, _("Os parlamentares selecionadas já foram adicionadas anteriormente")) return HttpResponseRedirect('.') - adiciona_parlamentar.short_description = u"Armazenar parlamentar no carrinho para exportar" + adiciona_parlamentar.short_description = _(u"Armazenar parlamentar no carrinho para exportar") class MandatoAdmin(BaseModelAdmin): diff --git a/sigi/apps/parlamentares/models.py b/sigi/apps/parlamentares/models.py index 59cc199..f99ed19 100644 --- a/sigi/apps/parlamentares/models.py +++ b/sigi/apps/parlamentares/models.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- from django.db import models -from django.contrib.contenttypes import generic +from django.utils.translation import ugettext as _ class Partido(models.Model): @@ -16,8 +16,8 @@ class Partido(models.Model): class Parlamentar(models.Model): SEXO_CHOICES = ( - ('M', 'Masculino'), - ('F', 'Feminino'), + ('M', _('Masculino')), + ('F', _('Feminino')), ) nome_completo = models.CharField(max_length=128) nome_parlamentar = models.CharField(max_length=35, blank=True) @@ -34,17 +34,17 @@ class Parlamentar(models.Model): choices=SEXO_CHOICES, ) data_nascimento = models.DateField( - 'data de nascimento', + _('data de nascimento'), blank=True, null=True, ) - email = models.EmailField('e-mail', blank=True) - pagina_web = models.URLField(u'página web', + email = models.EmailField(_('e-mail'), blank=True) + pagina_web = models.URLField(_(u'página web'), blank=True) class Meta: ordering = ('nome_completo',) - verbose_name_plural = 'parlamentares' + verbose_name_plural = _('parlamentares') def __unicode__(self): if self.nome_parlamentar: @@ -54,23 +54,23 @@ class Parlamentar(models.Model): class Mandato(models.Model): SUPLENCIA_CHOICES = ( - ('T', 'Titular'), - ('S', 'Suplente'), + ('T', _('Titular')), + ('S', _('Suplente')), ) parlamentar = models.ForeignKey(Parlamentar) legislatura = models.ForeignKey('mesas.Legislatura') partido = models.ForeignKey(Partido) cargo = models.ForeignKey('mesas.Cargo') - inicio_mandato = models.DateField(u'início de mandato') - fim_mandato = models.DateField('fim de mandato') + inicio_mandato = models.DateField(_(u'início de mandato')) + fim_mandato = models.DateField(_('fim de mandato')) is_afastado = models.BooleanField( - 'afastado', + _('afastado'), default=False, - help_text=u'Marque caso parlamentar não esteja ativo.' + help_text=_(u'Marque caso parlamentar não esteja ativo.') ) # suplencia = models.CharField( -# u'suplência', +# _(u'suplência'), # max_length=1, # choices=SUPLENCIA_CHOICES, # ) diff --git a/sigi/apps/parlamentares/reports.py b/sigi/apps/parlamentares/reports.py index 24c2f68..d33ed8b 100644 --- a/sigi/apps/parlamentares/reports.py +++ b/sigi/apps/parlamentares/reports.py @@ -1,14 +1,13 @@ # -*- coding: utf-8 -*- +from django.utils.translation import ugettext as _ +from geraldo import Report, DetailBand, Label, ObjectValue, ReportGroup, ReportBand, landscape, SubReport, BAND_WIDTH, SystemField +from geraldo.graphics import Image +from reportlab.lib.enums import TA_CENTER from reportlab.lib.pagesizes import A4 from reportlab.lib.units import cm -from reportlab.lib.enums import TA_CENTER, TA_RIGHT -from geraldo import Report, DetailBand, Label, ObjectValue, ManyElements, \ - ReportGroup, ReportBand, landscape, SubReport, BAND_WIDTH, SystemField from sigi.apps.relatorios.reports import ReportDefault -from geraldo.graphics import Image - def string_to_cm(texto): tamanho = 0 @@ -85,7 +84,7 @@ class ParlamentaresLabels(Report): my_elements = [ Label( - text=u'A Sua Excelência o(a) Senhor(a)', + text=_(u'A Sua Excelência o(a) Senhor(a)'), top=(self.start + self.delta) * cm, left=self.y * cm, width=(self.largura_etiqueta - self.y) * cm, ), ObjectValue( @@ -126,32 +125,32 @@ def logradouro_parlamentar(instance): try: return instance.mandato_set.latest('inicio_mandato').legislatura.casa_legislativa.logradouro except: - return u"<>" + return _(u"<>") def bairro_parlamentar(instance): try: return instance.mandato_set.latest('inicio_mandato').legislatura.casa_legislativa.bairro except: - return u"<>" + return _(u"<>") def municipio_parlamentar(instance): try: return instance.mandato_set.latest('inicio_mandato').legislatura.casa_legislativa.municipio except: - return u"<>" + return _(u"<>") def cep_parlamentar(instance): try: return instance.mandato_set.latest('inicio_mandato').legislatura.casa_legislativa.cep except: - return u"<>" + return _(u"<>") class CasasLegislativasReport(ReportDefault): - title = u'Relatório de Casas Legislativas' + title = _(u'Relatório de Casas Legislativas') height = 80 * cm page_size = landscape(A4) @@ -170,10 +169,10 @@ class CasasLegislativasReport(ReportDefault): left=1 * cm, right=1 * cm, top=0.1 * cm, bottom=1 * cm, width=3 * cm, height=3 * cm, ), - Label(text=u"SENADO FEDERAL", top=1 * cm, left=0, width=BAND_WIDTH, + Label(text=_(u"SENADO FEDERAL"), top=1 * cm, left=0, width=BAND_WIDTH, style={'fontName': 'Helvetica-Bold', 'fontSize': 14, 'alignment': TA_CENTER} ), - Label(text=u"SINTER - Secretaria Especial do Interlegis", top=1.5 * cm, left=0, width=BAND_WIDTH, + Label(text=_(u"SINTER - Secretaria Especial do Interlegis"), top=1.5 * cm, left=0, width=BAND_WIDTH, style={'fontName': 'Helvetica-Bold', 'fontSize': 13, 'alignment': TA_CENTER} ), SystemField( @@ -181,32 +180,32 @@ class CasasLegislativasReport(ReportDefault): style={'fontName': 'Helvetica-Bold', 'fontSize': 14, 'alignment': TA_CENTER} ), Label( - text=u"UF", + text=_(u"UF"), left=label_left[0] * cm, top=label_top, ), Label( - text=u"Municipio", + text=_(u"Municipio"), left=label_left[1] * cm, top=label_top, ), Label( - text=u"Presidente", + text=_(u"Presidente"), left=label_left[2] * cm, top=label_top, ), Label( - text=u"Endereço", + text=_(u"Endereço"), left=label_left[3] * cm, top=label_top, ), Label( - text=u"Endereço na Internet", + text=_(u"Endereço na Internet"), left=label_left[4] * cm, top=label_top, ), Label( - text=u"Email", + text=_(u"Email"), left=label_left[5] * cm, top=label_top, ), @@ -265,7 +264,7 @@ class CasasLegislativasReport(ReportDefault): class InfoCasaLegislativa(ReportDefault): - title = u'Casa Legislativa' + title = _(u'Casa Legislativa') class band_summary(ReportBand): pass @@ -274,7 +273,7 @@ class InfoCasaLegislativa(ReportDefault): height = 1 * cm elements = [ - SystemField(expression=u'%(now:%d/%m/%Y)s às %(now:%H:%M)s', top=0.3 * cm), + SystemField(expression=_(u'%(now:%d/%m/%Y)s às %(now:%H:%M)s'), top=0.3 * cm), ] class band_detail(ReportDefault.band_detail): @@ -312,7 +311,7 @@ class InfoCasaLegislativa(ReportDefault): elements = [ Label( - text=u"Tipo: ", + text=_(u"Tipo: "), left=posicao_left[0] * cm, top=posicao_top[0] * cm, ), @@ -323,7 +322,7 @@ class InfoCasaLegislativa(ReportDefault): width=6 * cm, ), Label( - text=u"Região: ", + text=_(u"Região: "), left=posicao_left[2] * cm, top=posicao_top[1] * cm, ), @@ -332,11 +331,11 @@ class InfoCasaLegislativa(ReportDefault): left=posicao_left[3] * cm, top=posicao_top[1] * cm, get_value=lambda instance: - {'SL': 'Sul', 'SD': 'Sudeste', 'CO': 'Centro-Oeste', 'NE': 'Nordeste', 'NO': 'Norte', } + {'SL': _('Sul'), 'SD': _('Sudeste'), 'CO': _('Centro-Oeste'), 'NE': _('Nordeste'), 'NO': _('Norte'), } [instance.municipio.uf.regiao] ), Label( - text=u"U.F.: ", + text=_(u"U.F.: "), left=posicao_left[4] * cm, top=posicao_top[2] * cm, ), @@ -346,7 +345,7 @@ class InfoCasaLegislativa(ReportDefault): top=posicao_top[2] * cm, ), Label( - text=u"Município: ", + text=_(u"Município: "), left=posicao_left[6] * cm, top=posicao_top[3] * cm, ), @@ -358,7 +357,7 @@ class InfoCasaLegislativa(ReportDefault): ), # Linha 3 Label( - text=u"Endereço: ", + text=_(u"Endereço: "), left=posicao_left[8] * cm, top=posicao_top[4] * cm, ), @@ -369,7 +368,7 @@ class InfoCasaLegislativa(ReportDefault): width=20 * cm, ), Label( - text=u"Bairro: ", + text=_(u"Bairro: "), left=posicao_left[10] * cm, top=posicao_top[5] * cm, ), @@ -379,7 +378,7 @@ class InfoCasaLegislativa(ReportDefault): top=posicao_top[5] * cm, ), Label( - text=u"CEP: ", + text=_(u"CEP: "), left=posicao_left[12] * cm, top=posicao_top[6] * cm, ), @@ -389,7 +388,7 @@ class InfoCasaLegislativa(ReportDefault): top=posicao_top[6] * cm, ), Label( - text=u"CNPJ: ", + text=_(u"CNPJ: "), left=posicao_left[14] * cm, top=posicao_top[7] * cm, ), @@ -399,7 +398,7 @@ class InfoCasaLegislativa(ReportDefault): top=posicao_top[7] * cm, ), Label( - text=u"Telefone: ", + text=_(u"Telefone: "), left=posicao_left[16] * cm, top=posicao_top[8] * cm, ), @@ -409,7 +408,7 @@ class InfoCasaLegislativa(ReportDefault): top=posicao_top[8] * cm, ), Label( - text=u"Presidente: ", + text=_(u"Presidente: "), left=posicao_left[18] * cm, top=posicao_top[9] * cm, ), @@ -438,14 +437,14 @@ class InfoCasaLegislativa(ReportDefault): height=2.5 * cm, elements=[ Label( - text=u"Telefone(s)", + text=_(u"Telefone(s)"), style={'fontSize': 14, 'alignment': TA_CENTER}, width=BAND_WIDTH, top=1 * cm, ), - Label(text=u"Número", left=tel_left[0] * cm, top=tel_top), - Label(text=u"Tipo", left=tel_left[1] * cm, top=tel_top), - Label(text=u"Nota", left=tel_left[2] * cm, top=tel_top), + Label(text=_(u"Número"), left=tel_left[0] * cm, top=tel_top), + Label(text=_(u"Tipo"), left=tel_left[1] * cm, top=tel_top), + Label(text=_(u"Nota"), left=tel_left[2] * cm, top=tel_top), ], borders={'bottom': True}, ), @@ -456,7 +455,7 @@ class InfoCasaLegislativa(ReportDefault): ObjectValue(attribute_name='__unicode__', left=tel_left[0] * cm), ObjectValue(attribute_name='tipo', left=tel_left[1] * cm, get_value=lambda instance: - {'F': 'Fixo', 'M': u'Móvel', 'X': 'Fax', 'I': 'Indefinido'}[instance.tipo], + {'F': _('Fixo'), 'M': _(u'Móvel'), 'X': _('Fax'), 'I': _('Indefinido')}[instance.tipo], ), ObjectValue(attribute_name='nota', left=tel_left[2] * cm), ], @@ -471,14 +470,14 @@ class InfoCasaLegislativa(ReportDefault): height=2.5 * cm, elements=[ Label( - text=u"Contato(s)", + text=_(u"Contato(s)"), style={'fontSize': 14, 'alignment': TA_CENTER}, width=BAND_WIDTH, top=1 * cm, ), - Label(text=u"Nome", left=cont_left[0] * cm, top=cont_top), - Label(text=u"Nota", left=cont_left[1] * cm, top=cont_top), - Label(text=u"E-mail", left=cont_left[2] * cm, top=cont_top), + Label(text=_(u"Nome"), left=cont_left[0] * cm, top=cont_top), + Label(text=_(u"Nota"), left=cont_left[1] * cm, top=cont_top), + Label(text=_(u"E-mail"), left=cont_left[2] * cm, top=cont_top), ], borders={'bottom': True, 'top': True}, ), @@ -501,18 +500,18 @@ class InfoCasaLegislativa(ReportDefault): height=2.5 * cm, elements=[ Label( - text=u"Convênio(s)", + text=_(u"Convênio(s)"), style={'fontSize': 14, 'alignment': TA_CENTER}, width=BAND_WIDTH, top=1 * cm, ), - Label(text=u"Projeto", left=convenio_left[0] * cm, top=convenio_top), - Label(text=u"Nº Convenio", left=convenio_left[1] * cm, top=convenio_top), - Label(text=u"Nº Processo SF", left=convenio_left[2] * cm, top=convenio_top), - Label(text=u"Adesão", left=convenio_left[3] * cm, top=convenio_top), - Label(text=u"Convênio", left=convenio_left[4] * cm, top=convenio_top), - Label(text=u"Equipada", left=convenio_left[5] * cm, top=convenio_top), - Label(text=u"Data D.O.", left=convenio_left[6] * cm, top=convenio_top), + Label(text=_(u"Projeto"), left=convenio_left[0] * cm, top=convenio_top), + Label(text=_(u"Nº Convenio"), left=convenio_left[1] * cm, top=convenio_top), + Label(text=_(u"Nº Processo SF"), left=convenio_left[2] * cm, top=convenio_top), + Label(text=_(u"Adesão"), left=convenio_left[3] * cm, top=convenio_top), + Label(text=_(u"Convênio"), left=convenio_left[4] * cm, top=convenio_top), + Label(text=_(u"Equipada"), left=convenio_left[5] * cm, top=convenio_top), + Label(text=_(u"Data D.O."), left=convenio_left[6] * cm, top=convenio_top), ], borders={'bottom': True} ), diff --git a/sigi/apps/relatorios/reports.py b/sigi/apps/relatorios/reports.py index c3c0a5c..7133641 100644 --- a/sigi/apps/relatorios/reports.py +++ b/sigi/apps/relatorios/reports.py @@ -1,20 +1,19 @@ #-*- coding:utf-8 -*- import os -from geraldo import Report, ReportBand, ObjectValue, DetailBand, Label, \ - landscape, SystemField, BAND_WIDTH, ReportGroup, \ - FIELD_ACTION_SUM, FIELD_ACTION_COUNT, Line +from django.utils.translation import ugettext as _ +from geraldo import Report, ReportBand, ObjectValue, DetailBand, Label, SystemField, BAND_WIDTH, FIELD_ACTION_COUNT, Line from geraldo.graphics import Image -from reportlab.lib.units import cm -from reportlab.lib.pagesizes import A4 +from reportlab.lib.colors import navy from reportlab.lib.enums import TA_CENTER, TA_RIGHT -from reportlab.lib.colors import navy, red +from reportlab.lib.pagesizes import A4 +from reportlab.lib.units import cm class ReportDefault(Report): #__metaclass__ = ABCMeta - title = u'Relatório' - author = u'Interlegis' + title = _(u'Relatório') + author = _(u'Interlegis') print_if_empty = True page_size = A4 @@ -35,10 +34,10 @@ class ReportDefault(Report): left=1 * cm, right=1 * cm, top=0.1 * cm, bottom=1 * cm, width=3 * cm, height=3 * cm, ), - Label(text="SENADO FEDERAL", top=1 * cm, left=0, width=BAND_WIDTH, + Label(text=_("SENADO FEDERAL"), top=1 * cm, left=0, width=BAND_WIDTH, style={'fontName': 'Helvetica-Bold', 'fontSize': 14, 'alignment': TA_CENTER} ), - Label(text="SINTER - Secretaria Especial do Interlegis", top=1.5 * cm, left=0, width=BAND_WIDTH, + Label(text=_("SINTER - Secretaria Especial do Interlegis"), top=1.5 * cm, left=0, width=BAND_WIDTH, style={'fontName': 'Helvetica-Bold', 'fontSize': 13, 'alignment': TA_CENTER} ), SystemField( @@ -52,8 +51,8 @@ class ReportDefault(Report): height = 1 * cm elements = [ - SystemField(expression=u'%(now:%d/%m/%Y)s às %(now:%H:%M)s', top=0.3 * cm), - SystemField(expression=u'Página %(page_number)d de %(page_count)d', top=0.3 * cm, + SystemField(expression=_(u'%(now:%d/%m/%Y)s às %(now:%H:%M)s'), top=0.3 * cm), + SystemField(expression=_(u'Página %(page_number)d de %(page_count)d'), top=0.3 * cm, width=BAND_WIDTH, style={'alignment': TA_RIGHT} ), ] @@ -67,7 +66,7 @@ class ReportDefault(Report): class band_summary(ReportBand): height = 0.8 * cm elements = [ - Label(text="Total:", top=0.1 * cm, left=0), + Label(text=_("Total:"), top=0.1 * cm, left=0), ObjectValue(attribute_name='id', top=0.1 * cm, left=1 * cm, action=FIELD_ACTION_COUNT, display_format='%s'), ] diff --git a/sigi/apps/servicos/admin.py b/sigi/apps/servicos/admin.py index b7a43da..009ad72 100644 --- a/sigi/apps/servicos/admin.py +++ b/sigi/apps/servicos/admin.py @@ -58,13 +58,13 @@ class ServicoAdmin(BaseModelAdmin): fieldsets = ((None, { 'fields': ('casa_legislativa', 'data_ativacao',) }), - ('Serviço', { + (_('Serviço'), { 'fields': ('tipo_servico', ('url', 'hospedagem_interlegis'), ('nome_servidor', 'porta_servico', 'senha_inicial'),) }), - ('Contatos', { + (_('Contatos'), { 'fields': ('contato_tecnico', 'contato_administrativo',) }), - ('Alterações', { + (_('Alterações'), { 'fields': ('data_alteracao', 'data_desativacao', 'motivo_desativacao',) })) readonly_fields = ('casa_legislativa', 'data_ativacao', 'data_alteracao') @@ -76,17 +76,17 @@ class ServicoAdmin(BaseModelAdmin): def get_codigo_interlegis(self, obj): return obj.casa_legislativa.codigo_interlegis - get_codigo_interlegis.short_description = u'Código Interlegis' + get_codigo_interlegis.short_description = _(u'Código Interlegis') get_codigo_interlegis.admin_order_field = 'casa_legislativa__codigo_interlegis' def get_uf(self, obj): return u'%s' % (obj.casa_legislativa.municipio.uf) - get_uf.short_description = 'UF' + get_uf.short_description = _('UF') get_uf.admin_order_field = 'casa_legislativa__municipio__uf' def getUrl(self, obj): return u'%s' % (obj.url, obj.url) - getUrl.short_description = 'Url' + getUrl.short_description = _('Url') getUrl.allow_tags = True def get_link_erro(self, obj): @@ -98,15 +98,15 @@ class ServicoAdmin(BaseModelAdmin): url += obj.tipo_servico.string_pesquisa return u'%s' % (url, obj.erro_atualizacao) get_link_erro.allow_tags = True - get_link_erro.short_description = u"Erro na atualização" + get_link_erro.short_description = _(u"Erro na atualização") get_link_erro.admin_order_field = 'erro_atualizacao' def calcular_data_uso(self, request, queryset): for servico in queryset: servico.atualiza_data_uso() - self.message_user(request, "Atualização concluída. Os sites que não responderam foram deixados com a data em branco") + self.message_user(request, _("Atualização concluída. Os sites que não responderam foram deixados com a data em branco")) return HttpResponseRedirect('.') - calcular_data_uso.short_description = u"Atualizar a data do último uso do(s) serviço(s)" + calcular_data_uso.short_description = _(u"Atualizar a data do último uso do(s) serviço(s)") def get_actions(self, request): from django.utils.datastructures import SortedDict @@ -191,12 +191,12 @@ class CasaAtendidaAdmin(BaseModelAdmin): def get_servicos(self, obj): result = [] for servico in obj.servico_set.all(): - result.append(u"%s (%s). Contato: %s" % (servico.tipo_servico.nome, 'ativo' if servico.data_desativacao is None - else 'Desativado', servico.contato_administrativo.nome)) + result.append(_(u"%s (%s). Contato: %s") % (servico.tipo_servico.nome, _('ativo') if servico.data_desativacao is None + else _('Desativado'), servico.contato_administrativo.nome)) return "
    • " + "
    • ".join(result) + "
    " get_servicos.allow_tags = True - get_servicos.short_description = u"Serviços" + get_servicos.short_description = _(u"Serviços") def lookup_allowed(self, lookup, value): return super(CasaAtendidaAdmin, self).lookup_allowed(lookup, value) or \ diff --git a/sigi/apps/servicos/management/commands/atualiza_uso_servico.py b/sigi/apps/servicos/management/commands/atualiza_uso_servico.py index 5c3b9be..edc3404 100644 --- a/sigi/apps/servicos/management/commands/atualiza_uso_servico.py +++ b/sigi/apps/servicos/management/commands/atualiza_uso_servico.py @@ -22,11 +22,13 @@ # 02110-1301, USA. # from django.core.management.base import BaseCommand +from django.utils.translation import ugettext as _ + from sigi.apps.servicos.models import Servico class Command(BaseCommand): - help = u'Atualiza a informação de data de último serviço dos serviços SEIT hospedados no Interlegis.' + help = _(u'Atualiza a informação de data de último serviço dos serviços SEIT hospedados no Interlegis.') def handle(self, *args, **options): verbosity = int(options['verbosity']) diff --git a/sigi/apps/servicos/models.py b/sigi/apps/servicos/models.py index bce63b2..bd6a7a4 100644 --- a/sigi/apps/servicos/models.py +++ b/sigi/apps/servicos/models.py @@ -1,22 +1,22 @@ # -*- coding: utf-8 -*- +from datetime import date from django.db import models + from sigi.apps.casas.models import CasaLegislativa, Funcionario -from datetime import date -from django.core.mail import send_mail -from sigi.settings import DEFAULT_FROM_EMAIL +from django.utils.translation import ugettext as _ class TipoServico(models.Model): email_help = u'''Use:
    {url} para incluir a URL do serviço,
    {senha} para incluir a senha inicial do serviço''' - nome = models.CharField(u'Nome', max_length=60) - sigla = models.CharField(u'Sigla', max_length='12') - string_pesquisa = models.CharField(u'String de pesquisa', blank=True, max_length=200, - help_text=u'Sufixo para pesquisa RSS para averiguar a data da última atualização do serviço') - template_email_ativa = models.TextField(u'Template de email de ativação', help_text=email_help, blank=True) - template_email_altera = models.TextField(u'Template de email de alteração', help_text=email_help, blank=True) - template_email_desativa = models.TextField(u'Template de email de desativação', help_text=email_help + u'
    {motivo} para incluir o motivo da desativação do serviço', blank=True) + nome = models.CharField(_(u'Nome'), max_length=60) + sigla = models.CharField(_(u'Sigla'), max_length='12') + string_pesquisa = models.CharField(_(u'String de pesquisa'), blank=True, max_length=200, + help_text=_(u'Sufixo para pesquisa RSS para averiguar a data da última atualização do serviço')) + template_email_ativa = models.TextField(_(u'Template de email de ativação'), help_text=email_help, blank=True) + template_email_altera = models.TextField(_(u'Template de email de alteração'), help_text=email_help, blank=True) + template_email_desativa = models.TextField(_(u'Template de email de desativação'), help_text=email_help + _(u'
    {motivo} para incluir o motivo da desativação do serviço'), blank=True) @property def qtde_casas_atendidas(self): @@ -24,32 +24,32 @@ class TipoServico(models.Model): return self.servico_set.filter(data_desativacao=None).count() class Meta: - verbose_name = u'Tipo de serviço' - verbose_name_plural = u'Tipos de serviço' + verbose_name = _(u'Tipo de serviço') + verbose_name_plural = _(u'Tipos de serviço') def __unicode__(self): return self.nome class Servico(models.Model): - casa_legislativa = models.ForeignKey(CasaLegislativa, verbose_name=u'Casa Legislativa') - tipo_servico = models.ForeignKey(TipoServico, verbose_name=u'Tipo de serviço') - contato_tecnico = models.ForeignKey(Funcionario, verbose_name=u'Contato técnico', related_name='contato_tecnico') - contato_administrativo = models.ForeignKey(Funcionario, verbose_name=u'Contato administrativo', related_name='contato_administrativo') - url = models.URLField(u'URL do serviço', blank=True) - hospedagem_interlegis = models.BooleanField(u'Hospedagem no Interlegis?', default=False) - nome_servidor = models.CharField(u'Hospedado em', max_length=60, blank=True, - help_text=u'Se hospedado no Interlegis, informe o nome do servidor.
    Senão, informe o nome do provedor de serviços.') - porta_servico = models.PositiveSmallIntegerField(u'Porta de serviço (instância)', blank=True, null=True) - senha_inicial = models.CharField(u'Senha inicial', max_length=33, blank=True) - data_ativacao = models.DateField(u'Data de ativação', default=date.today) - data_alteracao = models.DateField(u'Data da última alteração', blank=True, null=True, auto_now=True) - data_desativacao = models.DateField(u'Data de desativação', blank=True, null=True) - motivo_desativacao = models.TextField(u'Motivo da desativação', blank=True) - data_ultimo_uso = models.DateField(u'Data da última utilização', blank=True, null=True, - help_text=u'Data em que o serviço foi utilizado pela Casa Legislativa pela última vez
    NÃO É ATUALIZADO AUTOMATICAMENTE!') - erro_atualizacao = models.CharField(u"Erro na atualização", blank=True, max_length=200, - help_text=u"Erro ocorrido na última tentativa de atualizar a data de último acesso") + casa_legislativa = models.ForeignKey(CasaLegislativa, verbose_name=_(u'Casa Legislativa')) + tipo_servico = models.ForeignKey(TipoServico, verbose_name=_(u'Tipo de serviço')) + contato_tecnico = models.ForeignKey(Funcionario, verbose_name=_(u'Contato técnico'), related_name='contato_tecnico') + contato_administrativo = models.ForeignKey(Funcionario, verbose_name=_(u'Contato administrativo'), related_name='contato_administrativo') + url = models.URLField(_(u'URL do serviço'), blank=True) + hospedagem_interlegis = models.BooleanField(_(u'Hospedagem no Interlegis?'), default=False) + nome_servidor = models.CharField(_(u'Hospedado em'), max_length=60, blank=True, + help_text=_(u'Se hospedado no Interlegis, informe o nome do servidor.
    Senão, informe o nome do provedor de serviços.')) + porta_servico = models.PositiveSmallIntegerField(_(u'Porta de serviço (instância)'), blank=True, null=True) + senha_inicial = models.CharField(_(u'Senha inicial'), max_length=33, blank=True) + data_ativacao = models.DateField(_(u'Data de ativação'), default=date.today) + data_alteracao = models.DateField(_(u'Data da última alteração'), blank=True, null=True, auto_now=True) + data_desativacao = models.DateField(_(u'Data de desativação'), blank=True, null=True) + motivo_desativacao = models.TextField(_(u'Motivo da desativação'), blank=True) + data_ultimo_uso = models.DateField(_(u'Data da última utilização'), blank=True, null=True, + help_text=_(u'Data em que o serviço foi utilizado pela Casa Legislativa pela última vez
    NÃO É ATUALIZADO AUTOMATICAMENTE!')) + erro_atualizacao = models.CharField(_(u"Erro na atualização"), blank=True, max_length=200, + help_text=_(u"Erro ocorrido na última tentativa de atualizar a data de último acesso")) # casa_legislativa.casa_uf_filter = True @@ -87,14 +87,14 @@ class Servico(models.Model): opener = urllib2.build_opener(proxy) req = opener.open(fullurl=url, timeout=5) except Exception as e: - reset(erro=str(e), comment=u'Não foi possível conectar com o servidor. Pode estar fora do ar ou não ser um ' + + reset(erro=str(e), comment=_(u'Não foi possível conectar com o servidor. Pode estar fora do ar ou não ser um ') + self.tipo_servico.nome) return try: rss = req.read() except Exception as e: - reset(erro=str(e), comment=u'Não foi possível receber os dados do servidor. O acesso pode ter sido negado.') + reset(erro=str(e), comment=_(u'Não foi possível receber os dados do servidor. O acesso pode ter sido negado.')) return try: @@ -108,12 +108,12 @@ class Servico(models.Model): self.erro_atualizacao = "" self.save() except Exception as e: - reset(erro=str(e), comment=u'A resposta do servidor não é compatível com %s. Pode ser outro software que está sendo usado' % + reset(erro=str(e), comment=_(u'A resposta do servidor não é compatível com %s. Pode ser outro software que está sendo usado') % self.tipo_servico.nome) return def __unicode__(self): - return "%s (%s)" % (self.tipo_servico.nome, 'ativo' if self.data_desativacao is None else 'Desativado') + return "%s (%s)" % (self.tipo_servico.nome, _('ativo') if self.data_desativacao is None else _('Desativado')) def save(self, *args, **kwargs): # Reter o objeto original para verificar mudanças @@ -123,11 +123,11 @@ class Servico(models.Model): if self.id is None: # Novo serviço, email de ativação - subject = u'INTERLEGIS - Ativação de serviço %s' % (self.tipo_servico.nome,) + subject = _(u'INTERLEGIS - Ativação de serviço %s') % (self.tipo_servico.nome,) body = self.tipo_servico.template_email_ativa elif self.data_desativacao is not None and original.data_desativacao is None: # Serviço foi desativado. Email de desativação - subject = u'INTERLEGIS - Desativação de serviço %s' % (self.tipo_servico.nome,) + subject = _(u'INTERLEGIS - Desativação de serviço %s') % (self.tipo_servico.nome,) body = self.tipo_servico.template_email_desativa elif (self.tipo_servico != original.tipo_servico or self.contato_tecnico != original.contato_tecnico or @@ -135,7 +135,7 @@ class Servico(models.Model): self.nome_servidor != original.nome_servidor or self.senha_inicial != original.senha_inicial): # Serviço foi alterado - subject = u'INTERLEGIS - Alteração de serviço %s' % (self.tipo_servico.nome,) + subject = _(u'INTERLEGIS - Alteração de serviço %s') % (self.tipo_servico.nome,) body = self.tipo_servico.template_email_altera else: # Salvar o Servico @@ -157,17 +157,17 @@ class Servico(models.Model): class LogServico(models.Model): - servico = models.ForeignKey(Servico, verbose_name='Serviço') - descricao = models.CharField('Breve descrição da ação', max_length=60) - data = models.DateField('Data da ação', default=date.today) - log = models.TextField('Log da ação') + servico = models.ForeignKey(Servico, verbose_name=_('Serviço')) + descricao = models.CharField(_('Breve descrição da ação'), max_length=60) + data = models.DateField(_('Data da ação'), default=date.today) + log = models.TextField(_('Log da ação')) def __unicode__(self): return "%s (%s)" % (self.descricao, self.data) class Meta: - verbose_name = 'Log do serviço' - verbose_name_plural = 'Logs do serviço' + verbose_name = _('Log do serviço') + verbose_name_plural = _('Logs do serviço') class CasaAtendidaManager(models.Manager): @@ -182,7 +182,7 @@ class CasaAtendida(CasaLegislativa): class Meta: proxy = True - verbose_name_plural = 'Casas atendidas' + verbose_name_plural = _('Casas atendidas') objects = CasaAtendidaManager() @@ -191,16 +191,16 @@ class CasaManifesta(models.Model): casa_legislativa = models.OneToOneField(CasaLegislativa) data_manifestacao = models.DateTimeField(auto_now_add=True) data_atualizacao = models.DateTimeField(auto_now=True) - informante = models.CharField(u'Nome do informante', max_length=100, blank=True) - cargo = models.CharField(u'Cargo do informante', max_length=100, blank=True) - email = models.EmailField(u'E-mail de contato', blank=True) + informante = models.CharField(_(u'Nome do informante'), max_length=100, blank=True) + cargo = models.CharField(_(u'Cargo do informante'), max_length=100, blank=True) + email = models.EmailField(_(u'E-mail de contato'), blank=True) class ServicoManifesto(models.Model): casa_manifesta = models.ForeignKey(CasaManifesta) servico = models.ForeignKey(TipoServico) url = models.URLField(blank=True) - hospedagem_interlegis = models.BooleanField(u'Hospedagem no Interlegis?', default=False) + hospedagem_interlegis = models.BooleanField(_(u'Hospedagem no Interlegis?'), default=False) class Meta: unique_together = ('casa_manifesta', 'servico') @@ -213,4 +213,4 @@ class RegistroServico(models.Model): data_registro = models.DateTimeField(auto_now=True) class Meta: - verbose_name_plural = u'Registro de serviços' + verbose_name_plural = _(u'Registro de serviços') diff --git a/sigi/apps/servicos/views.py b/sigi/apps/servicos/views.py index 3885502..748779f 100644 --- a/sigi/apps/servicos/views.py +++ b/sigi/apps/servicos/views.py @@ -1,20 +1,19 @@ # -*- coding: utf-8 -*- +import json as simplejson # XXX trocar isso por simplesmente import json e refatorar o codigo + from django import forms +from django.db.models import Q +from django.forms.forms import BoundField from django.http import HttpResponse -import json as simplejson # XXX trocar isso por simplesmente import json e refatorar o codigo from django.shortcuts import render_to_response, get_object_or_404 -from django.db.models import Q -from sigi.apps.servicos.models import TipoServico, CasaAtendida, CasaManifesta, ServicoManifesto -from sigi.apps.contatos.models import UnidadeFederativa -from sigi.apps.casas.models import CasaLegislativa from django.template.context import RequestContext -from django.utils.encoding import force_unicode -from django.forms.forms import BoundField -from django.utils.html import conditional_escape -from django.utils.safestring import mark_safe -from django.contrib.admin.helpers import AdminForm +from django.utils.translation import ugettext as _ from django.views.generic.base import TemplateView +from sigi.apps.casas.models import CasaLegislativa +from sigi.apps.contatos.models import UnidadeFederativa +from sigi.apps.servicos.models import TipoServico, CasaAtendida, CasaManifesta, ServicoManifesto + class MapaView(TemplateView): @@ -84,9 +83,9 @@ def casa_manifesta_view(request): fieldsets = ((None, ('informante', 'cargo', 'email'),),) for ts in TipoServico.objects.all(): - campos['possui_%s' % ts.pk] = forms.BooleanField(label=u'Possui o serviço de %s' % ts.nome, required=False) - campos['url_%s' % ts.pk] = forms.URLField(label=u'Informe a URL', required=False) - campos['hospedagem_interlegis_%s' % ts.pk] = forms.BooleanField(label=u'Serviço está hospedado no Interlegis', required=False) + campos['possui_%s' % ts.pk] = forms.BooleanField(label=_(u'Possui o serviço de %s') % ts.nome, required=False) + campos['url_%s' % ts.pk] = forms.URLField(label=_(u'Informe a URL'), required=False) + campos['hospedagem_interlegis_%s' % ts.pk] = forms.BooleanField(label=_(u'Serviço está hospedado no Interlegis'), required=False) fieldsets += ((ts.nome, ('possui_%s' % ts.pk, 'url_%s' % ts.pk, 'hospedagem_interlegis_%s' % ts.pk)),) CasaManifestaForm = type('', (CasaManifestaProtoForm,), campos) @@ -100,20 +99,20 @@ def casa_manifesta_view(request): cm.cargo = cmf.cleaned_data['cargo'] cm.email = cmf.cleaned_data['email'] cm.save() - thanks.append((u'Informante', cmf.cleaned_data['informante'])) - thanks.append((u'Cargo', cmf.cleaned_data['cargo'])) - thanks.append((u'E-mail', cmf.cleaned_data['email'])) + thanks.append((_(u'Informante'), cmf.cleaned_data['informante'])) + thanks.append((_(u'Cargo'), cmf.cleaned_data['cargo'])) + thanks.append((_(u'E-mail'), cmf.cleaned_data['email'])) for ts in TipoServico.objects.all(): if cmf.cleaned_data['possui_%s' % ts.pk]: sm, created = ServicoManifesto.objects.get_or_create(casa_manifesta=cm, servico=ts) sm.url = cmf.cleaned_data['url_%s' % ts.pk] sm.hospedagem_interlegis = cmf.cleaned_data['hospedagem_interlegis_%s' % ts.pk] sm.save() - thanks.append((ts.nome, u'Possui o serviço acessível em %s %s' % (sm.url, u'hospedado no Interlegis' if - sm.hospedagem_interlegis else ''))) + thanks.append((ts.nome, _(u'Possui o serviço acessível em %s %s') % (sm.url, u'hospedado no Interlegis' if + sm.hospedagem_interlegis else ''))) else: ServicoManifesto.objects.filter(casa_manifesta=cm, servico=ts).delete() - thanks.append((ts.nome, u'Não possui')) + thanks.append((ts.nome, _(u'Não possui'))) extra_context = {'casa': casa, 'thanks': thanks} else: extra_context = {'casa': casa, 'cmf': cmf} diff --git a/sigi/apps/servidores/admin.py b/sigi/apps/servidores/admin.py index 409c3af..20e6385 100644 --- a/sigi/apps/servidores/admin.py +++ b/sigi/apps/servidores/admin.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from django.contrib import admin from django.contrib.contenttypes import generic +from django.utils.translation import ugettext as _ from sigi.apps.contatos.models import Endereco, Telefone from sigi.apps.servidores.forms import FeriasForm, LicencaForm, FuncaoForm @@ -30,7 +31,7 @@ class FeriasAdmin(BaseModelAdmin): class ServidorFilter(AlphabeticFilter): - title = 'Nome do Servidor' + title = _('Nome do Servidor') parameter_name = 'servidor__nome_completo' @@ -64,7 +65,7 @@ class ServidorAdmin(BaseModelAdmin): return servidor.user.is_active is_active.admin_order_field = 'user__is_active' is_active.boolean = True - is_active.short_description = 'ativo' + is_active.short_description = _('ativo') list_display = ('nome_completo', 'is_active', 'foto', 'servico', ) list_filter = ('user__is_active', 'sexo', 'servico',) @@ -74,16 +75,16 @@ class ServidorAdmin(BaseModelAdmin): raw_id_fields = ('user',) inlines = (TelefonesInline, EnderecoInline) fieldsets = ( - (u'Autenticação', { + (_(u'Autenticação'), { 'fields': ('user',), }), - ('Cadastro', { + (_('Cadastro'), { 'fields': ('nome_completo', 'foto', 'email_pessoal', 'rg', 'cpf', 'sexo', 'data_nascimento', 'matricula', 'ramal', 'data_nomeacao', 'ato_numero', 'ato_exoneracao') }), - ('Lotação', { + (_('Lotação'), { 'fields': ('servico', 'turno', 'de_fora'), }), - (u'Observações', { + (_(u'Observações'), { 'fields': ('apontamentos', 'obs'), }), ) diff --git a/sigi/apps/servidores/forms.py b/sigi/apps/servidores/forms.py index 2a9522b..a497286 100644 --- a/sigi/apps/servidores/forms.py +++ b/sigi/apps/servidores/forms.py @@ -1,10 +1,9 @@ # -*- coding: utf-8 -*- - from django import forms - -from sigi.apps.utils.validators import valida_data, valida_periodo_data +from django.utils.translation import ugettext as _ from sigi.apps.servidores.models import Ferias, Licenca, Funcao, Servidor +from sigi.apps.utils.validators import valida_data, valida_periodo_data class FeriasForm(forms.ModelForm): @@ -16,8 +15,8 @@ class FeriasForm(forms.ModelForm): def clean(self): data = self.cleaned_data if valida_data(data.get('inicio_ferias'), data.get('fim_ferias')): - raise forms.ValidationError(u"""A data de início deve ser menor - que a data final. Verifique novamente""") + raise forms.ValidationError(_(u"""A data de início deve ser menor + que a data final. Verifique novamente""")) return data @@ -30,8 +29,8 @@ class LicencaForm(forms.ModelForm): def clean(self): data = self.cleaned_data if valida_data(data.get('inicio_licenca'), data.get('fim_licenca')): - raise forms.ValidationError(u"""A data de início deve ser menor - que a data final. Verifique novamente""") + raise forms.ValidationError(_(u"""A data de início deve ser menor + que a data final. Verifique novamente""")) return data @@ -44,9 +43,9 @@ class FuncaoForm(forms.ModelForm): def clean(self): data = self.cleaned_data if valida_data(data.get('inicio_funcao'), data.get('fim_funcao')): - raise forms.ValidationError(u"""A data de início deve ser menor + raise forms.ValidationError(_(u"""A data de início deve ser menor que a data final. Verifique - novamente""") + novamente""")) # Verifica na função anterior, se o seu período é igual # ou está entre o período da função atual. @@ -60,7 +59,7 @@ class FuncaoForm(forms.ModelForm): if valida_periodo_data(funcao_anterior.inicio_funcao, funcao_anterior.fim_funcao, data.get('inicio_funcao'), data.get('fim_funcao')): - raise forms.ValidationError(u"""Você não pode exercer + raise forms.ValidationError(_(u"""Você não pode exercer uma função no mesmo período que a anterior, como também, - não pode ser entre o período da mesma.""") + não pode ser entre o período da mesma.""")) return data diff --git a/sigi/apps/servidores/management/commands/migra.py b/sigi/apps/servidores/management/commands/migra.py index 9802456..c797bc3 100644 --- a/sigi/apps/servidores/management/commands/migra.py +++ b/sigi/apps/servidores/management/commands/migra.py @@ -1,12 +1,15 @@ # coding= utf-8 -import sys import csv import re + from datetime import datetime -from django.core.management.base import BaseCommand, CommandError from django.contrib.auth.models import User -from sigi.apps.servidores.models import Servidor, Servico, Subsecretaria, Funcao, Ferias, Licenca +from django.core.management.base import BaseCommand +from django.utils.translation import ugettext as _ + from sigi.apps.contatos.models import Municipio +from sigi.apps.servidores.models import Servidor, Servico, Subsecretaria + # Funcao.objects.all().delete() # Ferias.objects.all().delete() @@ -21,7 +24,7 @@ class MigrationError(Exception): class Command(BaseCommand): - help = 'Migra usuários do antigo Sistema de RH' + help = _('Migra usuários do antigo Sistema de RH') def to_date(self, data): return datetime.strptime(data, "%Y-%m-%d 00:00:00") @@ -222,7 +225,7 @@ class Command(BaseCommand): funcao.bap_saida = p['bap_saida'] funcao.save() - if re.search(r'estagi.ri[o|a]', p['cargo'], re.I): + if re.search(r'estagi.ri[o|a]', p['cargo'], re.I): # XXX i18n # TODO inserir dados de estagio pass diff --git a/sigi/apps/servidores/models.py b/sigi/apps/servidores/models.py index 794634c..fa8e1a0 100644 --- a/sigi/apps/servidores/models.py +++ b/sigi/apps/servidores/models.py @@ -1,8 +1,9 @@ # -*- coding: utf-8 -*- +from django.contrib.auth.models import User +from django.contrib.contenttypes import generic from django.db import models from django.db.models.signals import post_save -from django.contrib.contenttypes import generic -from django.contrib.auth.models import User +from django.utils.translation import ugettext as _ class Subsecretaria(models.Model): @@ -27,7 +28,7 @@ class Servico(models.Model): """ Modelo para representação dos Serviços de uma Subsecretaria """ - nome = models.CharField(u'Setor', max_length=250, null=True) + nome = models.CharField(_(u'Setor'), max_length=250, null=True) sigla = models.CharField(max_length=10, null=True) subsecretaria = models.ForeignKey(Subsecretaria, null=True) # servidor responsavel por chefiar o serviço @@ -35,8 +36,8 @@ class Servico(models.Model): class Meta: ordering = ('nome',) - verbose_name = 'serviço' - verbose_name_plural = 'serviços' + verbose_name = _('serviço') + verbose_name_plural = _('serviços') def __unicode__(self): return '%s (%s)' % (unicode(self.nome), unicode(self.sigla)) diff --git a/sigi/apps/utils/admin_widgets.py b/sigi/apps/utils/admin_widgets.py index db49889..90b2f96 100644 --- a/sigi/apps/utils/admin_widgets.py +++ b/sigi/apps/utils/admin_widgets.py @@ -1,6 +1,6 @@ from django.contrib.admin.widgets import AdminFileWidget -from django.utils.translation import ugettext as _ from django.utils.safestring import mark_safe +from django.utils.translation import ugettext as _ class AdminImageWidget(AdminFileWidget): diff --git a/sigi/apps/utils/email.py b/sigi/apps/utils/email.py index 4c4b1b8..9c38789 100644 --- a/sigi/apps/utils/email.py +++ b/sigi/apps/utils/email.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- - -from django.template.loader import render_to_string -from django.core.mail import EmailMessage from django.conf import settings +from django.core.mail import EmailMessage +from django.template.loader import render_to_string +from django.utils.translation import ugettext as _ def enviar_email(from_email, subject, template, tags): @@ -16,13 +16,13 @@ def enviar_email(from_email, subject, template, tags): template. """ if from_email is None: - raise ValueError("Insira o email do remetente.") + raise ValueError(_("Insira o email do remetente.")) elif subject is None: - raise ValueError("Insira o assunto da mensagem.") + raise ValueError(_("Insira o assunto da mensagem.")) elif template is None: - raise ValueError(u"Template da mensagem não encontrado") + raise ValueError(_(u"Template da mensagem não encontrado")) elif tags is None: - raise ValueError("Insira o conteúdo da mensagem.") + raise ValueError(_("Insira o conteúdo da mensagem.")) # Gerando a mensagem mensagem = render_to_string(template, tags) diff --git a/sigi/context_processors.py b/sigi/context_processors.py index bcd0936..79a0f25 100644 --- a/sigi/context_processors.py +++ b/sigi/context_processors.py @@ -1,12 +1,14 @@ #-*- coding:utf-8 -*- from itertools import cycle + import datetime +from django.utils.translation import ugettext as _ from sigi.apps.casas.models import CasaLegislativa from sigi.apps.convenios.models import Convenio, Projeto -from sigi.apps.servicos.models import TipoServico from sigi.apps.diagnosticos.models import Diagnostico from sigi.apps.metas.models import Meta +from sigi.apps.servicos.models import TipoServico def charts_data(request): @@ -81,14 +83,14 @@ def busca_informacoes_camara(): # Cabecalho da esquerda na tabela cabecalho_esquerda = ( - u'Câmaras municipais', - u'Câmaras municipais não aderidas', - u'Câmaras municipais aderidas', - u'Câmaras municipais com convênios assinados', - u'Câmaras municipais convênios em andamento', - u'Câmaras municipais equipadas', - u'Diagnósticos digitados', - u'Diagnósticos publicados' + _(u'Câmaras municipais'), + _(u'Câmaras municipais não aderidas'), + _(u'Câmaras municipais aderidas'), + _(u'Câmaras municipais com convênios assinados'), + _(u'Câmaras municipais convênios em andamento'), + _(u'Câmaras municipais equipadas'), + _(u'Diagnósticos digitados'), + _(u'Diagnósticos publicados') ) linhas = ( @@ -178,6 +180,6 @@ def busca_informacoes_seit(): def busca_informacoes_diagnostico(): return [ - {'title': 'Diagnósticos digitados', 'count': Diagnostico.objects.count()}, - {'title': 'Diagnósticos publicados', 'count': Diagnostico.objects.filter(publicado=True).count()}, + {'title': _('Diagnósticos digitados'), 'count': Diagnostico.objects.count()}, + {'title': _('Diagnósticos publicados'), 'count': Diagnostico.objects.filter(publicado=True).count()}, ] diff --git a/sigi/shortcuts.py b/sigi/shortcuts.py index 6750649..be6a43c 100644 --- a/sigi/shortcuts.py +++ b/sigi/shortcuts.py @@ -1,11 +1,13 @@ import cStringIO as StringIO +import os +from cgi import escape + import ho.pisa as pisa -from django.template.loader import get_template -from django.template import Context -from django.http import HttpResponse from django.conf import settings -from cgi import escape -import os +from django.http import HttpResponse +from django.template import Context +from django.template.loader import get_template +from django.utils.translation import ugettext as _ def fetch_resources(uri, rel): @@ -22,4 +24,4 @@ def render_to_pdf(template_src, context_dict): pdf = pisa.pisaDocument(StringIO.StringIO(html.encode('utf-8')), result, link_callback=fetch_resources) if not pdf.err: return HttpResponse(result.getvalue(), content_type='application/pdf') - return HttpResponse('We had some errors
    %s
    ' % escape(html)) + return HttpResponse(_('We had some errors
    %s
    ') % escape(html))