Skip to content

Commit 8769fbb

Browse files
committed
fix: TypeError in filer.cache.update_folder_permission_cache
1 parent 28acbba commit 8769fbb

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

filer/cache.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def get_folder_perm_cache_key(user: UserModel, permission: str) -> str:
2929
return f"filer:perm:{permission}"
3030

3131

32-
def get_folder_permission_cache(user: UserModel, permission: str) -> typing.Optional[dict]:
32+
def get_folder_permission_cache(user: UserModel, permission: str) -> typing.Optional[typing.Set[int]]:
3333
"""
3434
Retrieves the cached folder permissions for a given user and permission.
3535
@@ -43,7 +43,7 @@ def get_folder_permission_cache(user: UserModel, permission: str) -> typing.Opti
4343
permission (str): The permission for which the permissions are being retrieved.
4444
4545
Returns:
46-
dict or None: The permissions for the user, or None if no cache value exists.
46+
set or None: The permissions for the user, or None if no cache value exists.
4747
"""
4848
cache_value = cache.get(get_folder_perm_cache_key(user, permission))
4949
if cache_value:
@@ -71,7 +71,7 @@ def clear_folder_permission_cache(user: UserModel, permission: typing.Optional[s
7171
cache.delete(get_folder_perm_cache_key(user, permission))
7272

7373

74-
def update_folder_permission_cache(user: UserModel, permission: str, id_list: typing.List[int]) -> None:
74+
def update_folder_permission_cache(user: UserModel, permission: str, id_list: typing.Set[int]) -> None:
7575
"""
7676
Updates the cached folder permissions for a given user and permission.
7777
@@ -84,8 +84,8 @@ def update_folder_permission_cache(user: UserModel, permission: str, id_list: ty
8484
The `user` can be an instance of the default `django.contrib.auth.models.User`
8585
or any custom user model specified by `AUTH_USER_MODEL` in the settings.
8686
permission (str): The permission to update.
87-
id_list (list): The list of IDs to set as the new permissions.
87+
id_list (set): The set of IDs to set as the new permissions.
8888
"""
89-
perms = get_folder_permission_cache(user, permission) or {}
89+
perms = cache.get(get_folder_perm_cache_key(user, permission)) or {}
9090
perms[user.pk] = id_list
9191
cache.set(get_folder_perm_cache_key(user, permission), perms)

tests/test_permissions.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from django.conf import settings
44
from django.contrib.admin import helpers
55
from django.contrib.auth.models import Group, Permission
6+
from django.core.cache import cache
67
from django.core.files import File as DjangoFile
78
from django.test.testcases import TestCase
89
from django.urls import reverse
@@ -163,6 +164,7 @@ def test_combined_groups(self):
163164
# We have to invalidate cache
164165
delattr(self.folder, 'permission_cache')
165166
delattr(self.folder_perm, 'permission_cache')
167+
cache.clear()
166168

167169
self.assertEqual(self.folder.has_read_permission(request1), True)
168170
self.assertEqual(self.folder.has_read_permission(request2), True)
@@ -172,6 +174,7 @@ def test_combined_groups(self):
172174
self.assertEqual(self.folder_perm.pretty_logical_path, "/test_folder2")
173175
finally:
174176
filer_settings.FILER_ENABLE_PERMISSIONS = old_setting
177+
cache.clear()
175178

176179
def test_overlapped_groups_deny1(self):
177180
# Tests overlapped groups with explicit deny
@@ -216,6 +219,7 @@ def test_overlapped_groups_deny1(self):
216219

217220
finally:
218221
filer_settings.FILER_ENABLE_PERMISSIONS = old_setting
222+
cache.clear()
219223

220224
def test_overlapped_groups_deny2(self):
221225
# Tests overlapped groups with explicit deny
@@ -261,6 +265,7 @@ def test_overlapped_groups_deny2(self):
261265

262266
finally:
263267
filer_settings.FILER_ENABLE_PERMISSIONS = old_setting
268+
cache.clear()
264269

265270
def test_overlapped_groups1(self):
266271
# Tests overlapped groups without explicit deny
@@ -305,6 +310,7 @@ def test_overlapped_groups1(self):
305310

306311
finally:
307312
filer_settings.FILER_ENABLE_PERMISSIONS = old_setting
313+
cache.clear()
308314

309315
def test_overlapped_groups2(self):
310316
# Tests overlapped groups without explicit deny
@@ -350,6 +356,7 @@ def test_overlapped_groups2(self):
350356

351357
finally:
352358
filer_settings.FILER_ENABLE_PERMISSIONS = old_setting
359+
cache.clear()
353360

354361
def test_folder_who_owner(self):
355362
perm = FolderPermission.objects.create(

0 commit comments

Comments
 (0)