Skip to content

Commit

Permalink
fix: add website to invalidate list of cache
Browse files Browse the repository at this point in the history
  • Loading branch information
AmooHashem committed Aug 31, 2024
1 parent 393336d commit 52daf89
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 9 deletions.
2 changes: 1 addition & 1 deletion apps/fsm/views/fsm_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -244,5 +244,5 @@ def soft_delete(self, request, pk=None):
fsm.is_deleted = True
fsm.deleted_at = timezone.now()
fsm.save()
self.cache.invalidate_list_cache()
self.cache.invalidate_list_cache(request.headers.get('website'))
return Response()
2 changes: 1 addition & 1 deletion apps/fsm/views/program_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ def soft_delete(self, request, slug=None):
program.is_deleted = True
program.deleted_at = timezone.now()
program.save()
self.cache.invalidate_list_cache()
self.cache.invalidate_list_cache(request.headers.get('website'))
return Response()

@action(detail=True, methods=['get'])
Expand Down
8 changes: 4 additions & 4 deletions utilities/cache_enabled_model_viewset/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,24 @@ def retrieve(self, request, *args, **kwargs):

def create(self, request, *args, **kwargs):
response = super().create(request, *args, **kwargs)
self.cache.invalidate_list_cache()
self.cache.invalidate_list_cache(request.headers.get('website'))
return response

def update(self, request, *args, **kwargs):
response = super().update(request, *args, **kwargs)
self.cache.invalidate_list_cache()
self.cache.invalidate_list_cache(request.headers.get('website'))
self.cache.invalidate_object_cache(kwargs[self.lookup_field])
return response

def partial_update(self, request, *args, **kwargs):
response = super().partial_update(request, *args, **kwargs)
self.cache.invalidate_list_cache()
self.cache.invalidate_list_cache(request.headers.get('website'))
self.cache.invalidate_object_cache(self.get_object())
return response

def destroy(self, request, *args, **kwargs):
response = super().destroy(request, *args, **kwargs)
self.cache.invalidate_list_cache()
self.cache.invalidate_list_cache(request.headers.get('website'))
self.cache.invalidate_object_cache(kwargs[self.lookup_field])
return response

Expand Down
8 changes: 5 additions & 3 deletions utilities/cache_enabled_model_viewset/model_view_set_cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ class ModelViewSetCache:
def __init__(self, model_view_set_name) -> None:
self.model_view_set_name = model_view_set_name

def get_list_cache_key(self, query_params=None):
def get_list_cache_key(self, query_params=None, website=None):
pattern = f"{self.model_view_set_name}:list"
if website:
pattern += f":{website}"
if query_params:
query_string = "&".join(
f"{k}={v}" for k, v in sorted(query_params.items()))
Expand All @@ -21,8 +23,8 @@ def get_list_cache_key(self, query_params=None):
def get_object_cache_key(self, lookup_field):
return f"{self.model_view_set_name}:retrieve:{lookup_field}"

def invalidate_list_cache(self):
self._delete_from_cache(self.get_list_cache_key())
def invalidate_list_cache(self, website):
self._delete_from_cache(self.get_list_cache_key(website=website))

def invalidate_object_cache(self, lookup_field):
self._delete_from_cache(self.get_object_cache_key(lookup_field))
Expand Down

0 comments on commit 52daf89

Please sign in to comment.