fastgenerateapi 1.2.19__tar.gz → 1.2.21__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 (117) hide show
  1. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/PKG-INFO +1 -1
  2. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/__version__.py +1 -1
  3. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/get_one_view.py +10 -4
  4. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/mixin/utils/xlsx_util.py +18 -16
  5. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/controller/filter_controller.py +7 -0
  6. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/my_fields/enum_field.py +2 -1
  7. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi.egg-info/PKG-INFO +1 -1
  8. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/LICENSE +0 -0
  9. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/README.md +0 -0
  10. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/__init__.py +0 -0
  11. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/__init__.py +0 -0
  12. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/api_view.py +0 -0
  13. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/base_view.py +0 -0
  14. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/create_view.py +0 -0
  15. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/delete_filter_view.py +0 -0
  16. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/delete_tree_view.py +0 -0
  17. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/delete_view.py +0 -0
  18. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/get_all_view.py +0 -0
  19. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/get_relation_view.py +0 -0
  20. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/get_tree_view.py +0 -0
  21. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/mixin/__init__.py +0 -0
  22. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/mixin/base_mixin.py +0 -0
  23. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/mixin/dbmodel_mixin.py +0 -0
  24. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/mixin/get_mixin.py +0 -0
  25. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/mixin/response_mixin.py +0 -0
  26. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/mixin/save_mixin.py +0 -0
  27. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/mixin/tool_mixin.py +0 -0
  28. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/mixin/utils/__init__.py +0 -0
  29. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/mixin/utils/docx_util.py +0 -0
  30. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/mixin/utils/file_util.py +0 -0
  31. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/mixin/utils/pdf_util.py +0 -0
  32. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/mixin/utils/zip_util.py +0 -0
  33. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/switch_view.py +0 -0
  34. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/update_relation_view.py +0 -0
  35. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/api_view/update_view.py +0 -0
  36. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/cache/__init__.py +0 -0
  37. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/cache/cache_decorator.py +0 -0
  38. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/cache/key_builder.py +0 -0
  39. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/channel/__init__.py +0 -0
  40. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/channel/connection_manager.py +0 -0
  41. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/channel/consumer.py +0 -0
  42. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/channel/websocket_view.py +0 -0
  43. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/controller/__init__.py +0 -0
  44. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/controller/router_controller.py +0 -0
  45. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/controller/rpc_controller.py +0 -0
  46. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/controller/search_controller.py +0 -0
  47. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/controller/ws_controller.py +0 -0
  48. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/data_type/__init__.py +0 -0
  49. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/data_type/data_type.py +0 -0
  50. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/data_type/mysql_data_type.py +0 -0
  51. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/data_type/tortoise_type.py +0 -0
  52. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/deps/__init__.py +0 -0
  53. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/deps/filter_params_deps.py +0 -0
  54. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/deps/tree_params_deps.py +0 -0
  55. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/example/__init__.py +0 -0
  56. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/example/models.py +0 -0
  57. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/example/routers.py +0 -0
  58. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/example/schemas.py +0 -0
  59. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/example/views.py +0 -0
  60. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/fastapi_utils/__init__.py +0 -0
  61. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/fastapi_utils/all.py +0 -0
  62. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/fastapi_utils/param_utils.py +0 -0
  63. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/fastapi_utils/response_utils.py +0 -0
  64. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/fastapi_utils/tortoise_utils.py +0 -0
  65. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/model/__init__.py +0 -0
  66. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/model/base_model.py +0 -0
  67. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/my_fields/__init__.py +0 -0
  68. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/my_fields/aes_field.py +0 -0
  69. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/my_fields/pk_field.py +0 -0
  70. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/my_fields/pwd_field.py +0 -0
  71. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/my_fields/soft_delete_field.py +0 -0
  72. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/my_fields/validator.py +0 -0
  73. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/pydantic_utils/__init__.py +0 -0
  74. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/pydantic_utils/base_model.py +0 -0
  75. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/pydantic_utils/base_settings.py +0 -0
  76. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/pydantic_utils/json_encoders.py +0 -0
  77. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/schemas_factory/__init__.py +0 -0
  78. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/schemas_factory/common_function.py +0 -0
  79. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/schemas_factory/common_schema_factory.py +0 -0
  80. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/schemas_factory/create_schema_factory.py +0 -0
  81. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/schemas_factory/filter_schema_factory.py +0 -0
  82. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/schemas_factory/get_all_schema_factory.py +0 -0
  83. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/schemas_factory/get_one_schema_factory.py +0 -0
  84. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/schemas_factory/get_relation_schema_factory.py +0 -0
  85. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/schemas_factory/get_tree_schema_factory.py +0 -0
  86. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/schemas_factory/response_factory.py +0 -0
  87. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/schemas_factory/sql_get_all_schema_factory.py +0 -0
  88. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/schemas_factory/update_schema_factory.py +0 -0
  89. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/settings/__init__.py +0 -0
  90. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/settings/all_settings.py +0 -0
  91. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/settings/app_settings.py +0 -0
  92. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/settings/db_settings.py +0 -0
  93. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/settings/etcd_settings.py +0 -0
  94. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/settings/file_settings.py +0 -0
  95. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/settings/jwt_settings.py +0 -0
  96. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/settings/otlp_settings.py +0 -0
  97. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/settings/redis_settings.py +0 -0
  98. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/settings/sms_settings.py +0 -0
  99. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/settings/system_settings.py +0 -0
  100. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/utils/__init__.py +0 -0
  101. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/utils/aes.py +0 -0
  102. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/utils/auto_discover.py +0 -0
  103. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/utils/exception.py +0 -0
  104. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/utils/file_utils.py +0 -0
  105. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/utils/pwd_utils.py +0 -0
  106. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/utils/ramdom_utils.py +0 -0
  107. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/utils/snowflake.py +0 -0
  108. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/utils/str_util.py +0 -0
  109. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/utils/swagger_to_js.py +0 -0
  110. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/validator/__init__.py +0 -0
  111. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi/validator/validator.py +0 -0
  112. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi.egg-info/SOURCES.txt +0 -0
  113. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi.egg-info/dependency_links.txt +0 -0
  114. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/fastgenerateapi.egg-info/top_level.txt +0 -0
  115. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/script/__init__.py +0 -0
  116. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/setup.cfg +0 -0
  117. {fastgenerateapi-1.2.19 → fastgenerateapi-1.2.21}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastgenerateapi
