shaapi 0.1.0__tar.gz → 0.1.1__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 (143) hide show
  1. {shaapi-0.1.0 → shaapi-0.1.1}/PKG-INFO +1 -1
  2. {shaapi-0.1.0 → shaapi-0.1.1}/pyproject.toml +1 -1
  3. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/core/conf.py +2 -1
  4. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/utils/request_parse.py +11 -1
  5. shaapi-0.1.0/src/shaapi/template/backend/static/ip2region.xdb +0 -0
  6. {shaapi-0.1.0 → shaapi-0.1.1}/.gitignore +0 -0
  7. {shaapi-0.1.0 → shaapi-0.1.1}/LICENCE +0 -0
  8. {shaapi-0.1.0 → shaapi-0.1.1}/README.md +0 -0
  9. {shaapi-0.1.0 → shaapi-0.1.1}/docs/README.md +0 -0
  10. {shaapi-0.1.0 → shaapi-0.1.1}/examples/todolist/README.md +0 -0
  11. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/__init__.py +0 -0
  12. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/cli.py +0 -0
  13. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/generator.py +0 -0
  14. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/.dockerignore +0 -0
  15. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/.env.template +0 -0
  16. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/.gitattributes +0 -0
  17. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/.gitignore +0 -0
  18. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/.gitlab-ci.yml +0 -0
  19. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/Dockerfile +0 -0
  20. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/LICENSE +0 -0
  21. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/README.md +0 -0
  22. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/.gitignore +0 -0
  23. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/__init__.py +0 -0
  24. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/alembic/README +0 -0
  25. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/alembic/env.py +0 -0
  26. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/alembic/script.py.mako +0 -0
  27. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/alembic/versions/2026_06_08_1024-64524c63b666_initial.py +0 -0
  28. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/alembic.ini +0 -0
  29. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/__init__.py +0 -0
  30. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/__init__.py +0 -0
  31. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/api/v1/__init__.py +0 -0
  32. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/api/v1/auth.py +0 -0
  33. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/api/v1/casbin.py +0 -0
  34. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/api/v1/login_log.py +0 -0
  35. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/api/v1/opera_log.py +0 -0
  36. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/api/v1/role.py +0 -0
  37. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/api/v1/user.py +0 -0
  38. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/schema/casbin_rule.py +0 -0
  39. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/schema/login_log.py +0 -0
  40. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/schema/opera_log.py +0 -0
  41. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/schema/role.py +0 -0
  42. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/schema/sso.py +0 -0
  43. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/schema/token.py +0 -0
  44. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/schema/user.py +0 -0
  45. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/service/auth_service.py +0 -0
  46. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/service/casbin_service.py +0 -0
  47. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/service/login_log_service.py +0 -0
  48. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/service/opera_log_service.py +0 -0
  49. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/service/role_service.py +0 -0
  50. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/service/secure_token_service.py +0 -0
  51. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/admin/service/user_service.py +0 -0
  52. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/app/api.py +0 -0
  53. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/__init__.py +0 -0
  54. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/cloud_storage/__init__.py +0 -0
  55. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/cloud_storage/cloud_storage.py +0 -0
  56. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/dataclasses.py +0 -0
  57. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/email_conf/email.py +0 -0
  58. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/enums.py +0 -0
  59. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/exception/__init__.py +0 -0
  60. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/exception/errors.py +0 -0
  61. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/exception/exception_handler.py +0 -0
  62. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/log.py +0 -0
  63. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/model.py +0 -0
  64. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/pagination.py +0 -0
  65. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/response/__init__.py +0 -0
  66. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/response/response_code.py +0 -0
  67. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/response/response_schema.py +0 -0
  68. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/schema.py +0 -0
  69. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/security/jwt.py +0 -0
  70. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/security/rbac.py +0 -0
  71. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/security/sec_token.py +0 -0
  72. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/socketio/action.py +0 -0
  73. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/socketio/server.py +0 -0
  74. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/sso/base.py +0 -0
  75. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/common/sso/google.py +0 -0
  76. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/core/path_conf.py +0 -0
  77. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/core/registrar.py +0 -0
  78. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/crud/__init__.py +0 -0
  79. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/crud/crud_base.py +0 -0
  80. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/crud/crud_casbin.py +0 -0
  81. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/crud/crud_login_log.py +0 -0
  82. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/crud/crud_opera_log.py +0 -0
  83. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/crud/crud_role.py +0 -0
  84. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/crud/crud_user.py +0 -0
  85. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/database/__init__.py +0 -0
  86. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/database/db_postgres.py +0 -0
  87. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/database/db_redis.py +0 -0
  88. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/entrypoint-api.sh +0 -0
  89. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/lang/en/app.py +0 -0
  90. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/lang/en/auth.py +0 -0
  91. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/lang/fr/app.py +0 -0
  92. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/lang/fr/auth.py +0 -0
  93. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/main.py +0 -0
  94. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/middleware/__init__.py +0 -0
  95. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/middleware/access_middleware.py +0 -0
  96. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/middleware/i18n_middleware.py +0 -0
  97. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/middleware/jwt_auth_middleware.py +0 -0
  98. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/middleware/opera_log_middleware.py +0 -0
  99. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/middleware/state_middleware.py +0 -0
  100. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/models/__init__.py +0 -0
  101. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/models/associations.py +0 -0
  102. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/models/casbin_rule.py +0 -0
  103. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/models/login_log.py +0 -0
  104. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/models/opera_log.py +0 -0
  105. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/models/role.py +0 -0
  106. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/models/user.py +0 -0
  107. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/seeder/json/admin.json +0 -0
  108. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/seeder/json/user.json +0 -0
  109. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/seeder/run.py +0 -0
  110. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/templates/build/meet.html +0 -0
  111. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/templates/build/new_account.html +0 -0
  112. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/templates/build/reset-password.html +0 -0
  113. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/templates/build/test_email.html +0 -0
  114. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/templates/build/welcome-one-1.html +0 -0
  115. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/templates/build/welcome-one.html +0 -0
  116. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/templates/build/welcome-two.html +0 -0
  117. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/templates/index.html +0 -0
  118. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/templates/src/new_account.mjml +0 -0
  119. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/templates/src/reset_password.mjml +0 -0
  120. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/templates/src/test_email.mjml +0 -0
  121. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/templates/ws/ws.html +0 -0
  122. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/utils/demo_site.py +0 -0
  123. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/utils/encrypt.py +0 -0
  124. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/utils/health_check.py +0 -0
  125. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/utils/prometheus.py +0 -0
  126. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/utils/serializers.py +0 -0
  127. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/utils/timezone.py +0 -0
  128. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/utils/trace_id.py +0 -0
  129. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/backend/utils/translator.py +0 -0
  130. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/devops/scripts/deploy.sh +0 -0
  131. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/devops/scripts/setup_env.sh +0 -0
  132. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/docker-compose.monitoring.yml +0 -0
  133. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/docker-compose.override.yml +0 -0
  134. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/docker-compose.yml +0 -0
  135. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/docker-run.sh +0 -0
  136. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/etc/dashboards/fastapi-observability.json +0 -0
  137. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/etc/dashboards.yaml +0 -0
  138. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/etc/grafana/datasource.yml +0 -0
  139. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/etc/prometheus/prometheus.yml +0 -0
  140. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/package-lock.json +0 -0
  141. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/package.json +0 -0
  142. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/pyproject.toml +0 -0
  143. {shaapi-0.1.0 → shaapi-0.1.1}/src/shaapi/template/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shaapi
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Scaffold lean, batteries-included FastAPI backends — like django-admin, for FastAPI.
5
5
  Project-URL: Homepage, https://github.com/Shalom-302/shaapi
