"""Model and methods for vendor_roles.""" import stringcase from flask import g from sqlalchemy import Column, Integer, String, orm from permissions.connectors import mysql class VendorRole(mysql.Base): """Model for vendor_roles.""" __tablename__ = 'vendor_roles' id = Column(Integer, primary_key=True) # noqa: A003 role = Column(String) def vendor_role_ids_from_label_profile_roles(session: orm.Session, roles: list[str]) -> list[int]: """Get vendor_role ids from a list of v2 roles.""" role_names = [stringcase.titlecase(role.lower()) for role in roles] vendor_roles = session.query(VendorRole).filter(VendorRole.role.in_(role_names)).all() # Shouldn't happen since we check for valid role names before this--but just in case if len(vendor_roles) != len(role_names): g.log.warning( 'Could not translate all label profile roles into vendor_roles', resources={ 'label_profile_roles': roles, 'vendor_roles': [vr.role for vr in vendor_roles], }, ) return [vr.id for vr in vendor_roles]