3
- Version: 1.2.19
3
+ Version: 1.2.21
4
4
  Summary: FastAPIView Class View
5
5
  Author: ShiLiang
6
6
  Author-email: 2509144896@qq.com
@@ -8,7 +8,7 @@
8
8
  # d8888P
9
9
 
10
10
 
11
- VERSION = (1, 2, 19)
11
+ VERSION = (1, 2, 21)
12
12
 
13
13
  __version__ = '.'.join(map(str, VERSION))
14
14
 
@@ -9,14 +9,14 @@ from fastapi_cache.decorator import cache
9
9
  from pydantic import BaseModel
10
10
  from starlette.requests import Request
11
11
  from starlette.responses import JSONResponse
12
- from tortoise import Model
13
12
 
14
13
  from fastgenerateapi.api_view.base_view import BaseView
15
14
  from fastgenerateapi.api_view.mixin.get_mixin import GetMixin
16
15
  from fastgenerateapi.cache.cache_decorator import get_one_cache_decorator
17
16
  from fastgenerateapi.cache.key_builder import generate_key_builder
18
17
  from fastgenerateapi.data_type.data_type import CALLABLE, DEPENDENCIES
19
- from fastgenerateapi.schemas_factory import get_one_schema_factory, response_factory
18
+ from fastgenerateapi.data_type.tortoise_type import T_Model
19
+ from fastgenerateapi.schemas_factory import response_factory
20
20
  from fastgenerateapi.settings.all_settings import settings
21
21
  from fastgenerateapi.utils.exception import NOT_FOUND
22
22
 
@@ -44,10 +44,16 @@ class GetOneView(BaseView, GetMixin):
44
44
  if self.is_with_prefetch:
45
45
  await self.setattr_model(model, prefetch_related_fields=self.prefetch_related_fields, *args, **kwargs)
46
46
 
47
- # await self.setattr_model_rpc(self.rpc_class, model, self.rpc_param)
48
47
  model = await self.set_get_model(model, *args, **kwargs)
48
+ model = await self.set_get_one_model(model, *args, **kwargs)
49
49
 
50
- return self.get_one_schema.from_orm(model)
50
+ return self.get_one_schema.model_validate(model)
51
+
52
+ async def set_get_one_model(self, model: T_Model, *args, **kwargs) -> T_Model:
53
+ """
54
+ 对于查询的model,展示数据处理
55
+ """
56
+ return model
51
57
 
