Source code for autowisp.database.data_model.observing_session

"""Define the observing session table for the pipeline"""

from sqlalchemy import Column, Integer, String, DateTime, ForeignKey

from sqlalchemy.orm import relationship

from autowisp.database.data_model.base import DataModelBase

# Needed to create the relationship
# pylint: disable=unused-import
from autowisp.database.data_model.provenance import observer

# pylint: enable=unused-import

__all__ = ["ObservingSession"]

# TODO replace proper provenance terms


[docs] class ObservingSession(DataModelBase): """The table describing the observing session""" __tablename__ = "observing_session" observer_id = Column( Integer, ForeignKey("observer.id", onupdate="CASCADE", ondelete="RESTRICT"), nullable=False, doc="The id of the observer", ) camera_id = Column( Integer, ForeignKey("camera.id", onupdate="CASCADE", ondelete="RESTRICT"), nullable=False, doc="The id of the camera", ) telescope_id = Column( Integer, ForeignKey("telescope.id", onupdate="CASCADE", ondelete="RESTRICT"), nullable=False, doc="The id of the telescope", ) mount_id = Column( Integer, ForeignKey("mount.id", onupdate="CASCADE", ondelete="RESTRICT"), nullable=False, doc="The id of the mount", ) observatory_id = Column( Integer, ForeignKey("observatory.id", onupdate="CASCADE", ondelete="RESTRICT"), nullable=False, doc="The id of the observatory", ) target_id = Column( Integer, ForeignKey("target.id", onupdate="CASCADE", ondelete="RESTRICT"), nullable=False, doc="The id of the target", ) start_time_utc = Column( DateTime, nullable=False, doc="The start time of the observing session in UTC", ) end_time_utc = Column( DateTime, nullable=False, doc="The end time of the observing session in UTC", ) label = Column( String(100), nullable=False, unique=True, index=True, doc="Unique label assigned to the observing session", ) notes = Column( String(1000), nullable=True, doc="The notes provided for the observing session", ) def __repr__(self): return f"({self.id}) {self.notes} {self.timestamp}" # relationships observer = relationship("Observer", back_populates="observing_sessions") camera = relationship("Camera", back_populates="observing_sessions") telescope = relationship("Telescope", back_populates="observing_sessions") mount = relationship("Mount", back_populates="observing_sessions") observatory = relationship( "Observatory", back_populates="observing_sessions" ) target = relationship("Target", back_populates="observing_sessions") images = relationship("Image", back_populates="observing_session")