fastcodedog 3.2.2__tar.gz → 3.2.4__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 (158) hide show
  1. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/PKG-INFO +1 -1
  2. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/api/oauth2.py +52 -3
  3. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/base/block.py +12 -3
  4. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/base/text.py +3 -2
  5. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/crud/query_functions.py +1 -1
  6. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/pyproject.toml +1 -1
  7. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/README.md +0 -0
  8. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/README_zh.md +0 -0
  9. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/__init__.py +0 -0
  10. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/cli.py +0 -0
  11. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/common/__init__.py +0 -0
  12. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/common/clean_expired.py +0 -0
  13. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/common/source_file_path.py +0 -0
  14. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/common/write_file.py +0 -0
  15. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/__init__.py +0 -0
  16. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/api/__init__.py +0 -0
  17. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/api/api.py +0 -0
  18. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/api/endpoint.py +0 -0
  19. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/api/oauth2.py +0 -0
  20. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/api/param.py +0 -0
  21. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/common/__init__.py +0 -0
  22. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/common/get_context_object.py +0 -0
  23. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/common/get_relationship.py +0 -0
  24. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/context.py +0 -0
  25. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/contextbase.py +0 -0
  26. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/crud/__init__.py +0 -0
  27. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/crud/column.py +0 -0
  28. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/crud/crud.py +0 -0
  29. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/crud/default_value.py +0 -0
  30. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/crud/join_relationship.py +0 -0
  31. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/crud/query.py +0 -0
  32. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/model/__init__.py +0 -0
  33. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/model/additional_method.py +0 -0
  34. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/model/case.py +0 -0
  35. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/model/column.py +0 -0
  36. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/model/computed_property.py +0 -0
  37. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/model/copy_method.py +0 -0
  38. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/model/model.py +0 -0
  39. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/model/parameter.py +0 -0
  40. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/model/relationship.py +0 -0
  41. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/schema/__init__.py +0 -0
  42. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/schema/alias_generator.py +0 -0
  43. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/schema/field.py +0 -0
  44. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/schema/response_schema.py +0 -0
  45. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/schema/schema.py +0 -0
  46. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/schema/sub_object.py +0 -0
  47. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/setting/__init__.py +0 -0
  48. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/setting/config.py +0 -0
  49. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/setting/extend_app.py +0 -0
  50. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/setting/listen.py +0 -0
  51. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/setting/project.py +0 -0
  52. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/setting/source_directory.py +0 -0
  53. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/context/setting/tenant.py +0 -0
  54. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/__init__.py +0 -0
  55. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/api/__init__.py +0 -0
  56. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/api/api.py +0 -0
  57. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/api/api_function.py +0 -0
  58. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/api/config.py +0 -0
  59. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/api/db.py +0 -0
  60. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/api/generation.py +0 -0
  61. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/api/main.py +0 -0
  62. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/base/__init__.py +0 -0
  63. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/base/call.py +0 -0
  64. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/base/class_type.py +0 -0
  65. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/base/file.py +0 -0
  66. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/base/function.py +0 -0
  67. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/base/head_comment.py +0 -0
  68. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/base/line_break.py +0 -0
  69. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/base/location_finder.py +0 -0
  70. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/base/required_import.py +0 -0
  71. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/base/variable.py +0 -0
  72. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/commonfiles/__init__.py +0 -0
  73. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/commonfiles/configfiles/__init__.py +0 -0
  74. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/commonfiles/generation.py +0 -0
  75. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/commonfiles/main.py +0 -0
  76. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/commonfiles/oauthfiles/__init__.py +0 -0
  77. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/commonfiles/toolfiles/__init__.py +0 -0
  78. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/commonfiles/utilfiles/__init__.py +0 -0
  79. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/commonfiles/utilfiles/api_logging.py +0 -0
  80. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/commonfiles/utilfiles/case_converter.py +0 -0
  81. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/commonfiles/utilfiles/log.py +0 -0
  82. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/crud/__init__.py +0 -0
  83. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/crud/crud.py +0 -0
  84. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/crud/crud_functions.py +0 -0
  85. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/crud/generation.py +0 -0
  86. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/crud/selectinload.py +0 -0
  87. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/model/__init__.py +0 -0
  88. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/model/additional_method.py +0 -0
  89. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/model/base.py +0 -0
  90. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/model/case.py +0 -0
  91. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/model/column.py +0 -0
  92. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/model/computed_property.py +0 -0
  93. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/model/copy_method.py +0 -0
  94. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/model/generation.py +0 -0
  95. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/model/init.py +0 -0
  96. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/model/model.py +0 -0
  97. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/model/relation_object.py +0 -0
  98. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/model/relationship.py +0 -0
  99. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/model/table_args.py +0 -0
  100. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/schema/__init__.py +0 -0
  101. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/schema/field.py +0 -0
  102. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/schema/generation.py +0 -0
  103. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/schema/response_schema.py +0 -0
  104. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/schema/schema.py +0 -0
  105. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/generation/schema/sub_object.py +0 -0
  106. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/inc/middleware/api_logging.file.in +0 -0
  107. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/__init__.py +0 -0
  108. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/model_and_schema_to_crud/__init__.py +0 -0
  109. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/model_and_schema_to_crud/default_values.py +0 -0
  110. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/model_and_schema_to_crud/prepare.py +0 -0
  111. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/model_and_schema_to_crud/queries.py +0 -0
  112. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/model_to_schema/__init__.py +0 -0
  113. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/model_to_schema/alias_generator.py +0 -0
  114. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/model_to_schema/no_input_fields.py +0 -0
  115. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/model_to_schema/no_response_fields.py +0 -0
  116. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/model_to_schema/prepare.py +0 -0
  117. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/model_to_schema/response_schemas.py +0 -0
  118. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/model_to_schema/specified_field_types.py +0 -0
  119. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/README.MD +0 -0
  120. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/__init__.py +0 -0
  121. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/after/__init__.py +0 -0
  122. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/after/additional_methods.py +0 -0
  123. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/after/additional_relationships.py +0 -0
  124. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/after/case.py +0 -0
  125. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/after/computed_properties.py +0 -0
  126. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/after/copy_methods.py +0 -0
  127. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/after/disable_relationships.py +0 -0
  128. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/after/specified_class_names.py +0 -0
  129. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/after/specified_relationship_orderby.py +0 -0
  130. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/before/__init__.py +0 -0
  131. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/before/additional_foreign_keys.py +0 -0
  132. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/before/fill_tenant_id.py +0 -0
  133. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/before/specified_column_types.py +0 -0
  134. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/before/specified_relationship_names.py +0 -0
  135. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/column.py +0 -0
  136. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/pdm.py +0 -0
  137. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/prepare.py +0 -0
  138. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/reference.xml +0 -0
  139. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/table.py +0 -0
  140. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/pdm_to_model/table.xml +0 -0
  141. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/schema_and_crud_to_api/__init__.py +0 -0
  142. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/schema_and_crud_to_api/endpoint.py +0 -0
  143. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/schema_and_crud_to_api/prepare.py +0 -0
  144. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/schema_and_crud_to_api/schemas.py +0 -0
  145. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/prepare/schema_and_crud_to_api/validate_reponse_models.py +0 -0
  146. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/util/__init__.py +0 -0
  147. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/util/case_converter.py +0 -0
  148. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/util/deep_update.py +0 -0
  149. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/util/extractor.py +0 -0
  150. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/util/find_file.py +0 -0
  151. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/util/indent.py +0 -0
  152. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/util/inflect_wrapper.py +0 -0
  153. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/util/make_dirs.py +0 -0
  154. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/util/read_inc.py +0 -0
  155. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/util/singleton.py +0 -0
  156. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/util/type_converter.py +0 -0
  157. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/util/valid_name.py +0 -0
  158. {fastcodedog-3.2.2 → fastcodedog-3.2.4}/fastcodedog/util/wrap_str_with_quotation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastcodedog
