mirror of https://github.com/interlegis/sigi.git
Sesostris Vieira
3 years ago
3 changed files with 59 additions and 345 deletions
@ -1,179 +0,0 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from geraldo import Report, DetailBand, Label, ObjectValue, ReportGroup, ReportBand, landscape, SubReport, BAND_WIDTH, SystemField |
|||
from geraldo.graphics import Image |
|||
|
|||
from django.templatetags.static import static |
|||
from django.utils.translation import gettext as _ |
|||
from reportlab.lib.enums import TA_CENTER |
|||
from reportlab.lib.pagesizes import A4 |
|||
from reportlab.lib.units import cm |
|||
|
|||
from sigi.apps.relatorios.reports import ReportDefault |
|||
|
|||
|
|||
def string_to_cm(texto): |
|||
tamanho = 0 |
|||
minEspeciais = { |
|||
'f': 0.1, |
|||
'i': 0.05, |
|||
'j': 0.05, |
|||
'l': 0.05, |
|||
'm': 0.2, |
|||
'r': 0.1, |
|||
't': 0.15, |
|||
} |
|||
maiuEspeciais = { |
|||
'I': 0.05, |
|||
'J': 0.15, |
|||
'L': 0.15, |
|||
'P': 0.15, |
|||
} |
|||
for c in texto: |
|||
if c > 'a' and c < 'z': |
|||
if c in minEspeciais: |
|||
tamanho += minEspeciais[c] |
|||
else: |
|||
tamanho += 0.17 |
|||
else: |
|||
if c in maiuEspeciais: |
|||
tamanho += maiuEspeciais[c] |
|||
else: |
|||
tamanho += 0.2 |
|||
return tamanho |
|||
|
|||
|
|||
def label_text(text): |
|||
return "%s: " % text |
|||
|
|||
|
|||
class CasasLegislativasLabels(Report): |
|||
|
|||
""" |
|||
Usage example:: |
|||
|
|||
>>> from geraldo.generators import PDFGenerator |
|||
>>> queryset = Orgao.objects.filter(municipio__uf__sigla='MG') |
|||
>>> report = LabelsReport(queryset) |
|||
>>> report.generate_by(PDFGenerator, filename='./inline-detail-report.pdf') |
|||
|
|||
""" |
|||
formato = '' |
|||
label_margin_top = 0.6 |
|||
label_margin_left = 0.2 |
|||
label_margin_right = 0.2 |
|||
largura_etiqueta = 6.9 |
|||
altura_etiqueta = 3.25 |
|||
tamanho_fonte = 6 |
|||
delta = start = 0.5 |
|||
|
|||
def __init__(self, queryset, formato): |
|||
super(CasasLegislativasLabels, self).__init__(queryset=queryset) |
|||
self.formato = formato |
|||
self.page_size = A4 |
|||
|
|||
if formato == '3x9_etiqueta': |
|||
self.margin_top = 0.25 * cm |
|||
self.margin_bottom = 0.0 * cm |
|||
self.margin_left = 0.2 * cm |
|||
self.margin_right = 0.0 * cm |
|||
self.delta = 0.3 |
|||
self.start = 0 |
|||
self.label_margin_top = 0.35 |
|||
self.label_margin_left = 0.4 |
|||
self.label_margin_right = 0.2 |
|||
else: |
|||
self.margin_top = 0.8 * cm |
|||
self.margin_bottom = 0.8 * cm |
|||
self.margin_left = 0.4 * cm |
|||
self.margin_right = 0.4 * cm |
|||
self.largura_etiqueta = 9.9 |
|||
self.altura_etiqueta = 5.6 |
|||
self.tamanho_fonte = 11 |
|||
self.label_margin_top = 0.5 |
|||
self.label_margin_left = 0.5 |
|||
self.label_margin_right = 0.5 |
|||
|
|||
calc_width = (self.largura_etiqueta - self.label_margin_left - self.label_margin_right) * cm |
|||
calc_height = lambda rows: (self.delta * rows) * cm |
|||
calc_top = lambda row: (self.label_margin_top + row * self.delta) * cm |
|||
calc_left = self.label_margin_left * cm |
|||
|
|||
my_elements = [ |
|||
Label( |
|||
text=label_text(_('A Sua Excelência o(a) Senhor(a)')), |
|||
top=calc_top(0), left=calc_left, width=calc_width, |
|||
), |
|||
ObjectValue( |
|||
attribute_name='presidente', |
|||
top=calc_top(1), left=calc_left, width=calc_width, |
|||
get_value=lambda instance: |
|||
unicode(instance.presidente or "").upper() |
|||
), |
|||
ObjectValue( |
|||
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) |
|||
), |
|||
ObjectValue( |
|||
attribute_name='logradouro', |
|||
top=calc_top(4), left=calc_left, width=calc_width, height=calc_height(2), |
|||
get_value=lambda instance: |
|||
"%s - %s - %s." % (instance.logradouro, instance.bairro, instance.municipio), |
|||
), |
|||
|
|||
ObjectValue( |
|||
attribute_name='cep', |
|||
top=calc_top(8), left=calc_left, width=calc_width, |
|||
get_value=lambda instance: "%s: %s" % (_("CEP"), instance.cep) |
|||
), |
|||
] |
|||
self.band_detail = DetailBand( |
|||
width=(self.largura_etiqueta) * cm, |
|||
height=(self.altura_etiqueta) * cm, |
|||
elements=my_elements, |
|||
display_inline=True, |
|||
default_style={'fontName': 'Helvetica', 'fontSize': self.tamanho_fonte}) |
|||
|
|||
|
|||
class CasasLegislativasLabelsSemPresidente(CasasLegislativasLabels): |
|||
|
|||
def __init__(self, queryset, formato): |
|||
super(CasasLegislativasLabelsSemPresidente, self).__init__(queryset=queryset, formato=formato) |
|||
|
|||
calc_width = (self.largura_etiqueta - self.label_margin_left - self.label_margin_right) * cm |
|||
calc_height = lambda rows: (self.delta * rows) * cm |
|||
calc_top = lambda row: (self.label_margin_top + row * self.delta) * cm |
|||
calc_left = self.label_margin_left * cm |
|||
|
|||
my_elements = [ |
|||
Label( |
|||
text=label_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) |
|||
), |
|||
ObjectValue( |
|||
attribute_name='logradouro', |
|||
top=calc_top(3), left=calc_left, width=calc_width, height=calc_height(2), |
|||
get_value=lambda instance: |
|||
"%s - %s - %s." % (instance.logradouro, instance.bairro, instance.municipio), |
|||
), |
|||
|
|||
ObjectValue( |
|||
attribute_name='cep', |
|||
top=calc_top(8), left=calc_left, width=calc_width, |
|||
get_value=lambda instance: "%s: %s" % (_("CEP"), instance.cep) |
|||
), |
|||
] |
|||
self.band_detail = DetailBand( |
|||
width=(self.largura_etiqueta) * cm, |
|||
height=(self.altura_etiqueta) * cm, |
|||
elements=my_elements, |
|||
display_inline=True, |
|||
default_style={'fontName': 'Helvetica', 'fontSize': self.tamanho_fonte}) |
|||
|
Loading…
Reference in new issue