.
This commit is contained in:
@@ -33,9 +33,9 @@ class RotaSchedule(models.Model):
|
|||||||
Returns the RotaBuilder instance.
|
Returns the RotaBuilder instance.
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
from rota.shifts import RotaBuilder, SingleShift
|
from rota_generator.shifts import RotaBuilder, SingleShift
|
||||||
except Exception:
|
except Exception:
|
||||||
raise RuntimeError("Unable to import rota.shifts; ensure the rota package is importable")
|
raise RuntimeError("Unable to import rota_generator.shifts; ensure the rota package is importable")
|
||||||
|
|
||||||
# compute weeks_to_rota (integer number of weeks)
|
# compute weeks_to_rota (integer number of weeks)
|
||||||
delta = self.end_date - self.start_date
|
delta = self.end_date - self.start_date
|
||||||
@@ -90,7 +90,7 @@ class Worker(models.Model):
|
|||||||
pydantic defaults will fill the rest.
|
pydantic defaults will fill the rest.
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
from rota.workers import Worker as PydWorker
|
from rota_generator.workers import Worker as PydWorker
|
||||||
except Exception:
|
except Exception:
|
||||||
raise RuntimeError("Unable to import rota.workers.Worker; ensure project package is importable")
|
raise RuntimeError("Unable to import rota.workers.Worker; ensure project package is importable")
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import datetime
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
from rota.shifts import NoWorkers, RotaBuilder, SingleShift, WorkerRequirement, days
|
from rota_generator.shifts import NoWorkers, RotaBuilder, SingleShift, WorkerRequirement, days
|
||||||
import typer
|
import typer
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ sites = (
|
|||||||
"proc",
|
"proc",
|
||||||
)
|
)
|
||||||
|
|
||||||
from rota.workers import (
|
from rota_generator.workers import (
|
||||||
Worker,
|
Worker,
|
||||||
NotAvailableToWork,
|
NotAvailableToWork,
|
||||||
NonWorkingDays,
|
NonWorkingDays,
|
||||||
|
|||||||
+2
-2
@@ -3,12 +3,12 @@ import datetime
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
from rota.shifts import MaxShiftsPerWeekConstraint, NoWorkers, PostShiftConstraint, PreShiftConstraint, RotaBuilder, SingleShift, WorkerRequirement, days
|
from rota_generator.shifts import MaxShiftsPerWeekConstraint, NoWorkers, PostShiftConstraint, PreShiftConstraint, RotaBuilder, SingleShift, WorkerRequirement, days
|
||||||
import typer
|
import typer
|
||||||
import subprocess
|
import subprocess
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
|
||||||
from rota.workers import (
|
from rota_generator.workers import (
|
||||||
Worker,
|
Worker,
|
||||||
NotAvailableToWork,
|
NotAvailableToWork,
|
||||||
NonWorkingDays,
|
NonWorkingDays,
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from loguru import logger
|
|||||||
from rich.pretty import pprint
|
from rich.pretty import pprint
|
||||||
|
|
||||||
|
|
||||||
from rota.workers import Worker, NotAvailableToWork, NonWorkingDays, WorkRequests, PreferenceNotToWork, OutOfProgramme
|
from rota_generator.workers import Worker, NotAvailableToWork, NonWorkingDays, WorkRequests, PreferenceNotToWork, OutOfProgramme
|
||||||
|
|
||||||
date_re = r"[\d]{1,2}\/[\d]{1,2}\/[\d]{2}"
|
date_re = r"[\d]{1,2}\/[\d]{1,2}\/[\d]{2}"
|
||||||
|
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ from pyomo.environ import *
|
|||||||
from pyomo.opt import SolverFactory, TerminationCondition, SolverStatus
|
from pyomo.opt import SolverFactory, TerminationCondition, SolverStatus
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
|
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
from rota.console import console
|
from rota_generator.console import console
|
||||||
from rota.bank_holidays import bank_holiday_map
|
from rota_generator.bank_holidays import bank_holiday_map
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
|
||||||
@@ -4,7 +4,7 @@ from typing import Iterable, List, Literal, Optional, Set
|
|||||||
from pydantic import BaseModel, ConfigDict, field_validator, Field
|
from pydantic import BaseModel, ConfigDict, field_validator, Field
|
||||||
|
|
||||||
from rich.pretty import pprint
|
from rich.pretty import pprint
|
||||||
from rota.console import console
|
from rota_generator.console import console
|
||||||
|
|
||||||
# from .shifts import RotaBuilder, days, sites
|
# from .shifts import RotaBuilder, days, sites
|
||||||
import uuid
|
import uuid
|
||||||
@@ -13,7 +13,7 @@ import uuid
|
|||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from rota.shifts import RotaBuilder
|
from rota_generator.shifts import RotaBuilder
|
||||||
|
|
||||||
days = Literal["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
|
days = Literal["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
|
||||||
whole_days = [
|
whole_days = [
|
||||||
@@ -3,8 +3,8 @@ from pyomo.opt import SolverFactory
|
|||||||
from pyomo.opt.results import SolverStatus
|
from pyomo.opt.results import SolverStatus
|
||||||
|
|
||||||
|
|
||||||
from rota.shifts import SingleShift, RotaBuilder, days
|
from rota_generator.shifts import SingleShift, RotaBuilder, days
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
|
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import pytest
|
import pytest
|
||||||
from rota.shifts import InvalidShift, NoWorkers, RotaBuilder, SingleShift, days
|
from rota_generator.shifts import InvalidShift, NoWorkers, RotaBuilder, SingleShift, days
|
||||||
|
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
|
|
||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import pytest
|
import pytest
|
||||||
from rota.shifts import InvalidShift, NoWorkers, RotaBuilder, SingleShift, days
|
from rota_generator.shifts import InvalidShift, NoWorkers, RotaBuilder, SingleShift, days
|
||||||
|
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
|
|
||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import pytest
|
import pytest
|
||||||
from rota.shifts import InvalidShift, NoWorkers, RotaBuilder, SingleShift, days, MinSummedGradeByShiftsPerDayConstraint
|
from rota_generator.shifts import InvalidShift, NoWorkers, RotaBuilder, SingleShift, days, MinSummedGradeByShiftsPerDayConstraint
|
||||||
|
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
|
|
||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import pytest
|
import pytest
|
||||||
import datetime
|
import datetime
|
||||||
from rota.shifts import BalanceAcrossGroupsConstraint, RotaBuilder, SingleShift, days
|
from rota_generator.shifts import BalanceAcrossGroupsConstraint, RotaBuilder, SingleShift, days
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def demo_rota_balance_sites():
|
def demo_rota_balance_sites():
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import pytest
|
import pytest
|
||||||
from pytest import approx
|
from pytest import approx
|
||||||
from rota.shifts import PostShiftConstraint, PreShiftConstraint, RotaBuilder, SingleShift, days
|
from rota_generator.shifts import PostShiftConstraint, PreShiftConstraint, RotaBuilder, SingleShift, days
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
|
|
||||||
def generate_basic_rota(weeks_to_rota=10):
|
def generate_basic_rota(weeks_to_rota=10):
|
||||||
start_date = datetime.date(2022, 3, 7)
|
start_date = datetime.date(2022, 3, 7)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import pytest
|
import pytest
|
||||||
import datetime
|
import datetime
|
||||||
from rota.shifts import MinimumGradeNumberConstraint, RequireRemoteSitePresenceConstraint, RotaBuilder, SingleShift, days, LimitGradeNumberConstraint
|
from rota_generator.shifts import MinimumGradeNumberConstraint, RequireRemoteSitePresenceConstraint, RotaBuilder, SingleShift, days, LimitGradeNumberConstraint
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def limit_constraint_rota():
|
def limit_constraint_rota():
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
import datetime
|
import datetime
|
||||||
from rota.shifts import RotaBuilder, SingleShift, days
|
from rota_generator.shifts import RotaBuilder, SingleShift, days
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def basic_rota():
|
def basic_rota():
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import pytest
|
import pytest
|
||||||
import datetime
|
import datetime
|
||||||
from rota.shifts import NightConstraint, RotaBuilder, SingleShift, days
|
from rota_generator.shifts import NightConstraint, RotaBuilder, SingleShift, days
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def demo_rota_night_unavailable():
|
def demo_rota_night_unavailable():
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import pytest
|
import pytest
|
||||||
from rota.shifts import InvalidShift, NightConstraint, NoWorkers, PostShiftConstraint, PreShiftConstraint, RotaBuilder, SingleShift, days
|
from rota_generator.shifts import InvalidShift, NightConstraint, NoWorkers, PostShiftConstraint, PreShiftConstraint, RotaBuilder, SingleShift, days
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
|
|
||||||
def generate_basic_rota(weeks_to_rota=10):
|
def generate_basic_rota(weeks_to_rota=10):
|
||||||
start_date = datetime.date(2022, 3, 7)
|
start_date = datetime.date(2022, 3, 7)
|
||||||
|
|||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
import pytest
|
import pytest
|
||||||
from rota.shifts import NoWorkers, RotaBuilder, SingleShift, days
|
from rota_generator.shifts import NoWorkers, RotaBuilder, SingleShift, days
|
||||||
import datetime
|
import datetime
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
|
|
||||||
def weeks_from_list(lst):
|
def weeks_from_list(lst):
|
||||||
"""Yield successive n-sized chunks from a lst."""
|
"""Yield successive n-sized chunks from a lst."""
|
||||||
|
|||||||
+2
-2
@@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from rota.shifts import NoWorkers, RequireRemoteSitePresenceConstraint, RotaBuilder, SingleShift, days
|
from rota_generator.shifts import NoWorkers, RequireRemoteSitePresenceConstraint, RotaBuilder, SingleShift, days
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
|
|
||||||
def setup_basic_rota():
|
def setup_basic_rota():
|
||||||
weeks_to_rota = 10
|
weeks_to_rota = 10
|
||||||
|
|||||||
+2
-2
@@ -3,11 +3,11 @@ from re import S
|
|||||||
from black import main
|
from black import main
|
||||||
import pytest
|
import pytest
|
||||||
from pytest import approx
|
from pytest import approx
|
||||||
from rota.shifts import NoWorkers, RotaBuilder, SingleShift, WarningTermination, days
|
from rota_generator.shifts import NoWorkers, RotaBuilder, SingleShift, WarningTermination, days
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import pytest
|
import pytest
|
||||||
from rota.shifts import PostShiftConstraint, PreShiftConstraint, RotaBuilder, SingleShift, days
|
from rota_generator.shifts import PostShiftConstraint, PreShiftConstraint, RotaBuilder, SingleShift, days
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import pytest
|
import pytest
|
||||||
from pytest import approx
|
from pytest import approx
|
||||||
from rota.shifts import PostShiftConstraint, RotaBuilder, SingleShift, days
|
from rota_generator.shifts import PostShiftConstraint, RotaBuilder, SingleShift, days
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
from web.rota.shifts import PreShiftConstraint
|
from web.rota.shifts import PreShiftConstraint
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import pytest
|
import pytest
|
||||||
import datetime
|
import datetime
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from rota.shifts import RotaBuilder, SingleShift, days
|
from rota_generator.shifts import RotaBuilder, SingleShift, days
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def rota_2workers():
|
def rota_2workers():
|
||||||
|
|||||||
+2
-2
@@ -1,11 +1,11 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import pytest
|
import pytest
|
||||||
from rota.shifts import (
|
from rota_generator.shifts import (
|
||||||
InvalidShift, MaxShiftsPerWeekBlockConstraint, MaxShiftsPerWeekConstraint,
|
InvalidShift, MaxShiftsPerWeekBlockConstraint, MaxShiftsPerWeekConstraint,
|
||||||
NoWorkers, PostShiftConstraint, PreShiftConstraint, RotaBuilder, SingleShift,
|
NoWorkers, PostShiftConstraint, PreShiftConstraint, RotaBuilder, SingleShift,
|
||||||
WarningTermination, days, WorkerRequirement
|
WarningTermination, days, WorkerRequirement
|
||||||
)
|
)
|
||||||
from rota.workers import NotAvailableToWork, WorkRequests, Worker, generate_not_available_to_works
|
from rota_generator.workers import NotAvailableToWork, WorkRequests, Worker, generate_not_available_to_works
|
||||||
|
|
||||||
def generate_basic_rota(weeks_to_rota=10, workers=2, start_date=datetime.date(2022, 3, 7)):
|
def generate_basic_rota(weeks_to_rota=10, workers=2, start_date=datetime.date(2022, 3, 7)):
|
||||||
Rota = RotaBuilder(
|
Rota = RotaBuilder(
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import pytest
|
import pytest
|
||||||
from rota.shifts import NoWorkers, RotaBuilder, SingleShift, days
|
from rota_generator.shifts import NoWorkers, RotaBuilder, SingleShift, days
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
|
|
||||||
def weeks_from_list(lst):
|
def weeks_from_list(lst):
|
||||||
"""Yield successive n-sized chunks from a lst."""
|
"""Yield successive n-sized chunks from a lst."""
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import pytest
|
import pytest
|
||||||
from pytest import approx
|
from pytest import approx
|
||||||
from rota.shifts import InvalidShift, NoWorkers, RotaBuilder, SingleShift, days
|
from rota_generator.shifts import InvalidShift, NoWorkers, RotaBuilder, SingleShift, days
|
||||||
|
|
||||||
from rota.workers import Worker
|
from rota_generator.workers import Worker
|
||||||
|
|
||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import pytest
|
import pytest
|
||||||
from rota.shifts import InvalidShift, MaxShiftsPerWeekConstraint, NoWorkers, PostShiftConstraint, RotaBuilder, SingleShift, WarningTermination, WorkerRequirement, days
|
from rota_generator.shifts import InvalidShift, MaxShiftsPerWeekConstraint, NoWorkers, PostShiftConstraint, RotaBuilder, SingleShift, WarningTermination, WorkerRequirement, days
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
from rota.workers import NonWorkingDays, NotAvailableToWork, Worker, generate_not_available_to_works
|
from rota_generator.workers import NonWorkingDays, NotAvailableToWork, Worker, generate_not_available_to_works
|
||||||
from rota.workers import WorkRequests
|
from rota_generator.workers import WorkRequests
|
||||||
from web.rota.shifts import PreShiftConstraint
|
from web.rota.shifts import PreShiftConstraint
|
||||||
|
|
||||||
def generate_basic_rota(
|
def generate_basic_rota(
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ from sqlalchemy.orm import Session
|
|||||||
import os
|
import os
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
from rota.shifts import SingleShift, ShiftConstraint
|
from rota_generator.shifts import SingleShift, ShiftConstraint
|
||||||
|
|
||||||
from models import SingleShift as ModelSingleShift
|
from models import SingleShift as ModelSingleShift
|
||||||
#from models import ShiftConstraint as ModelShiftConstraint
|
#from models import ShiftConstraint as ModelShiftConstraint
|
||||||
|
|||||||
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
from rota.shifts import SingleShift as SingleShiftBase, ShiftConstraint as ShiftConstraintBase
|
from rota_generator.shifts import SingleShift as SingleShiftBase, ShiftConstraint as ShiftConstraintBase
|
||||||
from rota.workers import Worker as WorkerBase
|
from rota_generator.workers import Worker as WorkerBase
|
||||||
|
|
||||||
|
|
||||||
class SingleShift(SingleShiftBase):
|
class SingleShift(SingleShiftBase):
|
||||||
|
|||||||
Reference in New Issue
Block a user