3
- Version: 3.2.2
3
+ Version: 3.2.4
4
4
  Summary:
5
5
  License: MIT
6
6
  Author: taohoo
@@ -3,6 +3,7 @@
3
3
  from fastcodedog.context.context import ctx_instance
4
4
  from fastcodedog.generation.api.config import Config
5
5
  from fastcodedog.generation.api.db import Db
6
+ from fastcodedog.generation.base.class_type import ClassType
6
7
  from fastcodedog.generation.base.file import File
7
8
  from fastcodedog.generation.base.function import Function
8
9
  from fastcodedog.generation.base.location_finder import LocationFinder
@@ -35,10 +36,38 @@ OAuth2.REDIS_URL = 'redis://localhost:6379/oauth2'""")
35
36
  self.blocks.append(Text("""if redis_url:
36
37
  OAuth2.REDIS_URL = redis_url
37
38
  """, possible_imports=Import('redis_url', Config().package)))
39
+ # read_me方法的response_model
40
+ self.read_me_response = '' if not ctx_instance.tenant.enabled else self._init_read_me_response_model()
38
41
  self._init_login()
39
42
  self._init_remove_and_refresh()
40
43
  self._init_read_me()
41
44
 
45
+ def _init_read_me_response_model(self):
46
+ class_user_with_tenant = ClassType('UserWithTenant', base_class='BaseModel', comment='用户信息,包含租户信息')
47
+
48
+ module = ctx_instance.oauth2.module
49
+ model_name = ctx_instance.oauth2.model
50
+ snake_name = camel_to_snake(model_name)
51
+ user_api = ctx_instance.apis[module][model_name]
52
+ from fastcodedog.generation.api.api import Api
53
+ api = Api(user_api)
54
+ v_user = Text('user: UserResponse', possible_imports=Import(api.response_model,
55
+ from_=api.package,
56
+ as_='UserResponse'))
57
+ class_user_with_tenant.blocks.append(v_user)
58
+
59
+ tenant_model = ctx_instance.get_tenant_model()
60
+ v_tenant = Text(f'tenant: Optional[TenantSchema] = None', possible_imports=['from typing import Optional', Import(tenant_model.name,
61
+ from_=LocationFinder.get_package(tenant_model.name, 'schema', tenant_model.module),
62
+ as_='TenantSchema')])
63
+ class_user_with_tenant.blocks.append(v_tenant)
64
+ class_config = ClassType('Config', base_class=None)
65
+ class_config.blocks.append(Text('from_attributes = True'))
66
+ class_user_with_tenant.blocks.append(class_config)
67
+
68
+ self.blocks.append(class_user_with_tenant)
69
+ return 'UserWithTenant'
70
+
42
71
  def _init_login(self):
43
72
  module = ctx_instance.oauth2.module
44
73
  model_name = ctx_instance.oauth2.model
@@ -137,7 +166,7 @@ async def refresh(refresh_token: str= Body(..., embed=True)):
137
166
  function = Function('read_me', async_=True)
138
167
  function.decorators.append(
139
168
  Function.Decorator('app.get', params=[f"'{self.me_url}'", Variable('tags', value=['认证(OAtuh)']),
140
- Variable('response_model', value='UserResponse',
169
+ Variable('response_model', value=self.read_me_response,
141
170
  possible_imports=Import(api.response_model,
142
171
  from_=api.package,
143
172
  as_='UserResponse')
@@ -175,8 +204,28 @@ if not {snake_name}:
175
204
  raise HTTPException(status_code=HTTP_404_NOT_FOUND, detail=f"数据未找到")""",
