"""Release Status Model.""" import time from sqlalchemy import Column from sqlalchemy import Enum from sqlalchemy import Integer from sqlalchemy import String from ows_product_physical.connector import mysql class ReleaseStatus(mysql.BaseModel): """Release Status Model.""" __tablename__ = 'release_status' release_status_id = \ Column(Integer, nullable=False, autoincrement=True, primary_key=True) date = Column(String, nullable=False) release_id = Column(Integer, nullable=False) status = Column( Enum('orchard_processing', 'label_confirmation', 'transfer_to_content', 'label_processing', 'in_content'), nullable=False, default='orchard_processing') changed_by = Column(Integer, nullable=False) changed_by_type = Column(Enum('vendor', 'oa'), default='oa') def to_dict(self): """Return dict of release status attributes.""" return { 'release_status_id': self.release_status_id, 'date': self.date, 'release_id': self.release_id, 'status': self.status, 'changed_by': self.changed_by, 'changed_by_type': self.changed_by_type } def create(values, session): """Insert a release_status entry into the database. Args: values (dict): dictionary of values to store session: database connection object """ values.update({'date': time.strftime('%Y-%m-%d')}) new_status = ReleaseStatus(**values) session.add(new_status) session.flush() def delete_all(release_id, session): """Delete all release statuses for the given release_id. Args: release_id (int): release id to remove statuses for session: database connection object """ session.query(ReleaseStatus) \ .filter(ReleaseStatus.release_id == release_id) \ .delete()