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
+113 -45
View File
@@ -50,10 +50,7 @@ class TestWorkerRequests:
Rota.add_shifts(
SingleShift(
("group1", "group2"),
"a",
12.5,
days,
sites=("group1", "group2"), name="a", length= 12.5, days=days,
workers_required=2,
force_as_block=False,
),
@@ -90,10 +87,7 @@ class TestWorkerRequests:
Rota.add_shifts(
SingleShift(
("group1", "group2"),
"a",
12.5,
days,
sites=("group1", "group2"), name="a", length= 12.5, days=days,
workers_required=2,
force_as_block=False,
),
@@ -128,10 +122,7 @@ class TestWorkerRequests:
Rota.add_shifts(
SingleShift(
("group1", "group2"),
"a",
12.5,
days,
sites=("group1", "group2"), name="a", length= 12.5, days=days,
workers_required=2,
force_as_block=False,
),
@@ -173,10 +164,7 @@ class TestWorkerRequests:
Rota.add_shifts(
SingleShift(
("group1", "group2"),
"a",
12.5,
days,
sites=("group1", "group2"), name="a", length= 12.5, days=days,
workers_required=2,
force_as_block=False,
),
@@ -218,10 +206,7 @@ class TestWorkerRequests:
Rota.add_shifts(
SingleShift(
("group1", "group2"),
"a",
12.5,
days,
sites=("group1", "group2"), name="a", length= 12.5, days=days,
workers_required=2,
balance_offset=1,
force_as_block=False,
@@ -255,10 +240,7 @@ class TestWorkerRequests:
Rota.add_shifts(
SingleShift(
("group1", "group2"),
"a",
12.5,
days,
sites=("group1", "group2"), name="a", length= 12.5, days=days,
workers_required=2,
balance_offset=1,
force_as_block=False,
@@ -312,10 +294,7 @@ class TestWorkerRequests:
Rota.add_shifts(
SingleShift(
("group1", "group2"),
"a",
12.5,
days,
sites=("group1", "group2"), name="a", length= 12.5, days=days,
workers_required=3,
balance_offset=1,
force_as_block=False,
@@ -356,10 +335,7 @@ class TestWorkerRequests:
Rota.add_shifts(
SingleShift(
("group1", "group2"),
"a",
12.5,
days,
sites=("group1", "group2"), name="a", length= 12.5, days=days,
workers_required=2,
balance_offset=1,
force_as_block=False,
@@ -401,10 +377,7 @@ class TestWorkerRequests:
Rota.add_shifts(
SingleShift(
("group1", "group2"),
"a",
12.5,
days,
sites=("group1", "group2"), name="a", length= 12.5, days=days,
workers_required=1,
balance_offset=1,
force_as_block=False,
@@ -417,10 +390,7 @@ class TestWorkerRequests:
Rota.add_shifts(
SingleShift(
("group1", "group2"),
"c",
12.5,
days,
sites=("group1", "group2"), name="c", length= 12.5, days=days,
workers_required=1,
balance_offset=1,
force_as_block=False,
@@ -432,10 +402,7 @@ class TestWorkerRequests:
Rota.add_shifts(
SingleShift(
("group1", "group2"),
"b",
12.5,
days,
sites=("group1", "group2"), name="b", length= 12.5, days=days,
workers_required=1,
balance_offset=1,
force_as_block=False,
@@ -460,4 +427,105 @@ class TestWorkerRequests:
)
with pytest.raises(InvalidShift):
Rota.build_and_solve(options={"ratio": 0.000})
Rota.build_and_solve(options={"ratio": 0.000})
def test_work_requests_generic(self):
"""_summary_"""
Rota = generate_basic_rota()
Rota.constraint_options["balance_bank_holidays"] = False
Rota.add_workers(
[Worker(
name="worker3", site="group1", grade=1,
work_requests=(
[
{"date": i, "shift": "*"}
for i in list(date_generator(datetime.date(2022, 3, 7), 35))
]
),
),
Worker(
name="worker4", site="group1", grade=1,
work_requests=(
[
{"date": i, "shift": "*"}
for i in list(date_generator(datetime.date(2022, 3, 7), 35))
]
),
),]
)
Rota.add_shifts(
SingleShift(
sites=("group1", "group2"), name="a", length= 12.5, days=days,
workers_required=2,
balance_offset=1,
force_as_block=False,
),
)
Rota.build_and_solve(options={"ratio": 0.000})
Rota.export_rota_to_html("work_requests")
shift_summary = Rota.get_shift_summary_dict()
for worker_name in shift_summary:
worker_shifts = shift_summary[worker_name]
worker = Rota.get_worker_by_name(worker_name)
assert worker_shifts["a"] == 35
shift_string = Rota.get_worker_shift_list_string(worker)
if worker.name in ("worker3", "worker4"):
assert shift_string.startswith("a"*35)
def test_work_requests_generic2(self):
"""_summary_"""
Rota = generate_basic_rota()
Rota.constraint_options["balance_bank_holidays"] = False
Rota.add_workers(
[Worker(
name="worker3", site="group1", grade=1,
work_requests=(
[
{"date": i, "shift": "*"}
for i in list(date_generator(datetime.date(2022, 3, 7), 20))
]
),
),
]
)
Rota.add_shifts(
SingleShift(
sites=("group1", "group2"), name="a", length= 12.5, days=days[3:],
workers_required=2,
balance_offset=1,
force_as_block=False,
),
SingleShift(
sites=("group1", "group2"), name="b", length= 12.5, days=days[:3],
workers_required=1,
balance_offset=1,
force_as_block=False,
),
)
Rota.build_and_solve(options={"ratio": 0.1})
Rota.export_rota_to_html("work_requests")
shift_summary = Rota.get_shift_summary_dict()
for worker_name in shift_summary:
worker_shifts = shift_summary[worker_name]
worker = Rota.get_worker_by_name(worker_name)
assert worker_shifts["a"] in (26, 27)
assert worker_shifts["b"] == 10
shift_string = Rota.get_worker_shift_list_string(worker)
if worker.name in ("worker3",):
assert "-" not in shift_string[:20]