176
205
  possible_imports=['from fastapi import HTTPException',
177
206
  'from starlette.status import HTTP_404_NOT_FOUND']))
207
+
208
+ # 如果启用了租户,则需要构造包含租户信息的返回模型
209
+ if ctx_instance.tenant.enabled:
210
+ tenant_model = ctx_instance.get_tenant_model()
211
+ function.blocks.append(Text(f"""tenant = None
212
+ tenant_id = OAuth2.get_token_user(token).get("tenant_id")
213
+ if tenant_id:
214
+ tenant_obj = session.query({tenant_model.name}).filter_by(id=tenant_id).first()
215
+ if tenant_obj:
216
+ tenant = TenantSchema.model_validate(tenant_obj)
217
+ """, possible_imports=[Import(tenant_model.name, LocationFinder.get_package(tenant_model.name, 'model', tenant_model.module)),
218
+ Import(tenant_model.name,
219
+ from_=LocationFinder.get_package(tenant_model.name, 'schema', tenant_model.module),
220
+ as_='TenantSchema')]))
178
221
  if api.validate_response_model:
179
- function.blocks.append(Text(f"""return response_model.model_validate({snake_name})"""))
222
+ if ctx_instance.tenant.enabled:
223
+ function.blocks.append(Text(f"""return {self.read_me_response}({snake_name}=response_model.model_validate({snake_name}), tenant=tenant)"""))
224
+ else:
225
+ function.blocks.append(Text(f"""return response_model.model_validate({snake_name})"""))
180
226
  else:
