assemblerpdf 1.0.7__tar.gz → 1.0.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. {assemblerpdf-1.0.7/src/assemblerpdf.egg-info → assemblerpdf-1.0.8}/PKG-INFO +1 -1
  2. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/pyproject.toml +1 -1
  3. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/assemblers/base.py +16 -0
  4. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/assemblerpdf/fields/checkbox.html +2 -1
  5. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/assemblerpdf/fields/radio.html +2 -1
  6. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/assemblerpdf/layout/style.html +29 -0
  7. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/tabla_matriz_riesgo.html +12 -12
  8. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8/src/assemblerpdf.egg-info}/PKG-INFO +1 -1
  9. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/MANIFEST.in +0 -0
  10. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/README.md +0 -0
  11. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/setup.cfg +0 -0
  12. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/__init__.py +0 -0
  13. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/assemblers/__init__.py +0 -0
  14. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/assemblers/form.py +0 -0
  15. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/assemblers/report.py +0 -0
  16. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/core.py +0 -0
  17. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/fonts/Inter-Bold.ttf +0 -0
  18. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/fonts/Inter-Medium.ttf +0 -0
  19. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/fonts/Inter-Regular.ttf +0 -0
  20. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/img/Logo-unp-rojo.png +0 -0
  21. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/img/logo-mininterior-rojo.jpg +0 -0
  22. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/assemblerpdf/fields/field_input.html +0 -0
  23. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/assemblerpdf/fields/field_label.html +0 -0
  24. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/assemblerpdf/fields/input.html +0 -0
  25. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/assemblerpdf/fields/textarea.html +0 -0
  26. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/assemblerpdf/layout/footer.html +0 -0
  27. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/assemblerpdf/layout/footer_fixed.html +0 -0
  28. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/assemblerpdf/layout/grid_row.html +0 -0
  29. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/assemblerpdf/layout/header.html +0 -0
  30. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/assemblerpdf/layout/section.html +0 -0
  31. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/assemblerpdf/layout/table.html +0 -0
  32. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/assemblerpdf/misc/signature.html +0 -0
  33. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/anexos.html +0 -0
  34. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/anexos_limpio.html +0 -0
  35. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/archivese.html +0 -0
  36. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/autoriza_envio.html +0 -0
  37. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/checkbox.html +0 -0
  38. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/control_cambios.html +0 -0
  39. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/datos_basicosinf.html +0 -0
  40. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/datos_ot.html +0 -0
  41. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/encaso_de.html +0 -0
  42. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/fiila_dos_check.html +0 -0
  43. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/fila_cinco_zona.html +0 -0
  44. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/fila_cuatro.html +0 -0
  45. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/fila_cuatro_si_no.html +0 -0
  46. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/fila_cuatro_zona.html +0 -0
  47. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/fila_dos.html +0 -0
  48. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/fila_dos_zona.html +0 -0
  49. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/fila_instructivo.html +0 -0
  50. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/fila_tres.html +0 -0
  51. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/fila_tres_checkbox.html +0 -0
  52. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/fila_tres_zona.html +0 -0
  53. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/fila_uno.html +0 -0
  54. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/firma.html +0 -0
  55. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/firma_doble.html +0 -0
  56. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/firmaop2.html +0 -0
  57. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/firmas_oficializacion.html +0 -0
  58. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/hechos_sobrevinientes.html +0 -0
  59. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/hechos_sobrevinientes_vacio.html +0 -0
  60. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/iformfilacuatro.html +0 -0
  61. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/informacion_doble.html +0 -0
  62. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/input_2checks.html +0 -0
  63. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/input_check.html +0 -0
  64. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/input_checkbox.html +0 -0
  65. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/input_solitario.html +0 -0
  66. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/label_input_dos.html +0 -0
  67. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/leyenda_autoriza_correo.html +0 -0
  68. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/leyenda_superiol.html +0 -0
  69. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/logos.html +0 -0
  70. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/manifiesto.html +0 -0
  71. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/notificacion_correo.html +0 -0
  72. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/oficializacion.html +0 -0
  73. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/pregunta_si_no.html +0 -0
  74. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/pregunta_tresopciones.html +0 -0
  75. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/qr_oficializacion.html +0 -0
  76. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/situacion_amenaza.html +0 -0
  77. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/style.html +0 -0
  78. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/subtitulo_icono.html +0 -0
  79. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/subtitulo_icono_largo.html +0 -0
  80. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/tabla_doble.html +0 -0
  81. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/tabla_instructivo.html +0 -0
  82. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/tabla_proyeccion.html +0 -0
  83. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/tabla_simple.html +0 -0
  84. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/texarea.html +0 -0
  85. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/tipo_identificacion.html +0 -0
  86. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/tipos_checkbox.html +0 -0
  87. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/titulo.html +0 -0
  88. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/titulo_logo.html +0 -0
  89. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/templates/sistema/titulo_principal.html +0 -0
  90. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/utils/__init__.py +0 -0
  91. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf/utils/template_loader.py +0 -0
  92. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf.egg-info/SOURCES.txt +0 -0
  93. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf.egg-info/dependency_links.txt +0 -0
  94. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf.egg-info/requires.txt +0 -0
  95. {assemblerpdf-1.0.7 → assemblerpdf-1.0.8}/src/assemblerpdf.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: assemblerpdf
