Add allow_self option to PostShiftConstraint and PreShiftConstraint for flexible shift assignment
This commit is contained in:
+10
-2
@@ -93,11 +93,13 @@ class PreShiftConstraint(BaseShiftConstraint):
|
||||
days: Any = None
|
||||
ignore_shifts: List[str] = []
|
||||
exclude_days: List[str] = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
|
||||
allow_self: bool = True
|
||||
|
||||
class PostShiftConstraint(BaseShiftConstraint):
|
||||
days: Any = None
|
||||
ignore_shifts: List[str] = []
|
||||
exclude_days: List[str] = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
|
||||
allow_self: bool = True
|
||||
|
||||
class BalanceAcrossGroupsConstraint(BaseShiftConstraint):
|
||||
""""""
|
||||
@@ -2932,7 +2934,10 @@ class RotaBuilder(object):
|
||||
PreShiftConstraint
|
||||
):
|
||||
constraint = constraint_shift.get_constraint(PreShiftConstraint)
|
||||
ignore_shifts = constraint.ignore_shifts + [constraint_shift.name]
|
||||
if constraint.allow_self:
|
||||
ignore_shifts = constraint.ignore_shifts + [constraint_shift.name]
|
||||
else:
|
||||
ignore_shifts = constraint.ignore_shifts
|
||||
if week not in constraint.weeks:
|
||||
continue
|
||||
for n in range(0, constraint.days):
|
||||
@@ -2969,7 +2974,10 @@ class RotaBuilder(object):
|
||||
PostShiftConstraint
|
||||
):
|
||||
constraint = constraint_shift.get_constraint(PostShiftConstraint)
|
||||
ignore_shifts = constraint.ignore_shifts + [constraint_shift.name]
|
||||
if constraint.allow_self:
|
||||
ignore_shifts = constraint.ignore_shifts + [constraint_shift.name]
|
||||
else:
|
||||
ignore_shifts = constraint.ignore_shifts
|
||||
if week not in constraint.weeks:
|
||||
continue
|
||||
for n in range(0, constraint.days):
|
||||
|
||||
Reference in New Issue
Block a user