fastapi-rtk 1.0.7__tar.gz → 1.0.8__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 (134) hide show
  1. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/PKG-INFO +1 -1
  2. fastapi_rtk-1.0.8/fastapi_rtk/_version.py +1 -0
  3. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/api/model_rest_api.py +1 -0
  4. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/sqla/db.py +8 -0
  5. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/sqla/filters.py +16 -0
  6. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/sqla/interface.py +11 -8
  7. fastapi_rtk-1.0.7/fastapi_rtk/_version.py +0 -1
  8. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/.gitignore +0 -0
  9. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/LICENSE +0 -0
  10. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/README.md +0 -0
  11. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/__init__.py +0 -0
  12. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/api/__init__.py +0 -0
  13. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/api/base_api.py +0 -0
  14. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/apis.py +0 -0
  15. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/auth/__init__.py +0 -0
  16. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/auth/auth.py +0 -0
  17. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/auth/hashers/__init__.py +0 -0
  18. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/auth/hashers/pbkdf2.py +0 -0
  19. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/auth/hashers/scrypt.py +0 -0
  20. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/auth/hashers/utils.py +0 -0
  21. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/auth/password_helpers/__init__.py +0 -0
  22. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/auth/password_helpers/fab.py +0 -0
  23. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/auth/strategies/__init__.py +0 -0
  24. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/auth/strategies/config.py +0 -0
  25. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/auth/strategies/db.py +0 -0
  26. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/auth/strategies/jwt.py +0 -0
  27. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/__init__.py +0 -0
  28. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/generic/__init__.py +0 -0
  29. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/generic/column.py +0 -0
  30. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/generic/db.py +0 -0
  31. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/generic/exceptions.py +0 -0
  32. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/generic/filters.py +0 -0
  33. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/generic/interface.py +0 -0
  34. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/generic/model.py +0 -0
  35. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/generic/session.py +0 -0
  36. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/sqla/__init__.py +0 -0
  37. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/sqla/column.py +0 -0
  38. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/sqla/exceptions.py +0 -0
  39. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/sqla/extensions/__init__.py +0 -0
  40. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/sqla/extensions/audit/__init__.py +0 -0
  41. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/sqla/extensions/audit/audit.py +0 -0
  42. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/sqla/extensions/audit/types.py +0 -0
  43. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/sqla/extensions/geoalchemy2/__init__.py +0 -0
  44. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/sqla/extensions/geoalchemy2/filters.py +0 -0
  45. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/sqla/extensions/geoalchemy2/geometry_converter.py +0 -0
  46. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/sqla/model.py +0 -0
  47. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/backends/sqla/session.py +0 -0
  48. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/bases/__init__.py +0 -0
  49. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/bases/db.py +0 -0
  50. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/bases/file_manager.py +0 -0
  51. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/bases/filter.py +0 -0
  52. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/bases/interface.py +0 -0
  53. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/bases/model.py +0 -0
  54. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/bases/session.py +0 -0
  55. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/__init__.py +0 -0
  56. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/cli.py +0 -0
  57. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/commands/__init__.py +0 -0
  58. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/commands/db/__init__.py +0 -0
  59. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/commands/db/templates/fastapi/README +0 -0
  60. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/commands/db/templates/fastapi/alembic.ini.mako +0 -0
  61. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/commands/db/templates/fastapi/env.py +0 -0
  62. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/commands/db/templates/fastapi/script.py.mako +0 -0
  63. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/README +0 -0
  64. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/alembic.ini.mako +0 -0
  65. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/env.py +0 -0
  66. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/script.py.mako +0 -0
  67. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/commands/export.py +0 -0
  68. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/commands/security.py +0 -0
  69. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/commands/translate.py +0 -0
  70. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/const.py +0 -0
  71. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/decorators.py +0 -0
  72. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/types.py +0 -0
  73. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/cli/utils.py +0 -0
  74. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/config.py +0 -0
  75. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/const.py +0 -0
  76. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/db.py +0 -0
  77. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/decorators.py +0 -0
  78. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/dependencies.py +0 -0
  79. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/exceptions.py +0 -0
  80. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/fastapi_react_toolkit.py +0 -0
  81. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/file_managers/__init__.py +0 -0
  82. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/file_managers/file_manager.py +0 -0
  83. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/file_managers/image_manager.py +0 -0
  84. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/file_managers/s3_file_manager.py +0 -0
  85. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/file_managers/s3_image_manager.py +0 -0
  86. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/filters.py +0 -0
  87. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/globals.py +0 -0
  88. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/lang/__init__.py +0 -0
  89. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/lang/babel/__init__.py +0 -0
  90. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/lang/babel/cli.py +0 -0
  91. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/lang/babel/config.py +0 -0
  92. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/lang/babel.cfg +0 -0
  93. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/lang/lazy_text.py +0 -0
  94. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/lang/messages.pot +0 -0
  95. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/lang/translations/de/LC_MESSAGES/messages.mo +0 -0
  96. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/lang/translations/de/LC_MESSAGES/messages.po +0 -0
  97. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/lang/translations/en/LC_MESSAGES/messages.mo +0 -0
  98. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/lang/translations/en/LC_MESSAGES/messages.po +0 -0
  99. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/manager.py +0 -0
  100. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/middlewares.py +0 -0
  101. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/mixins.py +0 -0
  102. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/models.py +0 -0
  103. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/routers.py +0 -0
  104. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/schemas.py +0 -0
  105. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/security/__init__.py +0 -0
  106. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/security/sqla/__init__.py +0 -0
  107. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/security/sqla/apis.py +0 -0
  108. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/security/sqla/models.py +0 -0
  109. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/security/sqla/security_manager.py +0 -0
  110. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/setting.py +0 -0
  111. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/types.py +0 -0
  112. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/__init__.py +0 -0
  113. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/async_task_runner.py +0 -0
  114. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/class_factory.py +0 -0
  115. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/csv_json_converter.py +0 -0
  116. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/deep_merge.py +0 -0
  117. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/extender_mixin.py +0 -0
  118. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/flask_appbuilder_utils.py +0 -0
  119. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/hooks.py +0 -0
  120. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/lazy.py +0 -0
  121. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/merge_schema.py +0 -0
  122. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/multiple_async_contexts.py +0 -0
  123. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/prettify_dict.py +0 -0
  124. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/pydantic.py +0 -0
  125. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/run_utils.py +0 -0
  126. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/self_dependencies.py +0 -0
  127. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/smartdefaultdict.py +0 -0
  128. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/sqla.py +0 -0
  129. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/timezone.py +0 -0
  130. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/update_signature.py +0 -0
  131. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/use_default_when_none.py +0 -0
  132. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/utils/werkzeug.py +0 -0
  133. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/fastapi_rtk/version.py +0 -0
  134. {fastapi_rtk-1.0.7 → fastapi_rtk-1.0.8}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-rtk
