ezKit 1.12.48__tar.gz → 1.12.49__tar.gz

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.
Files changed (31) hide show
  1. {ezkit-1.12.48/ezKit.egg-info → ezkit-1.12.49}/PKG-INFO +1 -1
  2. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/database.py +27 -8
  3. {ezkit-1.12.48 → ezkit-1.12.49/ezKit.egg-info}/PKG-INFO +1 -1
  4. {ezkit-1.12.48 → ezkit-1.12.49}/setup.py +1 -1
  5. {ezkit-1.12.48 → ezkit-1.12.49}/LICENSE +0 -0
  6. {ezkit-1.12.48 → ezkit-1.12.49}/MANIFEST.in +0 -0
  7. {ezkit-1.12.48 → ezkit-1.12.49}/README.md +0 -0
  8. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/__init__.py +0 -0
  9. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/_file.py +0 -0
  10. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/auth.py +0 -0
  11. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/bottle.py +0 -0
  12. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/bottle_extensions.py +0 -0
  13. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/cipher.py +0 -0
  14. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/dockerhub.py +0 -0
  15. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/errors.py +0 -0
  16. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/fastapix.py +0 -0
  17. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/http.py +0 -0
  18. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/markdown_to_html.template +0 -0
  19. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/mongo.py +0 -0
  20. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/qywx.py +0 -0
  21. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/redis.py +0 -0
  22. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/sendemail.py +0 -0
  23. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/token.py +0 -0
  24. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/utils.py +0 -0
  25. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/xftp.py +0 -0
  26. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit/zabbix.py +0 -0
  27. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit.egg-info/SOURCES.txt +0 -0
  28. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit.egg-info/dependency_links.txt +0 -0
  29. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit.egg-info/requires.txt +0 -0
  30. {ezkit-1.12.48 → ezkit-1.12.49}/ezKit.egg-info/top_level.txt +0 -0
  31. {ezkit-1.12.48 → ezkit-1.12.49}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ezKit
3
- Version: 1.12.48
3
+ Version: 1.12.49
4
4
  Summary: Easy Kit
5
5
  Author: septvean
6
6
  Author-email: septvean@gmail.com
@@ -129,6 +129,21 @@ def orm_to_dict(obj, include: list | None = None) -> dict | list | None:
129
129
  # --------------------------------------------------------------------------------------------------
130
130
 
131
131
 
132
+ def replace_datetime(source: str, to_pgsql: bool = True) -> str:
133
+ """
134
+ 替换 datetime_date <-> datetime::date
135
+ to_pgsql=True : datetime_date -> datetime::date
136
+ to_pgsql=False : datetime::date -> datetime_date
137
+ """
138
+
139
+ if to_pgsql:
140
+ pattern = re.compile(r"(^|\.)(datetime_date)(__|$)")
141
+ return pattern.sub(r"\1datetime::date\3", source, count=1)
142
+
143
+ pattern = re.compile(r"(^|\.)(datetime::date)$")
144
+ return pattern.sub(r"\1datetime_date\3", source, count=1)
145
+
146
+
132
147
  def build_sqlalchemy_where_clause(data: dict) -> Optional[Tuple[str, Dict[str, Any], list]]:
133
148
  """
134
149
  构建 SQLAlchemy 原生 SQL 查询的 WHERE 子句与绑定参数 (text + :param_name)
@@ -217,16 +232,16 @@ def build_sqlalchemy_where_clause(data: dict) -> Optional[Tuple[str, Dict[str, A
217
232
  param_dict = {}
218
233
  bind_params = []
219
234
 
220
- pattern_date = re.compile(r"(^|\.)(datetime_date)(__|$)")
221
-
222
235
  for field, value in _data.items():
223
236
 
224
237
  # 特殊处理日期字段
225
238
  # 如果匹配到 datetime_date 或者 .datetime_date 或者 datetime_date__ 或者 .datetime_date__ 就替换
226
239
  # is_date_field = field == "datetime_date" or field.startswith("datetime_date__")
227
240
  # base_field = field.replace("datetime_date", "datetime::date", 1) if is_date_field else field
228
- if pattern_date.search(field):
229
- base_field = pattern_date.sub(r"\1datetime::date\3", field, count=1)
241
+ pattern_date_field = re.compile(r"(^|\.)(datetime_date)(__|$)")
242
+ if pattern_date_field.search(field):
243
+ # base_field = pattern_date.sub(r"\1datetime::date\3", field, count=1)
244
+ base_field = replace_datetime(field, to_pgsql=True)
230
245
  else:
231
246
  base_field = field
232
247
 
@@ -238,8 +253,11 @@ def build_sqlalchemy_where_clause(data: dict) -> Optional[Tuple[str, Dict[str, A
238
253
  param_key = f"{base.replace('.', '_')}_{op}"
239
254
 
240
255
  # 特殊处理日期字段
241
- if param_key.startswith("datetime::date"):
242
- param_key = param_key.replace("datetime::date", "datetime_date", 1)
256
+ # if param_key.startswith("datetime::date"):
257
+ # param_key = param_key.replace("datetime::date", "datetime_date", 1)
258
+ pattern_param_key = re.compile(r"(^|\.)(datetime::date)$")
259
+ if pattern_param_key.search(param_key):
260
+ param_key = replace_datetime(param_key, to_pgsql=False)
243
261
 
244
262
  if op == "like":
245
263
  sql_parts.append(f"{base} LIKE :{param_key}")
@@ -264,8 +282,9 @@ def build_sqlalchemy_where_clause(data: dict) -> Optional[Tuple[str, Dict[str, A
264
282
  # 如果匹配到 datetime_date 或者 .datetime_date 或者 datetime_date__ 或者 .datetime_date__ 就替换
265
283
  # if param_key.startswith("datetime::date"):
266
284
  # param_key = param_key.replace("datetime::date", "datetime_date", 1)
267
- if pattern_date.search(param_key):
268
- param_key = pattern_date.sub(r"\1datetime::date\3", param_key, count=1)
285
+ pattern_param_key = re.compile(r"(^|\.)(datetime::date)$")
286
+ if pattern_param_key.search(param_key):
287
+ param_key = replace_datetime(param_key, to_pgsql=False)
269
288
  sql_parts.append(f"{base_field} = :{param_key}")
270
289
  param_dict[param_key] = value
271
290
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ezKit
3
- Version: 1.12.48
3
+ Version: 1.12.49
4
4
  Summary: Easy Kit
5
5
  Author: septvean
6
6
  Author-email: septvean@gmail.com
@@ -4,7 +4,7 @@ from setuptools import find_packages, setup
4
4
 
5
5
  setup(
6
6
  name="ezKit",
7
- version="1.12.48",
7
+ version="1.12.49",
8
8
  author="septvean",
9
9
  author_email="septvean@gmail.com",
10
10
  description="Easy Kit",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes