"""Logic for SME. Provides logic for getting SME related info. """ from owsresponse import response from account.constants import error from account.models import ( owner as owner_model, subaccount as subaccount_model, vendor as vendor_model, ) def is_sme_vendor(vendor_id): """Get whether vendor is SME. Args: vendor_id (int): unique identifier of the vendor. Returns: response.Response: success if vendor is SME. """ vendor_result = vendor_model.get_owner(vendor_id) if not vendor_result: return vendor_result owner_result = owner_model.get_owner(vendor_result.message.get('owner')) if not owner_result: return owner_result if owner_model.is_sme(owner_result): return response.Response() return response.create_not_found_response(error.ERROR_MESSAGE_NOT_SME) def is_sme_subaccount(subaccount_id): """Get whether subaccount is SME. Args: subaccount_id (int): unique identifier of the subaccount. Returns: response.Response: success if subaccount is SME. """ subaccount_result = subaccount_model.get_subaccount(subaccount_id) if not subaccount_result: return subaccount_result vendor_result = subaccount_result.message.get('vendor_id') return is_sme_vendor(vendor_result)