fastgenerateapi 1.1.15__py2.py3-none-any.whl → 1.1.16__py2.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.

Potentially problematic release.


This version of fastgenerateapi might be problematic. Click here for more details.

@@ -8,7 +8,7 @@
8
8
  # d8888P
9
9
 
10
10
 
11
- VERSION = (1, 1, 15)
11
+ VERSION = (1, 1, 16)
12
12
 
13
13
  __version__ = '.'.join(map(str, VERSION))
14
14
 
@@ -33,6 +33,7 @@ class GetAllView(BaseView, GetMixin):
33
33
  filter_schema: Optional[Type[PYDANTIC_SCHEMA]] = None
34
34
  filter_fields: Union[None, list] = None
35
35
  order_by_fields: Union[None, list] = None
36
+ auto_add_id_order: bool = True
36
37
  """
37
38
  get_all_route: 获取详情路由开关,可以放依赖函数列表
38
39
  get_all_schema: 返回序列化
@@ -45,6 +46,7 @@ class GetAllView(BaseView, GetMixin):
45
46
  filter_fields: 筛选对应字段
46
47
  example: name__contains or (create_at__gt, datetime) or (create_at__gt, datetime, create_time)
47
48
  order_by_fields: 排序对应字段
49
+ auto_add_id_order: 是否自动在 order_by_fields 后面追加id排序
48
50
  """
49
51
 
50
52
  async def get_all(self, search: Optional[str], filters: dict, *args, **kwargs) -> Union[BaseModel, dict, None]:
@@ -60,10 +62,11 @@ class GetAllView(BaseView, GetMixin):
60
62
  queryset = await self.filter_queryset(queryset, filters, *args, **kwargs)
61
63
  queryset = self.filter_controller.query(queryset=queryset, values=filters)
62
64
  queryset = queryset.prefetch_related(*self.prefetch_related_fields.keys())
65
+ if self.auto_add_id_order:
66
+ self.order_by_fields = self.order_by_fields or []
67
+ self.order_by_fields.append("id")
63
68
  if self.order_by_fields:
64
- queryset = queryset.order_by(*self.order_by_fields, "id")
65
- else:
66
- queryset = queryset.order_by("id")
69
+ queryset = queryset.order_by(*self.order_by_fields)
67
70
 
68
71
  return queryset
69
72
 
@@ -166,9 +169,15 @@ class GetAllView(BaseView, GetMixin):
166
169
  return
167
170
  self.search_controller = SearchController(self.get_base_filter(self.search_fields))
168
171
  self.filter_controller = FilterController(self.get_base_filter(self.filter_fields, self.filter_schema))
172
+ get_all_schema_include = []
173
+ if self.prefetch_related_fields:
174
+ for key, value in self.prefetch_related_fields.items():
175
+ if value and type(value) in [list, tuple, set]:
176
+ for val in value:
177
+ get_all_schema_include.append(key + "__" + val)
169
178
  self.get_all_schema = self.get_all_schema or get_all_schema_factory(
170
- self.model_class) or self.get_one_schema if hasattr(self, "get_one_schema") else get_one_schema_factory(
171
- self.model_class)
179
+ self.model_class, include=get_all_schema_include
180
+ ) or self.get_one_schema if hasattr(self, "get_one_schema") else get_one_schema_factory(self.model_class)
172
181
  self.get_page_schema = get_page_schema_factory(self.get_all_schema)
173
182
  self.get_list_schema = get_list_schema_factory(self.get_all_schema)
174
183
  self.get_all_response_schema = response_factory(self.get_page_schema, name="GetPage")
@@ -66,7 +66,16 @@ class GetOneView(BaseView, GetMixin):
66
66
  def _handler_get_one_settings(self):
67
67
  if not self.get_one_route:
68
68
  return
69
- self.get_one_schema = self.schema or self.get_one_schema or get_one_schema_factory(model_class=self.model_class)
69
+ get_one_schema_include = []
70
+ if self.is_with_prefetch and self.prefetch_related_fields:
71
+ for key, value in self.prefetch_related_fields.items():
72
+ if value and type(value) in [list, tuple, set]:
73
+ for val in value:
74
+ get_one_schema_include.append(key + "__" + val)
75
+ self.get_one_schema = self.schema or self.get_one_schema or get_one_schema_factory(
76
+ model_class=self.model_class,
77
+ include=get_one_schema_include,
78
+ )
70
79
  self.get_one_response_schema = response_factory(self.get_one_schema, name="GetOne")
