ezKit 1.12.39__py3-none-any.whl → 1.12.41__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
ezKit/auth.py ADDED
@@ -0,0 +1,15 @@
1
+ import bcrypt
2
+
3
+
4
+ def hash_password(password: str) -> str:
5
+ try:
6
+ return bcrypt.hashpw(password.encode(), bcrypt.gensalt()).decode()
7
+ except Exception as _:
8
+ return ""
9
+
10
+
11
+ def verify_password(plain_password: str, hashed_password: str) -> bool:
12
+ try:
13
+ return bcrypt.checkpw(plain_password.encode(), hashed_password.encode())
14
+ except Exception as _:
15
+ return False
ezKit/database.py CHANGED
@@ -25,7 +25,7 @@ from .errors import database_error, sqlalchemy_error
25
25
 
26
26
  # --------------------------------------------------------------------------------------------------
27
27
 
28
- Base = declarative_base()
28
+ Base: DeclarativeBase = declarative_base()
29
29
 
30
30
  # --------------------------------------------------------------------------------------------------
31
31
 
@@ -123,6 +123,78 @@ def build_sqlalchemy_where_clause(data: dict) -> Optional[Tuple[str, Dict[str, A
123
123
  - 返回: (SQL 子句字符串, 参数 dict, bindparams 列表)
124
124
  """
125
125
 
126
+ # try:
127
+
128
+ # _data = deepcopy(data)
129
+
130
+ # sql_parts = []
131
+ # param_dict = {}
132
+ # bind_params = []
133
+
134
+ # for field, value in _data.items():
135
+
136
+ # # 特殊处理日期字段
137
+ # if field == "date" or field.startswith("date__"):
138
+ # field = field.replace("date", "datetime::date", 1)
139
+
140
+ # if "__" in field:
141
+
142
+ # base, op = field.split("__", 1)
143
+
144
+ # # 避免字段名冲突
145
+ # param_key = f"{base}_{op}"
146
+
147
+ # # 特殊处理日期字段
148
+ # if param_key.startswith("datetime::date"):
149
+ # param_key = param_key.replace("datetime::date", "datetime_date", 1)
150
+
151
+ # if op == "like":
152
+ # sql_parts.append(f"{base} LIKE :{param_key}")
153
+ # param_dict[param_key] = f"%{value}%"
154
+ # elif op == "ge":
155
+ # sql_parts.append(f"{base} >= :{param_key}")
156
+ # param_dict[param_key] = value
157
+ # elif op == "gt":
158
+ # sql_parts.append(f"{base} > :{param_key}")
159
+ # param_dict[param_key] = value
160
+ # elif op == "le":
161
+ # sql_parts.append(f"{base} <= :{param_key}")
162
+ # param_dict[param_key] = value
163
+ # elif op == "lt":
164
+ # sql_parts.append(f"{base} < :{param_key}")
165
+ # param_dict[param_key] = value
166
+ # elif op == "ne":
167
+ # sql_parts.append(f"{base} != :{param_key}")
168
+ # param_dict[param_key] = value
169
+ # elif op == "in" and isinstance(value, list):
170
+ # sql_parts.append(f"{base} IN :{param_key}")
171
+ # param_dict[param_key] = value
172
+ # bind_params.append(bindparam(param_key, expanding=True))
173
+ # elif op == "between" and isinstance(value, list) and len(value) == 2:
174
+ # sql_parts.append(f"{base} BETWEEN :{param_key}_start AND :{param_key}_end")
175
+ # param_dict[f"{param_key}_start"] = value[0]
176
+ # param_dict[f"{param_key}_end"] = value[1]
177
+
178
+ # else:
179
+
180
+ # param_key = field
181
+
182
+ # # 特殊处理日期字段
183
+ # if param_key.startswith("datetime::date"):
184
+ # param_key = param_key.replace("datetime::date", "datetime_date", 1)
185
+
186
+ # sql_parts.append(f"{field} = :{param_key}")
187
+
188
+ # param_dict[param_key] = value
189
+
190
+ # where_clause = " AND ".join(sql_parts)
191
+
192
+ # return where_clause, param_dict, bind_params
193
+
194
+ # except Exception as e:
195
+ # logger.exception(e)
196
+ # return None
197
+
126
198
  try:
127
199
 
128
200
  _data = deepcopy(data)
@@ -134,37 +206,22 @@ def build_sqlalchemy_where_clause(data: dict) -> Optional[Tuple[str, Dict[str, A
134
206
  for field, value in _data.items():
135
207
 
136
208
  # 特殊处理日期字段
137
- if field == "date" or field.startswith("date__"):
138
- field = field.replace("date", "datetime::date", 1)
209
+ is_date_field = field == "date" or field.startswith("date__")
210
+ base_field = field.replace("date", "datetime::date", 1) if is_date_field else field
139
211
 
140
- if "__" in field:
212
+ if "__" in base_field:
141
213
 
142
- base, op = field.split("__", 1)
214
+ base, op = base_field.split("__", 1)
143
215
 
144
216
  # 避免字段名冲突
145
- param_key = f"{base}_{op}"
146
-
147
- # 特殊处理日期字段
148
- if param_key.startswith("datetime::date"):
149
- param_key = param_key.replace("datetime::date", "datetime_date", 1)
217
+ param_key = f"{base.replace('.', '_')}_{op}"
150
218
 
151
219
  if op == "like":
152
220
  sql_parts.append(f"{base} LIKE :{param_key}")
153
221
  param_dict[param_key] = f"%{value}%"
154
- elif op == "ge":
155
- sql_parts.append(f"{base} >= :{param_key}")
156
- param_dict[param_key] = value
157
- elif op == "gt":
158
- sql_parts.append(f"{base} > :{param_key}")
159
- param_dict[param_key] = value
160
- elif op == "le":
161
- sql_parts.append(f"{base} <= :{param_key}")
162
- param_dict[param_key] = value
163
- elif op == "lt":
164
- sql_parts.append(f"{base} < :{param_key}")
165
- param_dict[param_key] = value
166
- elif op == "ne":
167
- sql_parts.append(f"{base} != :{param_key}")
222
+ elif op in ("ge", "gt", "le", "lt", "ne"):
223
+ operator = {"ge": ">=", "gt": ">", "le": "<=", "lt": "<", "ne": "!="}[op]
224
+ sql_parts.append(f"{base} {operator} :{param_key}")
168
225
  param_dict[param_key] = value
169
226
  elif op == "in" and isinstance(value, list):
170
227
  sql_parts.append(f"{base} IN :{param_key}")
@@ -174,21 +231,12 @@ def build_sqlalchemy_where_clause(data: dict) -> Optional[Tuple[str, Dict[str, A
174
231
  sql_parts.append(f"{base} BETWEEN :{param_key}_start AND :{param_key}_end")
175
232
  param_dict[f"{param_key}_start"] = value[0]
176
233
  param_dict[f"{param_key}_end"] = value[1]
177
-
178
234
  else:
179
-
180
- param_key = field
181
-
182
- # 特殊处理日期字段
183
- if param_key.startswith("datetime::date"):
184
- param_key = param_key.replace("datetime::date", "datetime_date", 1)
185
-
186
- sql_parts.append(f"{field} = :{param_key}")
187
-
235
+ param_key = base_field.replace(".", "_")
236
+ sql_parts.append(f"{base_field} = :{param_key}")
188
237
  param_dict[param_key] = value
189
238
 
190
239
  where_clause = " AND ".join(sql_parts)
191
-
192
240
  return where_clause, param_dict, bind_params
193
241
 
194
242
  except Exception as e:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ezKit
3
- Version: 1.12.39
3
+ Version: 1.12.41
4
4
  Summary: Easy Kit
5
5
  Author: septvean
6
6
  Author-email: septvean@gmail.com
@@ -1,9 +1,10 @@
1
1
  ezKit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  ezKit/_file.py,sha256=0qRZhwYuagTgTGrhm-tzAMvEQT4HTJA_xZKqF2bo0ho,1207
3
+ ezKit/auth.py,sha256=HO19O4qOz68e0YwOP04habxMCAk42B3D7LW7yKgm9ZA,398
3
4
  ezKit/bottle.py,sha256=43h4v1kzz6qrLvCt5IMN0H-gFtaT0koG9wETqteXsps,181666
4
5
  ezKit/bottle_extensions.py,sha256=27rogmfK7mL2qUSjXH79IMGZbCVULtYEikql_N9O6Zs,1165
5
6
  ezKit/cipher.py,sha256=7jBarRH7ukSYzkz-Anl8B8JzluhnRz4CLHidPRRj_cg,2939
6
- ezKit/database.py,sha256=z5NM8pusBCEPF8Gize2cvp-XWUimP_CIsrEhBeciTmQ,30240
7
+ ezKit/database.py,sha256=GUU7g3XMT7IGQgyLSPhgES1gmkMM63ekvPHh17an2CM,32281
7
8
  ezKit/dockerhub.py,sha256=j-wQO-71BsOgExHZhYynuy2k_hCX3on-vg0TH7QCit4,1996
8
9
  ezKit/errors.py,sha256=92PggwPQfTS3Vg4og7GHYnO9CTSM7zmuh2w3kx_tSBE,1425
9
10
  ezKit/fastapix.py,sha256=-nz565ASKvp3nGs9J4wORTHxlhMozqCwv8zREWpmYtI,3382
@@ -17,8 +18,8 @@ ezKit/token.py,sha256=Ac-i9xfq4TqpGyfCzakjrh4NYzxHiN2sCQrMk1tzVi8,1716
17
18
  ezKit/utils.py,sha256=U457ahFkxIXuB-qWvS3995xJs-LlkFIX5_ZWVgmL5cY,43130
18
19
  ezKit/xftp.py,sha256=-XQXyhMqeigT63P6sXkSS7r4GROXyqqlkzKxITLWG-g,8278
19
20
  ezKit/zabbix.py,sha256=PkMnfu7mcuotwwIIsHaC9FsNg-gap6hD1xvm0AwSL1Y,33777
20
- ezkit-1.12.39.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
21
- ezkit-1.12.39.dist-info/METADATA,sha256=KKF9rhoorhoEcup3b6vhxAvyE2SZGVnifoiwpGP-_fg,317
22
- ezkit-1.12.39.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
23
- ezkit-1.12.39.dist-info/top_level.txt,sha256=aYLB_1WODsqNTsTFWcKP-BN0KCTKcV-HZJ4zlHkCFw8,6
24
- ezkit-1.12.39.dist-info/RECORD,,
21
+ ezkit-1.12.41.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
22
+ ezkit-1.12.41.dist-info/METADATA,sha256=4d8g9pPedTnlzUjyW29TPj9wniRuqxuJeLPSYkeooe4,317
23
+ ezkit-1.12.41.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
24
+ ezkit-1.12.41.dist-info/top_level.txt,sha256=aYLB_1WODsqNTsTFWcKP-BN0KCTKcV-HZJ4zlHkCFw8,6
25
+ ezkit-1.12.41.dist-info/RECORD,,