tina4-python 3.10.21__tar.gz → 3.10.24__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.
- {tina4_python-3.10.21 → tina4_python-3.10.24}/PKG-INFO +1 -1
- {tina4_python-3.10.21 → tina4_python-3.10.24}/pyproject.toml +1 -1
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/__init__.py +1 -1
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/frond/engine.py +39 -19
- {tina4_python-3.10.21 → tina4_python-3.10.24}/.gitignore +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/README.md +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/CLAUDE.md +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/HtmlElement.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/Testing.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/ai/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/api/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/auth/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/cache/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/cli/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/container/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/core/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/core/cache.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/core/constants.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/core/events.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/core/middleware.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/core/request.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/core/response.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/core/router.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/core/server.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/crud/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/database/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/database/adapter.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/database/connection.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/database/firebird.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/database/mssql.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/database/mysql.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/database/odbc.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/database/postgres.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/database/sqlite.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/debug/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/debug/error_overlay.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/dev_admin/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/dev_reload.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/dotenv/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/frond/FROND.md +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/frond/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/gallery/auth/meta.json +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/gallery/auth/src/routes/api/gallery_auth.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/gallery/database/meta.json +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/gallery/database/src/routes/api/gallery_db.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/gallery/error-overlay/meta.json +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/gallery/error-overlay/src/routes/api/gallery_crash.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/gallery/orm/meta.json +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/gallery/orm/src/orm/Product.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/gallery/orm/src/routes/api/gallery_products.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/gallery/queue/meta.json +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/gallery/queue/src/routes/api/gallery_queue.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/gallery/rest-api/meta.json +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/gallery/rest-api/src/routes/api/gallery_hello.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/gallery/templates/meta.json +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/gallery/templates/src/routes/gallery_page.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/gallery/templates/src/templates/gallery_page.twig +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/graphql/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/i18n/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/messenger/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/migration/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/migration/runner.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/orm/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/orm/fields.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/orm/model.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/public/css/tina4.css +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/public/css/tina4.min.css +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/public/favicon.ico +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/public/images/logo.svg +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/public/images/tina4-logo-icon.webp +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/public/js/frond.min.js +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/public/js/tina4-dev-admin.min.js +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/public/js/tina4.min.js +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/public/js/tina4js.min.js +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/public/swagger/index.html +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/public/swagger/oauth2-redirect.html +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/query_builder/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/queue/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/queue_backends/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/queue_backends/kafka_backend.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/queue_backends/mongo_backend.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/queue_backends/rabbitmq_backend.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/scss/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/scss/tina4css/_alerts.scss +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/scss/tina4css/_badges.scss +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/scss/tina4css/_buttons.scss +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/scss/tina4css/_cards.scss +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/scss/tina4css/_forms.scss +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/scss/tina4css/_grid.scss +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/scss/tina4css/_modals.scss +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/scss/tina4css/_nav.scss +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/scss/tina4css/_reset.scss +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/scss/tina4css/_tables.scss +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/scss/tina4css/_typography.scss +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/scss/tina4css/_utilities.scss +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/scss/tina4css/_variables.scss +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/scss/tina4css/base.scss +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/scss/tina4css/colors.scss +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/scss/tina4css/tina4.scss +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/seeder/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/service/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/session/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/session_handlers/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/session_handlers/mongodb_handler.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/session_handlers/redis_handler.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/session_handlers/valkey_handler.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/swagger/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/components/crud.twig +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/docker/distroless/Dockerfile +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/docker/poetry/Dockerfile +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/docker/python/Dockerfile +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/docker/uv/Dockerfile +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/errors/302.twig +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/errors/401.twig +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/errors/403.twig +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/errors/404.twig +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/errors/500.twig +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/errors/502.twig +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/errors/503.twig +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/errors/base.twig +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/frontend/README.md +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/readme.md +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/test_client/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/af/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/af/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/en/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/en/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/es/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/es/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/fr/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/fr/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/ja/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/ja/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/zh/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/zh/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/validator/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/websocket/__init__.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/websocket/backplane.py +0 -0
- {tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/wsdl/__init__.py +0 -0
|
@@ -9,6 +9,7 @@ import re
|
|
|
9
9
|
import html
|
|
10
10
|
import hashlib
|
|
11
11
|
import json
|
|
12
|
+
import secrets
|
|
12
13
|
from functools import lru_cache
|
|
13
14
|
from pathlib import Path
|
|
14
15
|
from datetime import datetime
|
|
@@ -940,8 +941,8 @@ def _wordwrap(text: str, width: int) -> str:
|
|
|
940
941
|
# ── Form Token ─────────────────────────────────────────────────
|
|
941
942
|
|
|
942
943
|
|
|
943
|
-
def
|
|
944
|
-
"""Generate a JWT form token
|
|
944
|
+
def _generate_form_jwt(descriptor: str = "", session_id: str = "") -> str:
|
|
945
|
+
"""Generate a JWT form token string.
|
|
945
946
|
|
|
946
947
|
Args:
|
|
947
948
|
descriptor: Optional string to enrich the token payload.
|
|
@@ -949,13 +950,11 @@ def _form_token(descriptor: str = "", session_id: str = "") -> str:
|
|
|
949
950
|
- ``"admin_panel"``: payload is ``{"type": "form", "context": "admin_panel"}``
|
|
950
951
|
- ``"checkout|order_123"``: payload is ``{"type": "form", "context": "checkout", "ref": "order_123"}``
|
|
951
952
|
session_id: Optional session ID to bind the token to a specific session.
|
|
952
|
-
When provided, the CSRF middleware will verify the token belongs to
|
|
953
|
-
the same session. If empty, checks ``_form_token_session_id`` global.
|
|
954
953
|
|
|
955
954
|
Returns:
|
|
956
|
-
|
|
955
|
+
The raw JWT string.
|
|
957
956
|
"""
|
|
958
|
-
payload = {"type": "form"}
|
|
957
|
+
payload = {"type": "form", "nonce": secrets.token_hex(8)}
|
|
959
958
|
if descriptor:
|
|
960
959
|
descriptor = str(descriptor)
|
|
961
960
|
if "|" in descriptor:
|
|
@@ -973,10 +972,32 @@ def _form_token(descriptor: str = "", session_id: str = "") -> str:
|
|
|
973
972
|
secret = os.environ.get("SECRET", "tina4-default-secret")
|
|
974
973
|
ttl = int(os.environ.get("TINA4_TOKEN_EXPIRES_IN", "60"))
|
|
975
974
|
auth = _FrondAuth(secret=secret, expires_in=ttl)
|
|
976
|
-
|
|
975
|
+
return auth.get_token(payload)
|
|
976
|
+
|
|
977
|
+
|
|
978
|
+
def _form_token(descriptor: str = "", session_id: str = "") -> str:
|
|
979
|
+
"""Generate a JWT form token and return a hidden input element.
|
|
980
|
+
|
|
981
|
+
Usage in templates: ``{{ form_token() }}`` or ``{{ "context" | form_token }}``
|
|
982
|
+
|
|
983
|
+
Returns:
|
|
984
|
+
``<input type="hidden" name="formToken" value="TOKEN">``
|
|
985
|
+
"""
|
|
986
|
+
token = _generate_form_jwt(descriptor, session_id)
|
|
977
987
|
return SafeString(f'<input type="hidden" name="formToken" value="{token}">')
|
|
978
988
|
|
|
979
989
|
|
|
990
|
+
def _form_token_value(descriptor: str = "", session_id: str = "") -> str:
|
|
991
|
+
"""Generate a JWT form token and return just the raw token string.
|
|
992
|
+
|
|
993
|
+
Usage in templates: ``{{ formTokenValue("Sleek") }}``
|
|
994
|
+
|
|
995
|
+
Returns:
|
|
996
|
+
The raw JWT string (no HTML wrapper).
|
|
997
|
+
"""
|
|
998
|
+
return SafeString(_generate_form_jwt(descriptor, session_id))
|
|
999
|
+
|
|
1000
|
+
|
|
980
1001
|
# Module-level session ID holder — set by the server before rendering templates
|
|
981
1002
|
# so that form_token() can bind tokens to the current session.
|
|
982
1003
|
_form_token_session_id: str = ""
|
|
@@ -1015,6 +1036,8 @@ class Frond:
|
|
|
1015
1036
|
|
|
1016
1037
|
# Built-in global functions
|
|
1017
1038
|
self._globals["form_token"] = _form_token
|
|
1039
|
+
self._globals["formTokenValue"] = _form_token_value
|
|
1040
|
+
self._globals["form_token_value"] = _form_token_value
|
|
1018
1041
|
|
|
1019
1042
|
def sandbox(self, allowed_filters: list[str] = None,
|
|
1020
1043
|
allowed_tags: list[str] = None,
|
|
@@ -1069,23 +1092,20 @@ class Frond:
|
|
|
1069
1092
|
raise FileNotFoundError(f"Template not found: {path}")
|
|
1070
1093
|
|
|
1071
1094
|
debug_mode = os.environ.get("TINA4_DEBUG", "").lower() == "true"
|
|
1072
|
-
cached = self._compiled.get(template)
|
|
1073
1095
|
|
|
1074
|
-
if
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
if cached[1] == mtime:
|
|
1079
|
-
return self._execute_cached(cached[0], context, template)
|
|
1080
|
-
else:
|
|
1081
|
-
# Production: skip mtime check, cache is permanent
|
|
1096
|
+
if not debug_mode:
|
|
1097
|
+
# Production: permanent cache, no filesystem checks
|
|
1098
|
+
cached = self._compiled.get(template)
|
|
1099
|
+
if cached is not None:
|
|
1082
1100
|
return self._execute_cached(cached[0], context, template)
|
|
1083
1101
|
|
|
1084
|
-
#
|
|
1102
|
+
# Dev mode: skip cache entirely — always re-read and re-tokenize.
|
|
1103
|
+
# mtime-based invalidation doesn't catch changes to included/extended
|
|
1104
|
+
# templates (parent or partial changes don't update the caller's mtime).
|
|
1085
1105
|
source = path.read_text(encoding="utf-8")
|
|
1086
|
-
mtime = path.stat().st_mtime
|
|
1087
1106
|
tokens = _tokenize(source)
|
|
1088
|
-
|
|
1107
|
+
if not debug_mode:
|
|
1108
|
+
self._compiled[template] = (tokens, 0)
|
|
1089
1109
|
return self._execute_with_source(source, tokens, context, template)
|
|
1090
1110
|
|
|
1091
1111
|
def render_string(self, source: str, data: dict = None) -> str:
|
|
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
|
|
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
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/public/images/tina4-logo-icon.webp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/public/swagger/oauth2-redirect.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/queue_backends/rabbitmq_backend.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
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/session_handlers/mongodb_handler.py
RENAMED
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/session_handlers/redis_handler.py
RENAMED
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/session_handlers/valkey_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/docker/distroless/Dockerfile
RENAMED
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/docker/poetry/Dockerfile
RENAMED
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/templates/docker/python/Dockerfile
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
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/af/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/af/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/en/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/en/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/es/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/es/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/fr/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/fr/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/ja/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/ja/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/zh/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.10.21 → tina4_python-3.10.24}/tina4_python/translations/zh/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|