From dafa0810a062eefe19482c1965b412cddb32ddfd Mon Sep 17 00:00:00 2001 From: Felix Blanke <info@fblanke.de> Date: Tue, 21 Jan 2025 16:16:39 +0100 Subject: [PATCH 1/5] Change rounding strategy to ceil --- AKModel/models.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/AKModel/models.py b/AKModel/models.py index d30912d3..636f7a9f 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -1,5 +1,6 @@ import itertools import json +import math from dataclasses import dataclass from datetime import datetime, timedelta from typing import Iterable, Generator @@ -934,10 +935,12 @@ class AKSlot(models.Model): return [] return [f"availability-person-{owner.pk}"] + ceil_offet_eps = 1e-4 + # self.slots_in_an_hour is set in AKJSONExportView data = { "id": str(self.pk), - "duration": round(self.duration * self.slots_in_an_hour), + "duration": math.ceil(self.duration * self.slots_in_an_hour - ceil_offet_eps), "properties": {}, "room_constraints": [constraint.name for constraint in self.ak.requirements.all()], -- GitLab From 3f8f7ad79bed1d3265a90a0c7b0efbfb61a1c30d Mon Sep 17 00:00:00 2001 From: Felix Blanke <info@fblanke.de> Date: Tue, 21 Jan 2025 16:56:41 +0100 Subject: [PATCH 2/5] change offset from float to decimal --- AKModel/models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/AKModel/models.py b/AKModel/models.py index 636f7a9f..0e995932 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -3,6 +3,7 @@ import json import math from dataclasses import dataclass from datetime import datetime, timedelta +from decimal import Decimal from typing import Iterable, Generator from django.db import models @@ -935,7 +936,7 @@ class AKSlot(models.Model): return [] return [f"availability-person-{owner.pk}"] - ceil_offet_eps = 1e-4 + ceil_offet_eps = decimal.Decimal(1e-4) # self.slots_in_an_hour is set in AKJSONExportView data = { -- GitLab From 693fec82a0f222f59773a298c13f3bf70c4bdb77 Mon Sep 17 00:00:00 2001 From: Felix Blanke <info@fblanke.de> Date: Tue, 21 Jan 2025 17:00:53 +0100 Subject: [PATCH 3/5] Fix import --- AKModel/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AKModel/models.py b/AKModel/models.py index 0e995932..f25b04de 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -1,9 +1,9 @@ +import decimal import itertools import json import math from dataclasses import dataclass from datetime import datetime, timedelta -from decimal import Decimal from typing import Iterable, Generator from django.db import models -- GitLab From 57ac0fe7a353a074d82d1d5be58055e914a4a53b Mon Sep 17 00:00:00 2001 From: Felix Blanke <info@fblanke.de> Date: Tue, 21 Jan 2025 19:50:18 +0100 Subject: [PATCH 4/5] Add new field to AK info block with exact duration in hours --- AKModel/models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/AKModel/models.py b/AKModel/models.py index f25b04de..08607e19 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -952,6 +952,7 @@ class AKSlot(models.Model): for owner in self.ak.owners.all()]), "description": self.ak.description, "reso": self.ak.reso, + "duration_in_hours": self.duration, }, } -- GitLab From 9301ef7a672f9bd5cf4c59ac1264658658bb6e2c Mon Sep 17 00:00:00 2001 From: Felix Blanke <info@fblanke.de> Date: Tue, 21 Jan 2025 19:57:51 +0100 Subject: [PATCH 5/5] Convert decimal to float first --- AKModel/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AKModel/models.py b/AKModel/models.py index 08607e19..57e488fe 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -952,7 +952,7 @@ class AKSlot(models.Model): for owner in self.ak.owners.all()]), "description": self.ak.description, "reso": self.ak.reso, - "duration_in_hours": self.duration, + "duration_in_hours": float(self.duration), }, } -- GitLab