many improvements
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user