summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2024-09-30 23:14:06 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2024-09-30 23:14:06 +0200
commit4d43b2fb344718972aa65f9eb950eb6fdcc572df (patch)
tree3b2f72760b7308da2f36a85371207840882ab28e
parent514c120d378e66b5460d02b0ed978a00a23c0068 (diff)
downloadIshtar-4d43b2fb344718972aa65f9eb950eb6fdcc572df.tar.bz2
Ishtar-4d43b2fb344718972aa65f9eb950eb6fdcc572df.zip
✨ Archaeological files templates: add fields for preventive document rendering for file templates - multiply, sub, add filters for templates
-rw-r--r--archaeological_files/models.py37
-rw-r--r--ishtar_common/utils_secretary.py25
2 files changed, 62 insertions, 0 deletions
diff --git a/archaeological_files/models.py b/archaeological_files/models.py
index 9507a5e0b..3f9623414 100644
--- a/archaeological_files/models.py
+++ b/archaeological_files/models.py
@@ -44,6 +44,7 @@ from ishtar_common.utils import (
from ishtar_common.models import (
Department,
GeneralType,
+ GlobalVar,
BaseHistorizedItem,
Imported,
OwnPerms,
@@ -1043,6 +1044,7 @@ class File(
def get_dynamic_values(self, prefix, values, filtr=None):
q = GenericEquipmentServiceType.objects.filter(available=True)
+ equipment_costs = []
for equipment_service in q.all():
pk = equipment_service.pk
#if not filtr or not any(
@@ -1099,6 +1101,9 @@ class File(
cost_detail = {"name": cost_name}
cost_detail.update(key_costs_dct[cost_name])
values[key_costs].append(InlineClass(cost_detail))
+ if values[key_costs]:
+ equipment_costs += values[key_costs][:]
+ values["equipment_costs"] = equipment_costs
return values
@property
@@ -1225,6 +1230,38 @@ class File(
values["used_equipments"] = self.used_equipments
values["equipments_cost_planned"] = sum([cost for _1, cost, _2, _3, _4 in self.used_equipments])
values["equipments_cost_worked"] = sum([cost for _1, _2, cost, _3, _4 in self.used_equipments])
+
+ values["job_cost"] = 0
+ for k in ["non_permanent_ground_cost_planned", "non_permanent_cost_planned",
+ "permanent_ground_cost_planned", "permanent_cost_planned"]:
+ values["job_cost"] += values.get(k, 0)
+ values["job_permanent_cost"] = 0
+ for k in ["permanent_ground_cost_planned", "permanent_cost_planned"]:
+ values["job_permanent_cost"] += values.get(k, 0)
+ values["job_non_permanent_cost"] = 0
+ for k in ["non_permanent_ground_cost_planned", "non_permanent_cost_planned"]:
+ values["job_non_permanent_cost"] += values.get(k, 0)
+ return values
+
+ def get_values(self, prefix="", no_values=False, filtr=None, **kwargs):
+ if "redevance" in filtr:
+ filtr.append("total_developed_surface")
+ if "equipments_cost_planned_tva" in filtr:
+ filtr.append("equipments_cost_planned")
+ values = super().get_values(
+ prefix=prefix, no_values=no_values, filtr=filtr, **kwargs)
+ q = GlobalVar.objects.filter(slug="taux_rap")
+ if q.count():
+ try:
+ values["redevance"] = float(q.all()[0].value) * float(values.get("total_developed_surface", 0))
+ except ValueError:
+ pass
+ q = GlobalVar.objects.filter(slug="taux_tva")
+ if q.count():
+ try:
+ values["equipments_cost_planned_tva"] = float(q.all()[0].value) * float(values.get("equipments_cost_planned", 0))
+ except ValueError:
+ pass
return values
def render_parcels(self):
diff --git a/ishtar_common/utils_secretary.py b/ishtar_common/utils_secretary.py
index 318f50bdc..188441120 100644
--- a/ishtar_common/utils_secretary.py
+++ b/ishtar_common/utils_secretary.py
@@ -36,6 +36,7 @@ def float_format(value):
return ""
if int(value) == value:
return int(value)
+ value = int(value * 100)/100
return formats.localize(value, use_l10n=True)
@@ -61,6 +62,27 @@ def lowerfirst_filter(value):
return value[0].lower() + value[1:] if value else value
+def add_filter(value1, value2):
+ try:
+ return float(value1 or 0) + float(value2 or 0)
+ except ValueError:
+ return 0
+
+
+def sub_filter(value1, value2):
+ try:
+ return float(value1 or 0) - float(value2 or 0)
+ except ValueError:
+ return 0
+
+
+def multiply_filter(value1, value2):
+ try:
+ return float(value1 or 0) * float(value2 or 0)
+ except ValueError:
+ return 0
+
+
RE_CAP = re.compile(r"[^-' ]+")
SEP = ("un", "une", "le", "la", "les", "lez", "d", "l", "de", "des", "du", "sur", "sous", "en")
@@ -137,6 +159,9 @@ class IshtarSecretaryRenderer(Renderer):
self.environment.filters["number_to_words"] = number_to_words
self.environment.filters["replace_line_breaks"] = replace_line_breaks
self.environment.filters["splitpart"] = splitpart
+ self.environment.filters["multiply"] = multiply_filter
+ self.environment.filters["add"] = add_filter
+ self.environment.filters["sub"] = sub_filter
def ishtar_media_loader(self, media, *args, **kwargs):
res = self.fs_loader(media, *args, **kwargs)