Files
proc-rota/web/models.py
T
2023-05-23 14:48:12 +01:00

85 lines
2.4 KiB
Python

from sqlalchemy import (
Column,
DateTime,
ForeignKey,
Integer,
String,
Float,
Boolean,
JSON,
)
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from database import Base
class Worker(Base):
__tablename__ = "worker"
name= Column(String)
site= Column(String)
grade= Column(Integer)
id=Column(Integer, primary_key=True, index=True)
fte= Column(Integer)
nwds= Column(JSON)
start_date= Column(DateTime)
end_date= Column(DateTime)
oop= Column(JSON)
not_available_to_work= Column(JSON)
pref_not_to_work= Column(JSON)
work_requests= Column(JSON)
remote_site= Column(String)
previous_shifts= Column(JSON)
shift_balance_extra=Column(JSON)
bank_holiday_extra= Column(Integer)
pair= Column(String)
class SingleShift(Base):
__tablename__ = "single_shift"
id = Column(Integer, primary_key=True, index=True)
name = Column(String)
length = Column(Float)
days = Column(JSON)
sites = Column(JSON)
balance_offset = Column(Float, nullable=True)
balance_weighting = Column(Float)
workers_required = Column(Float)
rota_on_nwds = Column(Boolean)
assign_as_block = Column(Boolean)
force_as_block = Column(Boolean)
force_as_block_unless_nwd = Column(Boolean)
hard_constrain_shift = Column(Boolean)
bank_holidays_only = Column(Boolean)
#constraint = relationship("ShiftConstraint", back_populates="shifts")
constraint = Column(JSON)
# This should never be used from here (automatically created by the pydantic model)
constraint_options = Column(JSON)
constraints = Column(JSON)
#sites = relationship("Site", secondary="site_shift_link_table")
#class ShiftConstraint(Base):
# __tablename__ = "shift_constraint"
# id = Column(Integer, primary_key=True)
# name = Column(String)
# options = Column(Integer, nullable=True)
#
# shifts = relationship("SingleShift", back_populates="constraint")
#
# shift_id = Column(Integer, ForeignKey("single_shift.id"))
#class SiteShiftLinkTable(Base):
# __tablename__ = "site_shift_link_table"
# shift_id = Column(Integer, ForeignKey("single_shift.id"), primary_key=True)
# site_id = Column(Integer, ForeignKey("sites.id"), primary_key=True)
#class Site(Base):
# __tablename__ = "sites"
# id = Column(Integer, primary_key=True)
# name = Column(String)
#
# shifts = relationship(SingleShift, secondary="site_shift_link_table")