"""Model for vendor_default_template table in salessheets database.""" from oto import response from sqlalchemy import Column from sqlalchemy import ForeignKey from sqlalchemy import Integer from salessheets.connectors import mysql from salessheets.constants import error from salessheets.models import template_details class VendorDefaultTemplate(mysql.BaseModel): """Class representing the salessheets vendor default template.""" __tablename__ = 'vendor_default_template' vendor_id = Column(Integer, primary_key=True, autoincrement=False) template_details_id = Column(Integer, ForeignKey( template_details.TemplateDetails.template_id)) def as_dict(self): """Return object as dict. Returns: dict: Dictionary representation of object """ return { 'vendor_id': self.vendor_id, 'template_id': self.template_details_id, } @mysql.wrap_db_errors def get_vendor_default_template(vendor_id): """Get vendor default template vendor_id. Args: vendor_id (int): A vendor ID. Returns: response.Response: Data of template or error in Response object. """ with mysql.ss_db_session() as session: vendor_template = session.query(VendorDefaultTemplate).filter_by( vendor_id=vendor_id).first() if not vendor_template: return response.create_not_found_response( error.TEMPLATE_DOES_NOT_EXIST) return response.Response(vendor_template.as_dict()) @mysql.wrap_db_errors def set_vendor_template(vendor_id, template_id): """Set default template for given vendor. Args: vendor_id (int): A vendor ID. template_id (int): template id, to set for a vendor. Returns: response.Response: Data of template or error in Response object. """ with mysql.ss_db_session() as session: vendor_template = VendorDefaultTemplate( vendor_id=vendor_id, template_details_id=template_id) session.merge(vendor_template) return response.Response(vendor_template.as_dict())