@@ -28,6 +28,8 @@ class SelectPerm:
28
28
call : SelectPermCallable = None
29
29
30
30
def __post_init__ (self ):
31
+ if self .call is None and hasattr (self , "_call" ):
32
+ self .call = self ._call
31
33
assert self .call is not None , "call must be set"
32
34
33
35
@@ -42,7 +44,7 @@ def __post_init__(self):
42
44
# 如果td为int,则表示秒数
43
45
self .td = timedelta (seconds = self .td ) if isinstance (self .td , int ) else self .td
44
46
45
- async def call (self , admin : ModelAdmin , request : Request , sel : Select ) -> Select :
47
+ async def _call (self , admin : ModelAdmin , request : Request , sel : Select ) -> Select :
46
48
column = getattr (admin .model , self .time_column )
47
49
return sel .where (column > datetime .now () - self .td )
48
50
@@ -53,7 +55,7 @@ class UserSelectPerm(SelectPerm):
53
55
54
56
user_column : str = "user_id"
55
57
56
- async def call (self , admin : ModelAdmin , request : Request , sel : Select ) -> Select :
58
+ async def _call (self , admin : ModelAdmin , request : Request , sel : Select ) -> Select :
57
59
user_id = await admin .site .auth .get_current_user_identity (request , name = "id" )
58
60
if not user_id : # 未登录
59
61
return sel .where (False )
@@ -68,7 +70,7 @@ class SimpleSelectPerm(SelectPerm):
68
70
values : Union [List [str ], List [int ]] = None
69
71
column : str = "status"
70
72
71
- async def call (self , admin : ModelAdmin , request : Request , sel : Select ) -> Select :
73
+ async def _call (self , admin : ModelAdmin , request : Request , sel : Select ) -> Select :
72
74
if not self .values :
73
75
return sel
74
76
column = getattr (admin .model , self .column )
@@ -83,7 +85,7 @@ class FilterSelectPerm(SelectPerm):
83
85
84
86
filters : list = None
85
87
86
- async def call (self , admin : ModelAdmin , request : Request , sel : Select ) -> Select :
88
+ async def _call (self , admin : ModelAdmin , request : Request , sel : Select ) -> Select :
87
89
if not self .filters :
88
90
return sel
89
91
return sel .filter (* self .filters )
0 commit comments