181
- function.blocks.append(Text(f"""return {snake_name}"""))
227
+ if ctx_instance.tenant.enabled:
228
+ function.blocks.append(Text(f"""return {self.read_me_response}({snake_name}={snake_name}, tenant=tenant)"""))
229
+ else:
230
+ function.blocks.append(Text(f"""return {snake_name}"""))
182
231
  self.blocks.append(function)
@@ -1,4 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
+ import re
3
+
2
4
  from fastcodedog.context.contextbase import ContextBase
3
5
  from fastcodedog.generation.base.required_import import RequiredImport, Import
4
6
  from fastcodedog.util.extractor import extract_variables
@@ -29,12 +31,19 @@ class Block:
29
31
  key = import_statement.as_ if import_statement.as_ else import_statement.import_
30
32
  self.possible_imports[key] = import_statement
31
33
 
32
- def get_required_imports(self) -> RequiredImport:
34
+ def get_required_imports(self, strict=True) -> RequiredImport:
35
+ """
36
+ strict=True(默认):使用 AST 解析,仅匹配代码中出现的变量名;
37
+ strict=False:不做语法解析,将代码段中所有单词逐一与 possible_imports 的 key 比对。
38
+ """
33
39
  required_import = RequiredImport()
34
40
  content = self.serialize(with_comment=False)
35
- all_variables = extract_variables(content)
41
+ if strict:
42
+ all_tokens = extract_variables(content)
43
+ else:
44
+ all_tokens = re.findall(r'\b[a-zA-Z_]\w*\b', content)
36
45
  for varibale, import_ in self.possible_imports.items():
37
- if varibale in all_variables:
46
+ if varibale in all_tokens:
38
47
  required_import.add(import_)
39
48
  return required_import
40
49
 
@@ -6,9 +6,10 @@ from fastcodedog.util.indent import add_indent
6
6
 
7
7
 
8
8
  class Text(Block):
9
- def __init__(self, content, indent=None, possible_imports: list | str = None, parent=None):
9
+ def __init__(self, content, indent=None, possible_imports: list | str = None, parent=None, strict=True):
10
10
  """纯文本类型"""
11
11
  super().__init__(name='__content__', possible_imports=possible_imports, parent=parent)
12
+ self.strict = strict # 解析import的时候是否采用ast
12
13
  self.content = content
13
14
  self.indent = indent
14
15
 
@@ -19,4 +20,4 @@ class Text(Block):
19
20
  def get_required_imports(self) -> RequiredImport:
20
21
  if not self.possible_imports:
21
22
  return RequiredImport()
22
- return super().get_required_imports()
23
+ return super().get_required_imports(strict=self.strict)
@@ -216,7 +216,7 @@ class Query(Crud):
216
216
  self.blocks.append(Text(f'query = query.distinct({self.context.distinct})'))
217
217
  if self.context.orders:
218
218
  self.blocks.append(Text(f"""if order_by and order_by not in {self.context.orders}:
219
- raise Exception(f'未知的排序方式:{{order_by}},可选值:{", ".join(self.context.orders)}')"""))
219
+ raise Exception(f'未知的排序方式:{{order_by}},可选值:{", ".join(self.context.orders)}')""", possible_imports=['from sqlalchemy import nullslast'], strict=False))
220
220
  self.blocks.append(Text(f"""if order_by:
221
221
  query = eval(f'query.order_by({{order_by}})') # 采用eval,由上面的if语句确保不执行危险代码"""))
222
222
  self.blocks.append(Text(f'return query'))
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "fastcodedog"
3
- version = "3.2.2"
3
+ version = "3.2.4"
4
4
  description = ""
5
5
  authors = ["taohoo <taohoo@163.com>"]
6
6
  license = "MIT"
File without changes
File without changes