"""Module that validates upc for product.""" from oto import response from assets.constants import error from assets.models import ows_product from assets.models import ows_track def validate_upc_for_product(product_id, upc): """Validate if product_id and upc match.. Args: product_id (int): Product id. upc (int): Upc to check. Returns: flask.Response: Response with success or error message. """ product_data_response = ows_product.get_product_by_id(product_id) if not product_data_response: return product_data_response product_data = product_data_response.message if upc != product_data['upc']: return response.create_error_response( error.ERROR_CODE_PRODUCT_ID_UPC_MISMATCH, 'UPC {upc} does not match product_id {product_id}'.format( upc=upc, product_id=product_id), 403) return response.Response({'status': error.SUCCESS_CODE}) def validate_product_track_ownership(product_id, track_unique_id): """Validate the product track ownership. Args: product_id (int): Product id. track_unique_id (int): Track unique id. Returns: flask.Response: Response with success or error message. """ product_tracks_data_response = ows_track.get_tracks_by_product_id( product_id) if not product_tracks_data_response: return product_tracks_data_response tracks = product_tracks_data_response.message['items'] tracks_uids = [t['tuid'] for t in tracks] if track_unique_id not in tracks_uids: return response.create_error_response( error.ERROR_CODE_PRODUCT_TRACK_OWNERSHIP, 'Track {tuid} does not belong to product with id {puid}'.format( tuid=track_unique_id, puid=product_id), 403) return response.Response({'status': error.SUCCESS_CODE})