52
58
  def _get_one_decorator(self, *args: Any, **kwargs: Any) -> DecoratedCallable:
53
59
  @get_one_cache_decorator(cache(expire=settings.app_settings.CACHE_GET_ONE_SECONDS, coder=JsonCoder, key_builder=generate_key_builder))
@@ -36,14 +36,14 @@ class XlsxUtil:
36
36
  thin_border = Border(top=Side('thin'),left=Side('thin'),right=Side('thin'),bottom=Side('thin'))
37
37
 
38
38
  @classmethod
39
- def write_headers(cls, sh: Worksheet, headers: List[str]) -> List[int]:
39
+ def write_headers(cls, sh: Worksheet, xlsx_headers: List[str]) -> List[int]:
40
40
  """
41
41
  写入第一行信息
42
42
  :return:
43
43
  """
44
44
  col_width_list = []
45
45
  sh.row_dimensions[1].height = 26
46
- for col, header in enumerate(headers, 1):
46
+ for col, header in enumerate(xlsx_headers, 1):
47
47
  sh.cell(1, col).value = header
48
48
  sh.cell(1, col).alignment = XlsxUtil.default_align
49
49
  sh.cell(1, col).fill = XlsxUtil.default_fill
@@ -85,7 +85,7 @@ class XlsxUtil:
85
85
 
86
86
  @staticmethod
87
87
  async def export_xlsx(
88
- headers: List[str],
88
+ xlsx_headers: List[str],
89
89
  model_list: List[Model],
90
90
  fields: List[str],
91
91
  index: Optional[bool] = False,
@@ -101,7 +101,7 @@ class XlsxUtil:
101
101
  ) -> StreamingResponse:
102
102
  """
103
103
  导出excel文件
104
- :param headers: 第一行表头
104
+ :param xlsx_headers: 第一行表头
105
105
  :param model_list: 模型列表
106
106
  :param fields: 字段列表
107
107
  :param index: 是否导出序号字段
@@ -130,7 +130,7 @@ class XlsxUtil:
130
130
  sh = wb.active
131
131
  sh.title = sheet or (f'{model_class._meta.table_description}' if model_class else "sheet1")
132
132
 
133
- col_width_list = XlsxUtil.write_headers(sh, headers)
133
+ col_width_list = XlsxUtil.write_headers(sh, xlsx_headers)
134
134
 
135
135
  if model_handler:
136
136
  if is_async_callable(model_handler):
@@ -159,7 +159,7 @@ class XlsxUtil:
159
159
  info = handler(info, *args, **kwargs)
160
160
  write(sh, row, col, info)
161
161
 
162
- XlsxUtil.adaptive_format(sh, col_width_list, len(headers))
162
+ XlsxUtil.adaptive_format(sh, col_width_list, len(xlsx_headers))
163
163
  finally:
164
164
  if file_save_path:
165
165
  wb.save(file_save_path)
@@ -172,7 +172,7 @@ class XlsxUtil:
172
172
 
173
173
  @staticmethod
174
174
  async def excel_model(
175
- headers: List[str] = None,
175
+ xlsx_headers: List[str] = None,
176
176
  sheet: Optional[str] = None,
177
177
  model_class: Optional[Model] = None,
178
178
  filename: Optional[str] = '导入模板.xlsx',
@@ -181,7 +181,7 @@ class XlsxUtil:
181
181
  ) -> Union[FileResponse, StreamingResponse]:
182
182
  """
183
183
  导出excel模板
184
- :param headers: 第一行表头
184
+ :param xlsx_headers: 第一行表头
185
185
  :param sheet: sheet名称
186
186
  :param model_class: 当无title时,使用表名称
187
187
  :param filename: 导出文件名
@@ -207,9 +207,9 @@ class XlsxUtil:
207
207
  sh = wb.active
208
208
  sh.title = sheet or (f'{model_class._meta.table_description}' if model_class else "sheet1")
209
209
 
210
- col_width_list = XlsxUtil.write_headers(sh, headers)
210
+ col_width_list = XlsxUtil.write_headers(sh, xlsx_headers)
211
211
 
212
- XlsxUtil.adaptive_format(sh, col_width_list, len(headers))
212
+ XlsxUtil.adaptive_format(sh, col_width_list, len(xlsx_headers))
213
213
  finally:
214
214
  bytes_io = io.BytesIO()
215
215
  wb.save(bytes_io)