3
- Version: 1.0.7
3
+ Version: 1.0.8
4
4
  Summary: Generador de PDFs usando WeasyPrint, diseñado para formularios y reportes con componentes genéricos.
5
5
  Author-email: EcosistemaUNP <ecosistema@unp.gov.co>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "assemblerpdf"
7
- version = "1.0.7"
7
+ version = "1.0.8"
8
8
  description = "Generador de PDFs usando WeasyPrint, diseñado para formularios y reportes con componentes genéricos."
9
9
  readme = "README.md"
10
10
  authors = [
@@ -20,6 +20,7 @@ class BaseFormAssembler:
20
20
  self.padding_bottom = padding_bottom
21
21
  self.padding_left = padding_left
22
22
  self.padding_right = padding_right
23
+ self._in_section_block = False
23
24
 
24
25
  def _get_img_base(self):
25
26
  import assemblerpdf
@@ -32,6 +33,7 @@ class BaseFormAssembler:
32
33
  """Renderiza un componente usando Jinja2 (motor nativo de la librería)."""
33
34
  # Unificar contexto
34
35
  full_context = {
36
+ 'interactive': self.pdf_forms,
35
37
  'img_base': self._get_img_base(),
36
38
  'auto_decorations': self.auto_decorations,
37
39
  'codigo': self.codigo,
@@ -66,6 +68,13 @@ class BaseFormAssembler:
66
68
  extra_context (dict): Contexto adicional para el template
67
69
  wrapper_html (str): HTML envolvente opcional
68
70
  """
71
+ if template_name == 'section.html':
72
+ if self._in_section_block:
73
+ self.components.append('</div>')
74
+ self._in_section_block = False
75
+ self.components.append('<div class="keep-together">')
76
+ self._in_section_block = True
77
+
69
78
  rendered = self._render(template_name, extra_context)
70
79
 
71
80
  if wrapper_html:
@@ -136,11 +145,18 @@ class BaseFormAssembler:
136
145
 
137
146
  def add_page_break(self):
138
147
  """Inserta un salto de página."""
148
+ if self._in_section_block:
149
+ self.components.append('</div>')
150
+ self._in_section_block = False
139
151
  self.components.append('<div class="page-break"></div>')
140
152
  return self
141
153
 
142
154
  def build(self, pdf_forms=None):
143
155
  """Une todos los componentes renderizados y compila el PDF."""
156
+ if self._in_section_block:
157
+ self.components.append('</div>')
158
+ self._in_section_block = False
159
+
144
160
  # 1. Obtener estilos globales (style.html)
145
161
  head = self._render("style.html")
146
162
 
@@ -1,4 +1,5 @@
1
- <div class="choice-container {{ class_group|default('') }}" style="margin-bottom: {{ margin_bottom|default('8px') }}; {{ style_group|default('') }}">
1
+ {% set is_inline = inline if inline is defined else (opciones|length <= 3) %}
2
+ <div class="choice-container {{ class_group|default('') }} {% if is_inline %}inline-choice{% endif %}" style="margin-bottom: {{ margin_bottom|default('8px') }}; {{ style_group|default('') }}">
2
3
  {% if label %}
3
4
  <label class="form-label {{ class_label|default('') }}" style="{{ style_label|default('') }}">{{ label }}</label>
4
5
  {% endif %}
@@ -1,4 +1,5 @@
1
- <div class="choice-container {{ class_group|default('') }}" style="margin-bottom: {{ margin_bottom|default('8px') }}; {{ style_group|default('') }}">
1
+ {% set is_inline = inline if inline is defined else (opciones|length <= 3) %}
2
+ <div class="choice-container {{ class_group|default('') }} {% if is_inline %}inline-choice{% endif %}" style="margin-bottom: {{ margin_bottom|default('8px') }}; {{ style_group|default('') }}">
2
3
  {% if label %}
3
4
  <label class="form-label {{ class_label|default('') }}" style="{{ style_label|default('') }}">{{ label }}</label>
4
5
  {% endif %}
@@ -68,6 +68,10 @@
68
68
  .signature-container, .form-group, .choice-container, .grid-row {
69
69
  page-break-inside: avoid;
70
70
  }
71
+ .keep-together {
72
+ page-break-inside: avoid !important;
73
+ break-inside: avoid !important;
74
+ }
71
75
  {% else %}
72
76
  @page {
73
77
  size: letter;
@@ -153,6 +157,31 @@
153
157
  margin-bottom: 8px;
154
158
  }
155
159
 
160
+ .choice-container.inline-choice {
161
+ flex-direction: row !important;
162
+ align-items: center !important;
163
+ justify-content: flex-start !important;
164
+ gap: 15px !important;
165
+ }
166
+
167
+ .choice-container.inline-choice .form-label {
168
+ margin-bottom: 0 !important;
169
+ flex: 1 !important;
170
+ padding-right: 10px !important;
171
+ }
172
+
173
+ .choice-container.inline-choice .choice-group {
174
+ margin-top: 0 !important;
175
+ display: inline-block !important;
176
+ flex-shrink: 0 !important;
177
+ white-space: nowrap !important;
178
+ }
179
+
180
+ .choice-container.inline-choice .choice-item {
181
+ margin-bottom: 0 !important;
182
+ margin-right: 16px !important;
183
+ }
184
+
156
185
  .choice-group {
157
186
  display: block;
158
187
  margin-top: 4px;
@@ -1,6 +1,6 @@
1
- <table style="width: 100%; border-collapse: collapse; margin-top: 10px; page-break-inside: auto; orphans: 3; widows: 3;">
1
+ <table class="matriz-riesgo-table" style="width: 100%; border-collapse: collapse; margin-top: 10px; page-break-inside: auto; orphans: 3; widows: 3;">
2
2
  <!-- Fila de encabezados -->
3
- <tr style="background-color: #303d50; page-break-inside: avoid; break-inside: avoid; display: table-row;">
3
+ <tr class="row-header" style="background-color: #303d50; page-break-inside: avoid; break-inside: avoid; display: table-row;">
4
4
  <td class="celda-i" style="width: 14%; padding: 10px 5px 10px 20px; border: 1px solid #303d50;">
5
5
  <label style="margin-bottom: 0px; font-weight: bold; color: white; font-size: 13px;">Item</label>
6
6
  </td>
@@ -26,7 +26,7 @@
26
26
 
27
27
  <!-- Filas de datos -->
28
28
  {% for fila in filas %}
29
- <tr style="border-bottom: 1px solid #e0e0e0; {% if fila.es_subtotal %}background-color: #f9f9f9;{% endif %} page-break-inside: avoid; break-inside: avoid; display: table-row;">
29
+ <tr style="border-bottom: 1px solid #e0e0e0; {% if fila.es_subtotal %}background-color: #f9f9f9;{% endif %} page-break-inside: avoid; break-inside: avoid; display: table-row;" {% if fila.es_seccion_principal %}class="row-seccion"{% elif fila.es_subtotal %}class="row-subtotal"{% else %}class="row-data"{% endif %}>
30
30
  {% if fila.es_seccion_principal %}
31
31
  <!-- Fila principal que abarca todas las columnas -->
32
32
  <td colspan="7" style="padding: 10px 20px; background-color: #f5f5f5; border: 1px solid #e0e0e0;">
@@ -41,7 +41,7 @@
41
41
  {{ fila.item }}
42
42
  </p>
43
43
  </td>
44
- <td class="celda-c" style="width: 25%; padding: 10px 5px; vertical-align: middle; border: 1px solid #e0e0e0;">
44
+ <td class="celda-c" style="width: 20%; padding: 10px 5px; vertical-align: middle; border: 1px solid #e0e0e0;">
45
45
  <!-- Vacío para subtotal -->
46
46
  </td>
47
47
  <td class="celda-c" style="width: 5%; padding: 10px 5px; text-align: center; vertical-align: middle; border: 1px solid #e0e0e0;">
@@ -51,17 +51,17 @@
51
51
  </td>
52
52
  <td class="celda-c" style="width: 5%; padding: 10px 5px; text-align: center; vertical-align: middle; border: 1px solid #e0e0e0;">
53
53
  <p style="margin: 0; font-size: 13px; color: #002857; font-weight: bold;">
54
- {% if fila.escala33 %}{{ fila.escala33|floatformat:2 }}%{% else %}-{% endif %}
54
+ {% if fila.escala33 %}{{ "%.2f"|format(fila.escala33) }}%{% else %}-{% endif %}
55
55
  </p>
56
56
  </td>
57
57
  <td class="celda-c" style="width: 5%; padding: 10px 5px; text-align: center; vertical-align: middle; border: 1px solid #e0e0e0;">
58
58
  <p style="margin: 0; font-size: 13px; color: #002857; font-weight: bold;">
59
- {{ fila.valor_absoluto|default:'-' }}
59
+ {{ fila.valor_absoluto|default('-') }}
60
60
  </p>
61
61
  </td>
62
62
  <td class="celda-c" style="width: 12%; padding: 10px 5px; text-align: center; vertical-align: middle; border: 1px solid #e0e0e0;">
63
63
  <p style="margin: 0; font-size: 13px; color: #002857; font-weight: bold;">
64
- {{ fila.valor_relativo_ponderado|default:0|floatformat:2 }}
64
+ {{ "%.2f"|format(fila.valor_relativo_ponderado|default(0)) }}
65
65
  </p>
66
66
  </td>
67
67
  <td class="celda-d" style="width: 39%; padding: 10px 20px 10px 5px; vertical-align: middle; border: 1px solid #e0e0e0;">
@@ -98,35 +98,35 @@
98
98
  <!-- Columna Escala 100% -->
99
99
  <td class="celda-c" style="width: 5%; padding: 10px 5px; text-align: center; vertical-align: top; border: 1px solid #e0e0e0;">
100
100
  <p style="margin: 0; font-size: 13px; color: #002857;">
101
- {{ fila.escala100|default:'-' }}
101
+ {{ fila.escala100|default('-') }}
102
102
  </p>
103
103
  </td>
104
104
 
105
105
  <!-- Columna Escala 33% -->
106
106
  <td class="celda-c" style="width: 5%; padding: 10px 5px; text-align: center; vertical-align: top; border: 1px solid #e0e0e0;">
107
107
  <p style="margin: 0; font-size: 13px; color: #002857;">
108
- {{ fila.escala33|default:'-' }}
108
+ {{ fila.escala33|default('-') }}
109
109
  </p>
110
110
  </td>
111
111
 
112
112
  <!-- Columna Valor absoluto -->
113
113
  <td class="celda-c" style="width: 5%; padding: 10px 5px; text-align: center; vertical-align: top; border: 1px solid #e0e0e0;">
114
114
  <p style="margin: 0; font-size: 13px; color: #002857; font-weight: {% if fila.valor_absoluto %}bold{% endif %};">
115
- {{ fila.valor_absoluto|default:'-' }}
115
+ {{ fila.valor_absoluto|default('-') }}
116
116
  </p>
117
117
  </td>
118
118
 
119
119
  <!-- Columna Valor relativo ponderado -->
120
120
  <td class="celda-c" style="width: 12%; padding: 10px 5px; text-align: center; vertical-align: top; border: 1px solid #e0e0e0;">
121
121
  <p style="margin: 0; font-size: 13px; color: #002857;">
122
- {{ fila.valor_relativo_ponderado|default:'0'|floatformat:3 }}
122
+ {{ "%.2f"|format(fila.valor_relativo_ponderado|default(0)) }}
123
123
  </p>
124
124
  </td>
125
125
 
126
126
  <!-- Columna Fuentes de información -->
127
127
  <td class="celda-d" style="width: 39%; padding: 10px 20px 10px 5px; vertical-align: top; border: 1px solid #e0e0e0; page-break-inside: avoid; break-inside: avoid;">
128
128
  <p style="margin: 0; font-size: 11px; color: #002857; font-family: 'Roboto', sans-serif;">
129
- {{ fila.fuentes_informacion|default:'' }}
129
+ {{ fila.fuentes_informacion|default('') }}
130
130
  </p>
131
131
  </td>
132
132
  {% endif %}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: assemblerpdf
3
- Version: 1.0.7
3
+ Version: 1.0.8
4
4
  Summary: Generador de PDFs usando WeasyPrint, diseñado para formularios y reportes con componentes genéricos.
5
5
  Author-email: EcosistemaUNP <ecosistema@unp.gov.co>
6
6
  License: MIT
File without changes
File without changes
File without changes