Skip to content
Snippets Groups Projects

Rounding strategy for slot duration at JSON export

Merged Felix Blanke requested to merge feature/duration-rounding-strategy into main
All threads resolved!
1 file
+ 1
1
Compare changes
  • Side-by-side
  • Inline
+ 6
1
 
import decimal
import itertools
import itertools
import json
import json
 
import math
from dataclasses import dataclass
from dataclasses import dataclass
from datetime import datetime, timedelta
from datetime import datetime, timedelta
from typing import Iterable, Generator
from typing import Iterable, Generator
@@ -934,10 +936,12 @@ class AKSlot(models.Model):
@@ -934,10 +936,12 @@ class AKSlot(models.Model):
return []
return []
return [f"availability-person-{owner.pk}"]
return [f"availability-person-{owner.pk}"]
 
ceil_offet_eps = decimal.Decimal(1e-4)
 
# self.slots_in_an_hour is set in AKJSONExportView
# self.slots_in_an_hour is set in AKJSONExportView
data = {
data = {
"id": str(self.pk),
"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": {},
"properties": {},
"room_constraints": [constraint.name
"room_constraints": [constraint.name
for constraint in self.ak.requirements.all()],
for constraint in self.ak.requirements.all()],
@@ -948,6 +952,7 @@ class AKSlot(models.Model):
@@ -948,6 +952,7 @@ class AKSlot(models.Model):
for owner in self.ak.owners.all()]),
for owner in self.ak.owners.all()]),
"description": self.ak.description,
"description": self.ak.description,
"reso": self.ak.reso,
"reso": self.ak.reso,
 
"duration_in_hours": float(self.duration),
},
},
}
}
Loading