71
80
  doc = self.get_one.__doc__
72
81
  summary = doc.strip().split("\n")[0] if self.get_one.__doc__ else "Get One"
@@ -15,15 +15,14 @@ def get_field_info(value, description="", default_field_type=None) -> (Type, Fie
15
15
  required = False
16
16
  if value.field_type is None:
17
17
  if default_field_type:
18
- field_type = Optional[default_field_type]
18
+ value.field_type = default_field_type
19
19
  else:
20
- field_type = Optional[str]
20
+ value.field_type = str
21
+ if hasattr(value, "null") and value.null:
22
+ field_type = Optional[value.field_type]
21
23
  else:
22
- if hasattr(value, "null") and value.null:
23
- field_type = Optional[value.field_type]
24
- else:
25
- field_type = value.field_type
26
- required = True
24
+ field_type = value.field_type
25
+ required = True
27
26
  field_info_dict = {"required": required}
28
27
  if not required and hasattr(value, "default") and not hasattr(value.default, '__call__'):
29
28
  field_info_dict.setdefault("default", value.default)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastgenerateapi
3
- Version: 1.1.15
3
+ Version: 1.1.16
4
4
  Summary: FastAPIView Class View
5
5
  Author: ShiLiang
6
6
  Author-email: 2509144896@qq.com
@@ -1,5 +1,5 @@
1
1
  fastgenerateapi/__init__.py,sha256=eh2qtp7FbjrgaRX5b3H3UWpasFdNHbVFqLUhpqVbaTU,1287
2
- fastgenerateapi/__version__.py,sha256=xBtsy-NUQVaGP7Hm3DtCo0658h55Q8n5OKAyXfNPKL8,497
2
+ fastgenerateapi/__version__.py,sha256=Rbs2BZJch_RxKPV_BVZVOFep8pmhL38yOtnYE29TE9s,497
3
3
  fastgenerateapi/api_view/__init__.py,sha256=zkaTX5JxsNfjF-dFeEbHfUB58vhPMjm6Iiqx9HgJOrY,14
4
4
  fastgenerateapi/api_view/api_view.py,sha256=mfD8GB-hnyI2XO3tkSOlEa2FfBLdq0_Wqvp8gFrXFKU,1160
5
5
  fastgenerateapi/api_view/base_view.py,sha256=AUWMd2Ys5mVwifN5iOs7BjpBqCF_ktv23oEp7sHR1g0,9984
@@ -7,8 +7,8 @@ fastgenerateapi/api_view/create_view.py,sha256=NvJ0ocD2UMHcdipA4W7MYamxAw8sYeXAc
7
7
  fastgenerateapi/api_view/delete_filter_view.py,sha256=ZP9pmRNeCTu_Go4ErfnDPnkPMShEh_Ql18iNCfMNJ3s,2838
8
8
  fastgenerateapi/api_view/delete_tree_view.py,sha256=oqkWQNlA7TNZHHRTJJwxidOHxOgmvUpcnu81cT3oTA0,4083
9
9
  fastgenerateapi/api_view/delete_view.py,sha256=FvaltPR1ttLfUvBoRoSHP-dGb79LRZlEMSEbYzE_W1E,3497
10
- fastgenerateapi/api_view/get_all_view.py,sha256=pWzob708aytugsZUWGBqqddPmUKizpHC18O6eB30Iao,9178
11
- fastgenerateapi/api_view/get_one_view.py,sha256=t16hdoLpOGAIXzCg-HDJFXEYgL-MtcUCfFC3MqkrR9c,3780
10
+ fastgenerateapi/api_view/get_all_view.py,sha256=KnbjEZZ6FxxoVDbIqkgL4DoVmzqVjelmeLOZCcg-FOI,9721
11
+ fastgenerateapi/api_view/get_one_view.py,sha256=N54M5F_vtjDlB7XlnPNhIbzEJ-KHyN5q4_jnIGkZ5eo,4201
12
12
  fastgenerateapi/api_view/get_relation_view.py,sha256=coVqhD29WW7SzdAeqM5LFtNzMulzzJyELT2En-56CF4,9780
13
13
  fastgenerateapi/api_view/get_tree_view.py,sha256=8BQomoOU954bXrqGzeFrKS8ydHL9VPxQfwvhV59rQxg,9312
14
14
  fastgenerateapi/api_view/sql_get_view.py,sha256=wxYI0JuH8Gw99LfMMwA4rQ_a_tBrKYxYhA7MNGQOx3A,6691
@@ -71,7 +71,7 @@ fastgenerateapi/pydantic_utils/base_model.py,sha256=kHFcx48UbpMgLfKdNT351p74PZCd
71
71
  fastgenerateapi/pydantic_utils/base_settings.py,sha256=JydmNHS_vl3ys7yiXwkZuRZ-4tIgf0a_kfft7WNf4kY,533
72
72
  fastgenerateapi/pydantic_utils/json_encoders.py,sha256=NPvaYDHu9GBtYNnNpbh35VUd1JWy4Mx4nAzOK4cvVo0,2868
73
73
  fastgenerateapi/schemas_factory/__init__.py,sha256=X9U96fiyRfCY0u6SzaCYG62RdpEGFX7yOZh_cJl6R2E,472
74
- fastgenerateapi/schemas_factory/common_function.py,sha256=PQCZl5nocxz06ZCBy4MJZE_HjnV0gG2BumE5ghAdErw,5628
74
+ fastgenerateapi/schemas_factory/common_function.py,sha256=ECTCFEVuMg2uQMuFGq66XhcIPZWeXLNba2PUXC4FGvA,5589
75
75
  fastgenerateapi/schemas_factory/common_schema_factory.py,sha256=ac_tYOcBqpnGVSkx4NCAZz3Hd1PHmwSocBRld5Jxro4,2904
76
76
  fastgenerateapi/schemas_factory/create_schema_factory.py,sha256=rkah8geyfMkfqA6IhHDxq-lFomn8DA3bca1AtFcrLpQ,3733
77
77
  fastgenerateapi/schemas_factory/filter_schema_factory.py,sha256=T4Kpv8G9VAOOZKnRDh2oD3tE_xhsjw2FtEmncJa_MYM,1531
@@ -103,8 +103,8 @@ fastgenerateapi/utils/snowflake.py,sha256=GiFVkE10sPiqJ094sMfrPsaV7Y9Y3c1djrSfgs
103
103
  fastgenerateapi/utils/str_util.py,sha256=c-jUlCFw-Dz4W1W9Jc1TqGZw3JXu-qN5ovnE6fjc9j0,3445
104
104
  fastgenerateapi/utils/swagger_to_js.py,sha256=pPPTag6TYtxdbKMHD3m8lJvc8Gv9HC97CGHt4esU1-E,530
105
105
  script/__init__.py,sha256=26UWatnbm6ZIwQMuu9NNzQ0IW1ACO4Oe9caModuTpWM,4
106
- fastgenerateapi-1.1.15.dist-info/LICENSE,sha256=gcuuhKKc5-dwvyvHsXjlC9oM6N5gZ6umYbC8ewW1Yvg,35821
107
- fastgenerateapi-1.1.15.dist-info/METADATA,sha256=dqiF4ikzsUQrERAf5j2V8xmt5r-_BtyCGWdO_TLpjys,6025
108
- fastgenerateapi-1.1.15.dist-info/WHEEL,sha256=iYlv5fX357PQyRT2o6tw1bN-YcKFFHKqB_LwHO5wP-g,110
109
- fastgenerateapi-1.1.15.dist-info/top_level.txt,sha256=CW2SlpYjTRdacF-5ufnPMtwpYcR0XYn_bDxa2ZrrTBI,23
110
- fastgenerateapi-1.1.15.dist-info/RECORD,,
106
+ fastgenerateapi-1.1.16.dist-info/LICENSE,sha256=gcuuhKKc5-dwvyvHsXjlC9oM6N5gZ6umYbC8ewW1Yvg,35821
107
+ fastgenerateapi-1.1.16.dist-info/METADATA,sha256=vpM75h8HPEx3iIv7y6OkdceWovTcft_IpCrdy8O_USE,6025
108
+ fastgenerateapi-1.1.16.dist-info/WHEEL,sha256=iYlv5fX357PQyRT2o6tw1bN-YcKFFHKqB_LwHO5wP-g,110
109
+ fastgenerateapi-1.1.16.dist-info/top_level.txt,sha256=CW2SlpYjTRdacF-5ufnPMtwpYcR0XYn_bDxa2ZrrTBI,23
110
+ fastgenerateapi-1.1.16.dist-info/RECORD,,