@@ -226,13 +226,15 @@ class XlsxUtil:
226
226
  if isinstance(row_value, int):
227
227
  row_value = str(row_value)
228
228
  row_data[fields[i]] = row_value
229
+ else:
230
+ row_data[fields[i]] = None
229
231
 
230
232
  return row_data
231
233
 
232
234
  @staticmethod
233
235
  async def get_import_xlsx_data(
234
236
  file: UploadFile,
235
- headers: List[str],
237
+ xlsx_headers: List[str],
236
238
  fields: List[str],
237
239
  sheet: Optional[str] = None,
238
240
  ) -> List[dict]:
@@ -253,9 +255,9 @@ class XlsxUtil:
253
255
  for msg in header_row:
254
256
  header_list.append(str(msg.value).replace(" ", ''))
255
257
 
256
- if len(header_list) != len(headers):
258
+ if len(header_list) != len(xlsx_headers):
257
259
  return ResponseMixin.error(msg="文件首行长度校验错误")
258
- if not operator.eq(header_list, headers):
260
+ if not operator.eq(header_list, xlsx_headers):
259
261
  return ResponseMixin.error(msg="文件首行内容校验错误")
260
262
 
261
263
  for row in range(2, ws.max_row + 1):
@@ -273,7 +275,7 @@ class XlsxUtil:
273
275
  async def import_xlsx(
274
276
  cls,
275
277
  file: UploadFile,
276
- headers: List[str],
278
+ xlsx_headers: List[str],
277
279
  fields: List[str],
278
280
  model_class: Optional[Type[Model]],
279
281
  create_schema: Optional[Type[BaseModel]],
@@ -286,7 +288,7 @@ class XlsxUtil:
286
288
  """
287
289
  导入只能用于一张表
288
290
  :param file:
289
- :param headers: 请求文件首行文字校验
291
+ :param xlsx_headers: 请求文件首行文字校验
290
292
  :param fields: 值对应的字段
291
293
  :param model_class: 用于创建数据
292
294
  :param create_schema: 用于校验必填字段
@@ -295,7 +297,7 @@ class XlsxUtil:
295
297
  :param sheet: sheet名称
296
298
  :return:
297
299
  """
298
- file_data_list = await cls.get_import_xlsx_data(file, headers, fields, sheet)
300
+ file_data_list = await cls.get_import_xlsx_data(file, xlsx_headers, fields, sheet)
299
301
  if not file_data_list:
300
302
  return ResponseMixin.error(msg="导入数据不能为空")
301
303
  create_list = []
@@ -2,6 +2,7 @@ from datetime import datetime, date, time
2
2
  from typing import Union, Any, Optional, Type
3
3
 
4
4
  from pydantic.fields import FieldInfo
5
+ from pytz import timezone
5
6
  from tortoise import Model
6
7
  from tortoise.expressions import Q
7
8
  from tortoise.queryset import QuerySet
@@ -12,6 +13,12 @@ from fastgenerateapi.pydantic_utils.base_model import alias_generator
12
13
 
13
14
  class FilterUtils:
14
15
 
16
+ @staticmethod
17
+ def datetime_to_shanghai(d: datetime) -> datetime:
18
+ if d.tzinfo is None:
19
+ return d.replace(tzinfo=timezone('Asia/Shanghai'))
20
+ return d.astimezone(timezone('Asia/Shanghai'))
21
+
15
22
  @staticmethod
16
23
  def date_to_datetime_23(date_value: Union[None, str, date, datetime]) -> Optional[datetime]:
17
24
  """
@@ -37,7 +37,8 @@ class IntEnumField(IntEnumFieldInstance):
37
37
  def __init__(self, enum_list: List[any], start_num=0, **kwargs: Any) -> None:
38
38
  self.start_num = start_num
39
39
  self.enum_list = enum_list
40
- self.description = kwargs.get("description", "") + " >> " + self.get_description(enum_list, start_num)
40
+ self._description = kwargs.get("description", "")
41
+ self.description = self._description + " >> " + self.get_description(enum_list, start_num)
41
42
  kwargs["description"] = self.description
42
43
  super().__init__(enum_type=self.create_enum(enum_list, start_num=start_num), **kwargs)
43
44
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastgenerateapi
3
- Version: 1.2.19
3
+ Version: 1.2.21
4
4
  Summary: FastAPIView Class View
5
5
  Author: ShiLiang
6
6
  Author-email: 2509144896@qq.com