6
6
  Project-URL: Repository, https://github.com/Shalom-302/shaapi
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "shaapi"
3
- version = "0.1.0"
3
+ version = "0.1.1"
4
4
  description = "Scaffold lean, batteries-included FastAPI backends — like django-admin, for FastAPI."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -176,7 +176,8 @@ class Settings(BaseSettings):
176
176
  ('GET', f'{FASTAPI_API_V1_PATH}/auth/captcha'),
177
177
  }
178
178
 
179
- # IP location
179
+ # IP location. 'offline' needs ip2region.xdb in backend/static/ (~11MB, not
180
+ # shipped): download from https://github.com/lionsoul2014/ip2region
180
181
  IP_LOCATION_PARSE: Literal['online', 'offline', 'false'] = 'online'
181
182
  IP_LOCATION_REDIS_PREFIX: str = 'shaapi:ip:location'
182
183
  IP_LOCATION_EXPIRE_SECONDS: int = 60 * 60 * 24 * 1
@@ -1,5 +1,7 @@
1
+ import json
2
+ import os
3
+
1
4
  import httpx
2
- import json
3
5
 
4
6
  from asgiref.sync import sync_to_async
5
7
  from fastapi import Request
@@ -58,6 +60,14 @@ def get_location_offline(ip: str) -> dict | None:
58
60
  :return:
59
61
  """
60
62
  try:
63
+ if not os.path.exists(IP2REGION_XDB):
64
+ log.warning(
65
+ "Offline IP database not found at %s. Download ip2region.xdb "
66
+ "(https://github.com/lionsoul2014/ip2region) and place it there, "
67
+ "or keep IP_LOCATION_PARSE=online (the default).",
68
+ IP2REGION_XDB,
69
+ )
70
+ return None
61
71
  cb = XdbSearcher.loadContentFromFile(dbfile=IP2REGION_XDB)
62
72
  searcher = XdbSearcher(contentBuff=cb)
63
73
  data = searcher.search(ip)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes