Skip to content

Commit ff2602c

Browse files
authored
fix: Use TypeVar bound to Model for type-hinting of the user parameter in cache module (#1495) (#1496)
1 parent 44255c8 commit ff2602c

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

filer/cache.py

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import typing
22

3-
from django.contrib.auth import get_user_model
3+
from django.db.models import Model
44
from django.core.cache import cache
55

66

7-
User = get_user_model()
7+
UserModel = typing.TypeVar('UserModel', bound=Model)
88

99

10-
def get_folder_perm_cache_key(user: User, permission: str) -> str:
10+
def get_folder_perm_cache_key(user: UserModel, permission: str) -> str:
1111
"""
1212
Generates a unique cache key for a given user and permission.
1313
@@ -18,7 +18,9 @@ def get_folder_perm_cache_key(user: User, permission: str) -> str:
1818
for far more than 1,000 admin users to make the cached unit require less memory.
1919
2020
Parameters:
21-
user (User): The user for whom the cache key is being generated.
21+
user (UserModel): The user for whom the cache key is being generated.
22+
The `user` can be an instance of the default `django.contrib.auth.models.User`
23+
or any custom user model specified by `AUTH_USER_MODEL` in the settings.
2224
permission (str): The permission for which the cache key is being generated.
2325
2426
Returns:
@@ -27,15 +29,17 @@ def get_folder_perm_cache_key(user: User, permission: str) -> str:
2729
return f"filer:perm:{permission}"
2830

2931

30-
def get_folder_permission_cache(user: User, permission: str) -> typing.Optional[dict]:
32+
def get_folder_permission_cache(user: UserModel, permission: str) -> typing.Optional[dict]:
3133
"""
3234
Retrieves the cached folder permissions for a given user and permission.
3335
3436
If the cache value exists, it returns the permissions for the user.
3537
If the cache value does not exist, it returns None.
3638
3739
Parameters:
38-
user (User): The user for whom the permissions are being retrieved.
40+
user (UserModel): The user for whom the permissions are being retrieved.
41+
The `user` can be an instance of the default `django.contrib.auth.models.User`
42+
or any custom user model specified by `AUTH_USER_MODEL` in the settings.
3943
permission (str): The permission for which the permissions are being retrieved.
4044
4145
Returns:
@@ -47,15 +51,17 @@ def get_folder_permission_cache(user: User, permission: str) -> typing.Optional[
4751
return None
4852

4953

50-
def clear_folder_permission_cache(user: User, permission: typing.Optional[str] = None) -> None:
54+
def clear_folder_permission_cache(user: UserModel, permission: typing.Optional[str] = None) -> None:
5155
"""
5256
Clears the cached folder permissions for a given user.
5357
5458
If a specific permission is provided, it clears the cache for that permission only.
5559
If no specific permission is provided, it clears the cache for all permissions.
5660
5761
Parameters:
58-
user (User): The user for whom the permissions are being cleared.
62+
user (UserModel): The user for whom the permissions are being cleared.
63+
The `user` can be an instance of the default `django.contrib.auth.models.User`
64+
or any custom user model specified by `AUTH_USER_MODEL` in the settings.
5965
permission (str, optional): The specific permission to clear. Defaults to None.
6066
"""
6167
if permission is None:
@@ -65,7 +71,7 @@ def clear_folder_permission_cache(user: User, permission: typing.Optional[str] =
6571
cache.delete(get_folder_perm_cache_key(user, permission))
6672

6773

68-
def update_folder_permission_cache(user: User, permission: str, id_list: typing.List[int]) -> None:
74+
def update_folder_permission_cache(user: UserModel, permission: str, id_list: typing.List[int]) -> None:
6975
"""
7076
Updates the cached folder permissions for a given user and permission.
7177
@@ -74,7 +80,9 @@ def update_folder_permission_cache(user: User, permission: str, id_list: typing.
7480
Finally, it sets the updated permissions back into the cache.
7581
7682
Parameters:
77-
user (User): The user for whom the permissions are being updated.
83+
user (UserModel): The user for whom the permissions are being updated.
84+
The `user` can be an instance of the default `django.contrib.auth.models.User`
85+
or any custom user model specified by `AUTH_USER_MODEL` in the settings.
7886
permission (str): The permission to update.
7987
id_list (list): The list of IDs to set as the new permissions.
8088
"""

0 commit comments

Comments
 (0)