many improvements

This commit is contained in:
Ross
2022-07-11 19:46:40 +01:00
parent 0cebbfddf6
commit dc975b991c
25 changed files with 1949 additions and 863 deletions
+99 -97
View File
@@ -15,14 +15,16 @@ def generate_basic_rota(weeks_to_rota=10):
Rota.constraint_options["balance_weekends"] = True
# Add a few workers
Rota.add_workers([
Worker(name="worker1", site="group1", grade=1),
Worker(name="worker2", site="group1", grade=1),
Worker(name="worker3", site="group2", grade=1),
#Worker(name="worker4", site="group2", grade=1),
#Worker(name="worker5", site="group2", grade=1),
#Worker(name="worker6", site="group2", grade=1, fte=50),
])
Rota.add_workers(
[
Worker(name="worker1", site="group1", grade=1),
Worker(name="worker2", site="group1", grade=1),
Worker(name="worker3", site="group2", grade=1),
# Worker(name="worker4", site="group2", grade=1),
# Worker(name="worker5", site="group2", grade=1),
# Worker(name="worker6", site="group2", grade=1, fte=50),
]
)
return Rota
@@ -33,22 +35,22 @@ class TestBalancing:
Rota.add_shifts(
SingleShift(
("group1", "group2"),
"a",
12.5,
days,
sites=("group1", "group2"),
name="a",
length=12.5,
days=days,
balance_offset=2,
workers_required=1,
force_as_block=False
force_as_block=False,
),
SingleShift(
("group1", "group2"),
"b",
12.5,
days,
sites=("group1", "group2"),
name="b",
length=12.5,
days=days,
balance_offset=2,
workers_required=1,
force_as_block=False
force_as_block=False,
),
)
@@ -68,30 +70,30 @@ class TestBalancing:
Rota.add_shifts(
SingleShift(
("group1", "group2"),
"a",
12.5,
days,
sites=["group1", "group2"],
name="a",
length=12.5,
days=days,
balance_weighting=4,
workers_required=1,
force_as_block=False,
constraint=["preclear2", "postclear2"],
constraint=[{"name": "preclear2"}, {"name": "postclear2"}],
),
SingleShift(
("group1", "group2"),
"b",
12.5,
days,
sites=("group1", "group2"),
name="b",
length=12.5,
days=days,
workers_required=1,
force_as_block=False
force_as_block=False,
),
SingleShift(
("group1", "group2"),
"c",
12.5,
days[0],
sites=("group1", "group2"),
name="c",
length=12.5,
days=days[0],
workers_required=1,
force_as_block=False
force_as_block=False,
),
)
@@ -103,39 +105,39 @@ class TestBalancing:
worker_shifts = shift_summary[worker_name]
worker = Rota.get_worker_by_name(worker_name)
assert worker_shifts["a"] in (46,47,48)
#assert worker_shifts["b"] in (22, 23, 24, 25)
assert worker_shifts["a"] in (46, 47, 48)
# assert worker_shifts["b"] in (22, 23, 24, 25)
def test_weighted_shift_balancing2(self):
Rota = generate_basic_rota(23)
Rota.add_shifts(
SingleShift(
("group1", "group2"),
"a",
12.5,
days,
#balance_weighting=4,
sites=("group1", "group2"),
name="a",
length=12.5,
days=days,
# balance_weighting=4,
workers_required=1,
force_as_block=False,
#constraint=["preclear2", "postclear2"],
# constraint=["preclear2", "postclear2"],
),
SingleShift(
("group1", "group2"),
"b",
12.5,
days,
sites=("group1", "group2"),
name="b",
length=12.5,
days=days,
balance_weighting=4,
workers_required=1,
force_as_block=False
force_as_block=False,
),
SingleShift(
("group1", "group2"),
"c",
12.5,
days[0],
sites=("group1", "group2"),
name="c",
length=12.5,
days=days[0],
workers_required=1,
force_as_block=False
force_as_block=False,
),
)
@@ -147,41 +149,41 @@ class TestBalancing:
worker_shifts = shift_summary[worker_name]
worker = Rota.get_worker_by_name(worker_name)
#assert worker_shifts["a"] in (46,47,48)
#assert worker_shifts["c"] in (46,47,48)
assert worker_shifts["b"] in (52,53,54,55)
# assert worker_shifts["a"] in (46,47,48)
# assert worker_shifts["c"] in (46,47,48)
assert worker_shifts["b"] in (52, 53, 54, 55)
def test_weighted_shift_balancing3(self):
Rota = generate_basic_rota(23)
Rota.add_shifts(
SingleShift(
("group1", "group2"),
"a",
12.5,
days,
#balance_weighting=4,
sites=("group1", "group2"),
name="a",
length=12.5,
days=days,
# balance_weighting=4,
workers_required=1,
force_as_block=False,
#constraint=["preclear2", "postclear2"],
# constraint=["preclear2", "postclear2"],
),
SingleShift(
("group1", "group2"),
"b",
12.5,
days,
sites=("group1", "group2"),
name="b",
length=12.5,
days=days,
balance_weighting=4,
workers_required=1,
force_as_block=False
force_as_block=False,
),
SingleShift(
("group1", "group2"),
"c",
12.5,
days[0],
sites=("group1", "group2"),
name="c",
length=12.5,
days=days[0],
balance_weighting=4,
workers_required=1,
force_as_block=False
force_as_block=False,
),
)
@@ -193,9 +195,9 @@ class TestBalancing:
worker_shifts = shift_summary[worker_name]
worker = Rota.get_worker_by_name(worker_name)
#assert worker_shifts["a"] in (46,47,48)
assert worker_shifts["c"] in (7,8)
assert worker_shifts["b"] in (52,53,54,55)
# assert worker_shifts["a"] in (46,47,48)
assert worker_shifts["c"] in (7, 8)
assert worker_shifts["b"] in (52, 53, 54, 55)
def test_weighted_shift_balancing4(self):
Rota = generate_basic_rota(10)
@@ -206,25 +208,25 @@ class TestBalancing:
Rota.add_shifts(
SingleShift(
("group1", "group2"),
"a",
12.5,
days,
sites=("group1", "group2"),
name="a",
length=12.5,
days=days,
balance_offset=99,
balance_weighting=8,
workers_required=2,
force_as_block=False,
#constraint=["preclear2", "postclear2"],
# constraint=["preclear2", "postclear2"],
),
SingleShift(
("group2","group3"),
"b",
12.5,
days,
sites=("group2", "group3"),
name="b",
length=12.5,
days=days,
balance_offset=99,
#balance_weighting=4,
# balance_weighting=4,
workers_required=1,
force_as_block=False
force_as_block=False,
),
)
@@ -236,7 +238,7 @@ class TestBalancing:
worker_shifts = shift_summary[worker_name]
worker = Rota.get_worker_by_name(worker_name)
assert worker_shifts["a"] in (0, 46,47,48)
assert worker_shifts["a"] in (0, 46, 47, 48)
def test_weighted_shift_balancing5(self):
Rota = generate_basic_rota(10)
@@ -247,25 +249,25 @@ class TestBalancing:
Rota.add_shifts(
SingleShift(
("group1", "group2"),
"a",
12.5,
days,
sites=("group1", "group2"),
name="a",
length=12.5,
days=days,
balance_offset=99,
#balance_weighting=8,
# balance_weighting=8,
workers_required=2,
force_as_block=False,
#constraint=["preclear2", "postclear2"],
# constraint=["preclear2", "postclear2"],
),
SingleShift(
("group2","group3"),
"b",
12.5,
days,
sites=("group2", "group3"),
name="b",
length=12.5,
days=days,
balance_offset=99,
balance_weighting=4,
workers_required=1,
force_as_block=False
force_as_block=False,
),
)
@@ -277,4 +279,4 @@ class TestBalancing:
worker_shifts = shift_summary[worker_name]
worker = Rota.get_worker_by_name(worker_name)
assert worker_shifts["b"] in (0, 35)
assert worker_shifts["b"] in (0, 35)