3
- Version: 1.0.7
3
+ Version: 1.0.8
4
4
  Summary: A package that provides a set of tools to build a FastAPI application with a Class-Based CRUD API.
5
5
  Project-URL: Homepage, https://codeberg.org/datatactics/fastapi-rtk
6
6
  Project-URL: Issues, https://codeberg.org/datatactics/fastapi-rtk/issues
@@ -0,0 +1 @@
1
+ __version__ = "1.0.8"
@@ -2328,6 +2328,7 @@ class ModelRestApi(BaseApi):
2328
2328
  )
2329
2329
 
2330
2330
  if self.datamodel.is_files(key) or self.datamodel.is_images(key):
2331
+ value = [x for x in value if x] # Remove None values
2331
2332
  old_filenames = (
2332
2333
  [x for x in value if isinstance(x, str)] if value else []
2333
2334
  )
@@ -454,3 +454,11 @@ class SQLAQueryBuilder(AbstractQueryBuilder[Select[tuple[T]]]):
454
454
  load_column["related_columns"][col]["type"] = "some"
455
455
 
456
456
  return load_column
457
+
458
+ def _convert_id_into_dict(self, id):
459
+ # Cast the id into the right type based on the pk column type
460
+ pk_dict = super()._convert_id_into_dict(id)
461
+ for pk in pk_dict:
462
+ col_type = self.datamodel.list_columns[pk].type.python_type
463
+ pk_dict[pk] = col_type(pk_dict[pk])
464
+ return pk_dict
@@ -617,6 +617,22 @@ class SQLAFilterConverter:
617
617
  FilterIn,
618
618
  ],
619
619
  ),
620
+ (
621
+ "is_files",
622
+ [
623
+ FilterTextContains,
624
+ # TODO: Make compatible filters
625
+ # FilterEqual,
626
+ # FilterNotEqual,
627
+ # FilterStartsWith,
628
+ # FilterNotStartsWith,
629
+ # FilterEndsWith,
630
+ # FilterNotEndsWith,
631
+ # FilterContains,
632
+ # FilterNotContains,
633
+ # FilterIn,
634
+ ],
635
+ ),
620
636
  (
621
637
  "is_integer",
622
638
  [
@@ -255,7 +255,12 @@ class SQLAInterface(AbstractInterface[ModelType, Session | AsyncSession, Column]
255
255
  unique_order_columns.update(
256
256
  [f"{col_name}.{sub_col}" for sub_col in sub_order_columns]
257
257
  )
258
- elif self.is_property(col_name) and not self.is_hybrid_property(col_name):
258
+ elif (
259
+ self.is_property(col_name)
260
+ and not self.is_hybrid_property(col_name)
261
+ or self.is_files(col_name)
262
+ or self.is_images(col_name)
263
+ ):
259
264
  continue
260
265
 
261
266
  # Allow the column to be used for ordering by default
@@ -353,14 +358,12 @@ class SQLAInterface(AbstractInterface[ModelType, Session | AsyncSession, Column]
353
358
  ]
354
359
  elif self.is_file(col) or self.is_image(col):
355
360
  value_type = fastapi.UploadFile
361
+ annotated_str_type = typing.Annotated[
362
+ str | None, BeforeValidator(lambda x: None if x == "null" else x)
363
+ ]
356
364
  if self.is_files(col) or self.is_images(col):
357
- value_type = list[value_type | str]
358
- return (
359
- value_type
360
- | typing.Annotated[
361
- str | None, BeforeValidator(lambda x: None if x == "null" else x)
362
- ]
363
- )
365
+ value_type = list[value_type | annotated_str_type]
366
+ return value_type | annotated_str_type
364
367
  elif self.is_date(col):
365
368
  return date
366
369
  elif self.is_datetime(col):
@@ -1 +0,0 @@
1
- __version__ = "1.0.7"
File without changes
File without changes
File without changes
File without changes