44from usermanagement_service .users .request_handlers .user import User
55from app .models .user_model import UsersModel
66from app import (
7- user_management_app_logger ,
7+ user_management_logger ,
88 getuser_headers_schema ,
99 usermanager ,
1010 app_manager_db_obj ,
1111)
1212from app .redis_helper import UserManagementRedisHelper
13- from common .pyportal_common .error_handlers .base_error_handler import (
14- PyPortalAdminInvalidRequestError ,
15- PyPortalAdminInternalServerError ,
16- PyPortalAdminNotFoundError ,
13+ from common .pyportal_common .error_handlers .invalid_request_handler import (
14+ EventStreamMonitorInvalidRequestError ,
1715)
16+ from common .pyportal_common .error_handlers .\
17+ internal_server_error_handler import (
18+ EventStreamMonitorInternalServerError ,
19+ )
20+ from common .pyportal_common .error_handlers .not_found_error_handler import (
21+ EventStreamMonitorNotFoundError ,
22+ )
23+ from common .pyportal_common .utils import mask_request_headers
1824
1925
2026def get_user_info (userid ):
2127 try :
22- user_management_app_logger .info (
23- f "REQUEST ==> Received Endpoint for the request:: "
24- f" { request .endpoint } "
28+ user_management_logger .info (
29+ "REQUEST ==> Received Endpoint for the request:: %s" ,
30+ request .endpoint
2531 )
26- user_management_app_logger .info (
27- f"REQUEST ==> Received url for the request :: { request .url } "
32+ user_management_logger .info (
33+ "REQUEST ==> Received url for the request :: %s" ,
34+ request .url
2835 )
2936 if request .method == "GET" :
30- from common .pyportal_common .utils import mask_request_headers
3137 rec_req_headers = dict (request .headers )
3238 masked_headers = mask_request_headers (rec_req_headers )
33- user_management_app_logger .info (
34- f"Received Headers from the request :: { masked_headers } "
39+ user_management_logger .info (
40+ "Received Headers from the request :: %s" ,
41+ masked_headers
3542 )
36- """
37- 1. Find the missing headers, any schema related issue
38- related to headers in the request
39- 2. If any missing headers or schema related issue,
40- send the error response back to client.
41- 3. Custom error response contains the information about
42- headers related to missing/schema issue, with status
43- code as 400, BAD_REQUEST
44- """
43+ # Steps:
44+ # 1. Find the missing headers, any schema related issue
45+ # related to headers in the request
46+ # 2. If any missing headers or schema related issue,
47+ # send the error response back to client.
48+ # 3. Custom error response contains the information about
49+ # headers related to missing/schema issue, with status
50+ # code as 400, BAD_REQUEST
4551 get_header_result = usermanager .generate_req_missing_params (
4652 rec_req_headers , getuser_headers_schema
4753 )
4854 if len (get_header_result .keys ()) != 0 :
49- invalid_header_err_res = PyPortalAdminInvalidRequestError (
55+ invalid_header_err_res = EventStreamMonitorInvalidRequestError (
5056 message = "Request Headers Missing" ,
5157 error_details = get_header_result ,
52- logger = user_management_app_logger ,
58+ logger_instance = user_management_logger ,
5359 )
5460 return invalid_header_err_res .send_response_to_client ()
5561 # Initialize Redis helper for caching
5662 redis_helper = UserManagementRedisHelper ()
5763 # Try to get user from cache first (Cache-Aside pattern)
5864 cached_user = redis_helper .get_cached_user (userid )
5965 if cached_user :
60- user_management_app_logger .info (
61- f"User { userid } retrieved from Redis cache [CACHE HIT]"
66+ user_management_logger .info (
67+ "User %s retrieved from Redis cache [CACHE HIT]" ,
68+ userid
6269 )
6370 # Reconstruct the format expected by
6471 # generate_custom_response_body
@@ -74,122 +81,122 @@ def get_user_info(userid):
7481 messagedata = "Retrieved User"
7582 )
7683 if len (custom_user_response_body .keys ()) <= 0 :
77- invalid_req_err_res = PyPortalAdminInternalServerError (
84+ invalid_req_err_res = EventStreamMonitorInternalServerError (
7885 message = "Get User Response creation Failed" ,
79- logger = user_management_app_logger ,
86+ logger_instance = user_management_logger ,
8087 )
8188 return invalid_req_err_res .send_response_to_client ()
8289 get_usr_response = make_response (custom_user_response_body )
8390 get_usr_response .headers ["Content-Type" ] = "application/json"
8491 get_usr_response .headers ["Cache-Control" ] = "no-cache"
8592 get_usr_response .status_code = 200
86- user_management_app_logger .info (
93+ user_management_logger .info (
8794 "Prepared success response from cache and sending "
8895 "back to client [SUCCESS]"
8996 )
9097 return get_usr_response
9198 # Cache miss - retrieve from database
92- user_management_app_logger .info (
93- f"User { userid } not found in cache, querying database "
94- f"[CACHE MISS]"
99+ user_management_logger .info (
100+ "User %s not found in cache, querying database "
101+ "[CACHE MISS]" ,
102+ userid
95103 )
96104 # Retrieve the user logic.
97105 get_user_management_session = (
98106 app_manager_db_obj .get_session_from_session_maker ()
99107 )
100108 if get_user_management_session is None :
101- session_err_res = PyPortalAdminInternalServerError (
109+ session_err_res = EventStreamMonitorInternalServerError (
102110 message = "Create Session Failed" ,
103- logger = user_management_app_logger
111+ logger_instance = user_management_logger
104112 )
105113 return session_err_res .send_response_to_client ()
106114 # IF the created session is not active, send the response
107115 # back to client as internal error
108116 if get_user_management_session .is_active :
109117 try :
110- """
111- 1. Fetching the user record from the database using
112- the primary key userid
113- 2. Converting the database model of user to defined
114- user and serialize to json
115- 3. Using the serialize, Generating the success custom
116- response, headers
117- 4. Caching the user data in Redis for future requests
118- """
118+ # Steps:
119+ # 1. Fetching the user record from the database using
120+ # the primary key userid
121+ # 2. Converting the database model of user to defined
122+ # user and serialize to json
123+ # 3. Using the serialize, Generating the success custom
124+ # response, headers
125+ # 4. Caching the user data in Redis for future requests
119126 get_user_instance = get_user_management_session .query (
120127 UsersModel
121128 ).get (userid )
122129 if get_user_instance is None :
123- usr_not_found_err_res = PyPortalAdminNotFoundError (
130+ usr_not_found_err_res = EventStreamMonitorNotFoundError (
124131 message = "Retrieved user doesn't exists" ,
125- logger = user_management_app_logger ,
132+ logger_instance = user_management_logger ,
126133 )
127134 return usr_not_found_err_res .send_response_to_client ()
128135 except sqlalchemy .exc .NoResultFound as ex :
129136 # Specific: Query returned no results
130137 app_manager_db_obj .close_session (
131138 session_instance = get_user_management_session
132139 )
133- user_management_app_logger .warning (
134- f "NoResultFound occurred :: { ex } \t Line No:: "
135- f" { sys .exc_info ()[2 ].tb_lineno } "
140+ user_management_logger .warning (
141+ "NoResultFound occurred :: %s \t Line No:: %s" ,
142+ ex , sys .exc_info ()[2 ].tb_lineno
136143 )
137- usr_not_found_err_res = PyPortalAdminNotFoundError (
144+ usr_not_found_err_res = EventStreamMonitorNotFoundError (
138145 message = "User not found" ,
139- logger = user_management_app_logger ,
146+ logger_instance = user_management_logger ,
140147 )
141148 return usr_not_found_err_res .send_response_to_client ()
142149 except sqlalchemy .exc .OperationalError as ex :
143150 # Specific: Database connection/operational issues
144151 app_manager_db_obj .close_session (
145152 session_instance = get_user_management_session
146153 )
147- user_management_app_logger .error (
148- f "OperationalError occurred - database connection "
149- f "issue :: { ex } \t Line No:: "
150- f" { sys .exc_info ()[2 ].tb_lineno } "
154+ user_management_logger .error (
155+ "OperationalError occurred - database connection "
156+ "issue :: %s \t Line No:: %s" ,
157+ ex , sys .exc_info ()[2 ].tb_lineno
151158 )
152- db_err_res = PyPortalAdminInternalServerError (
159+ db_err_res = EventStreamMonitorInternalServerError (
153160 message = "Database connection error" ,
154- logger = user_management_app_logger
161+ logger_instance = user_management_logger
155162 )
156163 return db_err_res .send_response_to_client ()
157164 except sqlalchemy .exc .SQLAlchemyError as ex :
158165 # Specific: Other SQLAlchemy database errors
159166 app_manager_db_obj .close_session (
160167 session_instance = get_user_management_session
161168 )
162- user_management_app_logger .error (
163- f "SQLAlchemyError occurred :: { ex } \t Line No:: "
164- f" { sys .exc_info ()[2 ].tb_lineno } "
169+ user_management_logger .error (
170+ "SQLAlchemyError occurred :: %s \t Line No:: %s" ,
171+ ex , sys .exc_info ()[2 ].tb_lineno
165172 )
166- db_err_res = PyPortalAdminInternalServerError (
173+ db_err_res = EventStreamMonitorInternalServerError (
167174 message = "Database Error" ,
168- logger = user_management_app_logger
175+ logger_instance = user_management_logger
169176 )
170177 return db_err_res .send_response_to_client ()
171178 except Exception as ex : # pylint: disable=broad-except
172179 # Fallback: Unexpected errors
173180 app_manager_db_obj .close_session (
174181 session_instance = get_user_management_session
175182 )
176- user_management_app_logger .error (
177- f "Unexpected error occurred :: { ex } \t Line No:: "
178- f" { sys .exc_info ()[2 ].tb_lineno } "
183+ user_management_logger .error (
184+ "Unexpected error occurred :: %s \t Line No:: %s" ,
185+ ex , sys .exc_info ()[2 ].tb_lineno
179186 )
180- internal_err_res = PyPortalAdminInternalServerError (
187+ internal_err_res = EventStreamMonitorInternalServerError (
181188 message = "Internal Server Error" ,
182- logger = user_management_app_logger ,
189+ logger_instance = user_management_logger ,
183190 )
184191 return internal_err_res .send_response_to_client ()
185192 else :
186193 get_user_instance = User .convert_db_model_to_resp (
187194 get_user_instance
188195 )
189196 if len (get_user_instance .keys ()) <= 0 :
190- invalid_req_err_res = PyPortalAdminInternalServerError (
197+ invalid_req_err_res = EventStreamMonitorInternalServerError (
191198 message = "Get User Response creation Failed" ,
192- logger = user_management_app_logger ,
199+ logger_instance = user_management_logger ,
193200 )
194201 app_manager_db_obj .close_session (
195202 session_instance = get_user_management_session
@@ -207,15 +214,16 @@ def get_user_info(userid):
207214 user_data = user_data_for_cache ,
208215 ttl = 3600 # 1 hour TTL
209216 )
210- user_management_app_logger .info (
211- f"User { userid } cached in Redis [SUCCESS]"
217+ user_management_logger .info (
218+ "User %s cached in Redis [SUCCESS]" ,
219+ userid
212220 )
213221 # pylint: disable=broad-except
214222 except Exception as cache_ex :
215223 # Log cache error but don't fail the request
216- user_management_app_logger .warning (
217- f "Failed to cache user { userid } in Redis: "
218- f" { cache_ex } "
224+ user_management_logger .warning (
225+ "Failed to cache user %s in Redis: %s" ,
226+ userid , cache_ex
219227 )
220228 custom_user_response_body = (
221229 User .generate_custom_response_body (
@@ -225,10 +233,10 @@ def get_user_info(userid):
225233 )
226234 if len (custom_user_response_body .keys ()) <= 0 :
227235 invalid_req_err_res = (
228- PyPortalAdminInternalServerError (
236+ EventStreamMonitorInternalServerError (
229237 message = "Get User success Response "
230238 "creation Failed" ,
231- logger = user_management_app_logger ,
239+ logger_instance = user_management_logger ,
232240 )
233241 )
234242 app_manager_db_obj .close_session (
@@ -241,29 +249,31 @@ def get_user_info(userid):
241249 )
242250 get_usr_response .headers ["Cache-Control" ] = "no-cache"
243251 get_usr_response .status_code = 200
244- user_management_app_logger .info (
245- f"Prepared success response and sending back to "
246- f"client { get_usr_response } :: [SUCCESS]"
252+ user_management_logger .info (
253+ "Prepared success response and sending back to "
254+ "client %s:: [SUCCESS]" ,
255+ get_usr_response
247256 )
248257 app_manager_db_obj .close_session (
249258 session_instance = get_user_management_session
250259 )
251260 return get_usr_response
252261 else :
253262 invalid_req_err_res = (
254- PyPortalAdminInternalServerError (
263+ EventStreamMonitorInternalServerError (
255264 message = "Create Session Failed" ,
256- logger = user_management_app_logger
265+ logger_instance = user_management_logger
257266 )
258267 )
259268 return invalid_req_err_res .send_response_to_client ()
260269
261270 except Exception as ex : # pylint: disable=broad-except
262- user_management_app_logger .error (
263- f "Error occurred :: { ex } \t Line No:: "
264- f" { sys .exc_info ()[2 ].tb_lineno } "
271+ user_management_logger .error (
272+ "Error occurred :: %s \t Line No:: %s" ,
273+ ex , sys .exc_info ()[2 ].tb_lineno
265274 )
266- invalid_req_err_res = PyPortalAdminInternalServerError (
267- message = "Unknown error caused" , logger = user_management_app_logger
275+ invalid_req_err_res = EventStreamMonitorInternalServerError (
276+ message = "Unknown error caused" ,
277+ logger_instance = user_management_logger
268278 )
269279 return invalid_req_err_res .send_response_to_client ()
0 commit comments