@@ -75,7 +75,7 @@ def transTreeItem(session: SessionDep, current_user: CurrentUser, item: Dict, ds
7575
7676 # do inner system variable
7777 if sys_variable .type == 'system' :
78- res = whereName + whereTerm + getSysVariableValue (sys_variable , current_user , ds , field )
78+ res = whereName + whereTerm + getSysVariableValue (sys_variable , current_user , ds , field , item )
7979 else :
8080 # check user variable
8181 user_variables = current_user .system_variables
@@ -216,7 +216,8 @@ def userHaveVariable(user_variables: List, sys_variable: SystemVariable):
216216 return False
217217
218218
219- def getSysVariableValue (sys_variable : SystemVariable , current_user : CurrentUser , ds : CoreDatasource , field : CoreField ):
219+ def getSysVariableValue (sys_variable : SystemVariable , current_user : CurrentUser , ds : CoreDatasource , field : CoreField ,
220+ item : Dict , ):
220221 v = None
221222 if sys_variable .value [0 ] == 'name' :
222223 v = current_user .name
@@ -225,8 +226,32 @@ def getSysVariableValue(sys_variable: SystemVariable, current_user: CurrentUser,
225226 if sys_variable .value [0 ] == 'email' :
226227 v = current_user .email
227228
228- if ds .type == 'sqlServer' and (
229- field .field_type == 'nchar' or field .field_type == 'NCHAR' or field .field_type == 'nvarchar' or field .field_type == 'NVARCHAR' ):
230- return f"N'{ v } '"
229+ whereValue = ''
230+ if item ['term' ] == 'null' :
231+ whereValue = ''
232+ elif item ['term' ] == 'not_null' :
233+ whereValue = ''
234+ elif item ['term' ] == 'empty' :
235+ whereValue = "''"
236+ elif item ['term' ] == 'not_empty' :
237+ whereValue = "''"
238+ elif item ['term' ] == 'in' or item ['term' ] == 'not in' :
239+ if ds .type == 'sqlServer' and (
240+ field .field_type == 'nchar' or field .field_type == 'NCHAR' or field .field_type == 'nvarchar' or field .field_type == 'NVARCHAR' ):
241+ whereValue = f"(N'{ v } ')"
242+ else :
243+ whereValue = f"('{ v } ')"
244+ elif item ['term' ] == 'like' or item ['term' ] == 'not like' :
245+ if ds .type == 'sqlServer' and (
246+ field .field_type == 'nchar' or field .field_type == 'NCHAR' or field .field_type == 'nvarchar' or field .field_type == 'NVARCHAR' ):
247+ whereValue = f"N'%{ v } %'"
248+ else :
249+ whereValue = f"'%{ v } %'"
231250 else :
232- return f"'{ v } '"
251+ if ds .type == 'sqlServer' and (
252+ field .field_type == 'nchar' or field .field_type == 'NCHAR' or field .field_type == 'nvarchar' or field .field_type == 'NVARCHAR' ):
253+ whereValue = f"N'{ v } '"
254+ else :
255+ whereValue = f"'{ v } '"
256+
257+ return whereValue
0 commit comments