1818from webapp .store .logic import (
1919 get_categories ,
2020)
21+ from cache .cache_utility import redis_cache
2122
2223dashboard = Dashboard (api_session )
2324device_gateway = DeviceGW ("snap" , api_session )
2425
26+ def get_snap_info_key (snap_name ):
27+ user_id = flask .session .get (
28+ "publisher" , {}
29+ ).get ("identity_url" , "" ).split ("+id" )[1 ]
30+
31+ return f"{ user_id } :snap_info:{ snap_name } "
2532
2633@login_required
2734def get_listing_data (snap_name ):
28- snap_details = dashboard .get_snap_info (flask .session , snap_name )
35+ snap_info_key = get_snap_info_key (snap_name )
36+ snap_details = redis_cache .get (snap_info_key , expected_type = dict )
37+
38+ if not snap_details :
39+ snap_details = dashboard .get_snap_info (flask .session , snap_name )
40+ redis_cache .set (snap_info_key , snap_details , ttl = 3600 )
2941
3042 details_metrics_enabled = snap_details ["public_metrics_enabled" ]
3143 details_blacklist = snap_details .get ("public_metrics_blacklist" , [])
@@ -184,6 +196,9 @@ def post_listing_data(snap_name):
184196 dashboard .snap_screenshots (
185197 flask .session , snap_id , images_json , images_files
186198 )
199+ # Invalidate cache after successful screenshot update
200+ snap_info_key = get_snap_info_key (snap_name )
201+ redis_cache .delete (snap_info_key )
187202 except StoreApiResponseErrorList as api_response_error_list :
188203 if api_response_error_list .status_code != 404 :
189204 error_list = error_list + api_response_error_list .errors
@@ -198,6 +213,9 @@ def post_listing_data(snap_name):
198213
199214 try :
200215 dashboard .snap_metadata (flask .session , snap_id , body_json )
216+ # Invalidate cache after successful metadata update
217+ snap_info_key = get_snap_info_key (snap_name )
218+ redis_cache .delete (snap_info_key )
201219 except StoreApiResponseErrorList as api_response_error_list :
202220 if api_response_error_list .status_code != 404 :
203221 error_list = error_list + api_response_error_list .errors
0 commit comments