"""Unsubmit Model.""" from datetime import datetime from product_review.api import db from product_review.models.review_queue import STATUS, ReviewQueue class Unsubmit(db.Model): """Unsubmit Model.""" __tablename__ = "unsubmit" unsubmit_id = db.Column( "id", db.Integer, primary_key=True, autoincrement=True, nullable=False ) review_queue_id = db.Column( db.Integer, db.ForeignKey("review_queue.id"), nullable=False ) user_id = db.Column(db.String, nullable=False) reason = db.Column(db.String, nullable=False) created_datetime = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) def to_dict(self): """Return a dictionary of output properties.""" items = {} for c in self.__table__.columns: column_name = "unsubmit_id" if c.name == "id" else c.name items[column_name] = getattr(self, column_name) return items def create_unsubmit(review_queue_id, reason, user_id): """Create an unsubmit record.""" created_record = Unsubmit( review_queue_id=review_queue_id, reason=reason, user_id=user_id ) db.session.add(created_record) ReviewQueue.query.filter(ReviewQueue.review_queue_id == review_queue_id).filter( ReviewQueue.status == STATUS.NEW ).update({ReviewQueue.status: STATUS.COMPLETE}) return created_record def delete(review_queue_id): """For integration testing purposes only, delete an unsubmission.""" Unsubmit.query.filter(Unsubmit.review_queue_id == review_queue_id).delete()