11"""Functions for fetching supplier permissions"""
22
3- from clients import logger
3+ from clients import logger , redis_client
4+ import json
5+ from constants import PERMISSIONS_CONFIG_FILE_KEY , VACCINE_TYPE_TO_DISEASES_HASH_KEY
46from errors import VaccineTypePermissionsError
57from elasticache import get_permissions_config_json_from_cache
68
79
8- def get_supplier_permissions (supplier : str ) -> list :
10+ def get_supplier_permissions (supplier : str ) -> list [ str ] :
911 """
1012 Returns the permissions for the given supplier.
1113 Defaults return value is an empty list, including when the supplier has no permissions.
1214 """
13- permissions_config = get_permissions_config_json_from_cache ()
14- return permissions_config .get ("all_permissions" , {}).get (supplier , [])
15+
16+ permissions_data = redis_client .hget (PERMISSIONS_CONFIG_FILE_KEY , supplier )
17+ if not permissions_data :
18+ return []
19+ return json .loads (permissions_data )
20+
21+ def get_permissions_config_json_from_cache () -> dict :
22+ """Gets and returns the permissions config file content from ElastiCache (Redis)."""
23+ return json .loads (redis_client .get (PERMISSIONS_CONFIG_FILE_KEY ))
1524
1625
1726def validate_vaccine_type_permissions (vaccine_type : str , supplier : str ) -> list :
@@ -22,7 +31,7 @@ def validate_vaccine_type_permissions(vaccine_type: str, supplier: str) -> list:
2231 supplier_permissions = get_supplier_permissions (supplier )
2332
2433 # Validate that supplier has at least one permissions for the vaccine type
25- if not any (vaccine_type in permission for permission in supplier_permissions ):
34+ if not any (permission . split ( "." )[ 0 ] == vaccine_type for permission in supplier_permissions ):
2635 error_message = f"Initial file validation failed: { supplier } does not have permissions for { vaccine_type } "
2736 logger .error (error_message )
2837 raise VaccineTypePermissionsError (error_message )
0 commit comments