nlbone 0.7.28__tar.gz → 0.7.30__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.
- {nlbone-0.7.28 → nlbone-0.7.30}/PKG-INFO +1 -1
- {nlbone-0.7.28 → nlbone-0.7.30}/pyproject.toml +1 -1
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/query_builder.py +1 -1
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/exception_handlers.py +8 -4
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/exceptions.py +7 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/middleware/add_request_context.py +2 -1
- {nlbone-0.7.28 → nlbone-0.7.30}/.gitignore +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/LICENSE +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/README.md +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/auth/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/auth/auth_service.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/auth/keycloak.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/auth/token_provider.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/cache/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/cache/async_redis.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/cache/memory.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/cache/pubsub_listener.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/cache/redis.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/audit.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/base.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/engine.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/repository.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/schema.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/types.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/uow.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/redis/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/redis/client.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/http_clients/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/http_clients/pricing/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/http_clients/pricing/pricing_service.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/http_clients/uploadchi/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/http_clients/uploadchi/uploadchi.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/http_clients/uploadchi/uploadchi_async.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/i18n/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/i18n/engine.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/i18n/loaders.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/i18n/locales/fa-IR.json +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/messaging/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/messaging/event_bus.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/messaging/rabbitmq.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/outbox/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/outbox/outbox_consumer.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/outbox/outbox_repo.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/percolation/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/percolation/connection.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/repositories/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/snowflake.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/ticketing/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/ticketing/client.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/config/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/config/logging.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/config/settings.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/container.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/application/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/application/base_worker.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/application/bus.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/application/di.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/application/registry.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/application/services/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/application/use_case.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/domain/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/domain/base.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/domain/models.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/auth.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/cache.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/event_bus.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/files.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/outbox.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/repository.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/translation.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/uow.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/additional_filed/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/additional_filed/assembler.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/additional_filed/default_field_rules/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/additional_filed/default_field_rules/image_field_rules.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/additional_filed/field_registry.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/additional_filed/resolver.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/dependencies/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/dependencies/async_auth.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/dependencies/auth.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/dependencies/client_credential.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/dependencies/db.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/dependencies/uow.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/middleware/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/middleware/access_log.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/middleware/authentication.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/pagination/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/pagination/offset_base.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/routers.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/schema/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/schema/adaptive_schema.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/schema/base_response_model.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/schemas.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/cli/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/cli/crypto.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/cli/init_db.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/cli/main.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/cli/ticket.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/jobs/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/jobs/dispatch_outbox.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/jobs/sync_tokens.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/types.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/__init__.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/cache.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/cache_keys.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/cache_registry.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/context.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/crypto.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/flatten_sqlalchemy_result.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/http.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/normalize_mobile.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/redactor.py +0 -0
- {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/time.py +0 -0
|
@@ -217,7 +217,7 @@ def _apply_filters(pagination, entity, query):
|
|
|
217
217
|
if filters:
|
|
218
218
|
for raw_field, value in filters.items():
|
|
219
219
|
if value is None or value in NULL_SENTINELS or value == [] or value == {}:
|
|
220
|
-
|
|
220
|
+
value = None
|
|
221
221
|
|
|
222
222
|
field, op_hint = _parse_field_and_op(raw_field)
|
|
223
223
|
is_nested = "." in field
|
|
@@ -60,7 +60,8 @@ def install_exception_handlers(
|
|
|
60
60
|
"http_error",
|
|
61
61
|
extra={"status": exc.status_code, "detail": exc.detail, "path": request.url.path},
|
|
62
62
|
)
|
|
63
|
-
|
|
63
|
+
locale = locale = getattr(request.state, "locale", None)
|
|
64
|
+
return _json_response(request, exc.status_code, detail=_(exc.detail, locale=locale))
|
|
64
65
|
|
|
65
66
|
@app.exception_handler(FastAPIHTTPException)
|
|
66
67
|
async def _handle_fastapi_http_exception(request: Request, exc: FastAPIHTTPException):
|
|
@@ -69,7 +70,8 @@ def install_exception_handlers(
|
|
|
69
70
|
"fastapi_http_error",
|
|
70
71
|
extra={"status": exc.status_code, "detail": exc.detail, "path": request.url.path},
|
|
71
72
|
)
|
|
72
|
-
|
|
73
|
+
locale = locale = getattr(request.state, "locale", None)
|
|
74
|
+
return _json_response(request, exc.status_code, detail=_(exc.detail, locale=locale))
|
|
73
75
|
|
|
74
76
|
@app.exception_handler(StarletteHTTPException)
|
|
75
77
|
async def _handle_starlette_http_exception(request: Request, exc: StarletteHTTPException):
|
|
@@ -78,7 +80,8 @@ def install_exception_handlers(
|
|
|
78
80
|
"starlette_http_error",
|
|
79
81
|
extra={"status": exc.status_code, "detail": exc.detail, "path": request.url.path},
|
|
80
82
|
)
|
|
81
|
-
|
|
83
|
+
locale = locale = getattr(request.state, "locale", None)
|
|
84
|
+
return _json_response(request, exc.status_code, detail=_(exc.detail, locale=locale))
|
|
82
85
|
|
|
83
86
|
# 3) خطاهای اعتبارسنجی FastAPI (request body/query/path)
|
|
84
87
|
@app.exception_handler(RequestValidationError)
|
|
@@ -107,4 +110,5 @@ def install_exception_handlers(
|
|
|
107
110
|
if logger:
|
|
108
111
|
logger.exception("unhandled_exception", extra={"trace_id": tid, "path": request.url.path})
|
|
109
112
|
detail = str(exc) if expose_server_errors else "internal server error"
|
|
110
|
-
|
|
113
|
+
locale = locale = getattr(request.state, "locale", None)
|
|
114
|
+
return _json_response(request, 500, detail=_(detail, locale=locale), trace_id=tid)
|
|
@@ -99,3 +99,10 @@ class GoneException(BaseHttpException):
|
|
|
99
99
|
status_code=status.HTTP_410_GONE,
|
|
100
100
|
detail=detail,
|
|
101
101
|
)
|
|
102
|
+
|
|
103
|
+
class TooManyRequestsException(BaseHttpException):
|
|
104
|
+
def __init__(self, detail: str = "TooManyRequests"):
|
|
105
|
+
super().__init__(
|
|
106
|
+
status_code=status.HTTP_429_TOO_MANY_REQUESTS,
|
|
107
|
+
detail=detail,
|
|
108
|
+
)
|
|
@@ -45,7 +45,8 @@ class AddRequestContextMiddleware(BaseHTTPMiddleware):
|
|
|
45
45
|
user_id = getattr(getattr(request, "state", None), "user_id", None) or request.headers.get("X-User-Id")
|
|
46
46
|
ip = request.client.host if request.client else None
|
|
47
47
|
ua = request.headers.get("user-agent")
|
|
48
|
-
locale = request.headers.get("Accept-Language")
|
|
48
|
+
locale = request.headers.get("Accept-Language", 'fa-IR')
|
|
49
|
+
request.state.locale = locale
|
|
49
50
|
|
|
50
51
|
tokens = bind_context(request=request, request_id=req_id, user_id=user_id, ip=ip, user_agent=ua, locale=locale)
|
|
51
52
|
try:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/http_clients/uploadchi/uploadchi_async.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/additional_filed/field_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|