1
1
import typing
2
2
3
- from django .contrib . auth import get_user_model
3
+ from django .db . models import Model
4
4
from django .core .cache import cache
5
5
6
6
7
- User = get_user_model ( )
7
+ UserModel = typing . TypeVar ( 'UserModel' , bound = Model )
8
8
9
9
10
- def get_folder_perm_cache_key (user : User , permission : str ) -> str :
10
+ def get_folder_perm_cache_key (user : UserModel , permission : str ) -> str :
11
11
"""
12
12
Generates a unique cache key for a given user and permission.
13
13
@@ -18,7 +18,9 @@ def get_folder_perm_cache_key(user: User, permission: str) -> str:
18
18
for far more than 1,000 admin users to make the cached unit require less memory.
19
19
20
20
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.
22
24
permission (str): The permission for which the cache key is being generated.
23
25
24
26
Returns:
@@ -27,15 +29,17 @@ def get_folder_perm_cache_key(user: User, permission: str) -> str:
27
29
return f"filer:perm:{ permission } "
28
30
29
31
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 ]:
31
33
"""
32
34
Retrieves the cached folder permissions for a given user and permission.
33
35
34
36
If the cache value exists, it returns the permissions for the user.
35
37
If the cache value does not exist, it returns None.
36
38
37
39
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.
39
43
permission (str): The permission for which the permissions are being retrieved.
40
44
41
45
Returns:
@@ -47,15 +51,17 @@ def get_folder_permission_cache(user: User, permission: str) -> typing.Optional[
47
51
return None
48
52
49
53
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 :
51
55
"""
52
56
Clears the cached folder permissions for a given user.
53
57
54
58
If a specific permission is provided, it clears the cache for that permission only.
55
59
If no specific permission is provided, it clears the cache for all permissions.
56
60
57
61
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.
59
65
permission (str, optional): The specific permission to clear. Defaults to None.
60
66
"""
61
67
if permission is None :
@@ -65,7 +71,7 @@ def clear_folder_permission_cache(user: User, permission: typing.Optional[str] =
65
71
cache .delete (get_folder_perm_cache_key (user , permission ))
66
72
67
73
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 :
69
75
"""
70
76
Updates the cached folder permissions for a given user and permission.
71
77
@@ -74,7 +80,9 @@ def update_folder_permission_cache(user: User, permission: str, id_list: typing.
74
80
Finally, it sets the updated permissions back into the cache.
75
81
76
82
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.
78
86
permission (str): The permission to update.
79
87
id_list (list): The list of IDs to set as the new permissions.
80
88
"""
0 commit comments