tina4-python 3.10.32__tar.gz → 3.10.34__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.32 → tina4_python-3.10.34}/PKG-INFO +1 -1
- {tina4_python-3.10.32 → tina4_python-3.10.34}/pyproject.toml +1 -1
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/dev_admin/__init__.py +54 -1
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/frond/engine.py +28 -4
- {tina4_python-3.10.32 → tina4_python-3.10.34}/.gitignore +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/README.md +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/CLAUDE.md +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/HtmlElement.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/Testing.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/ai/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/api/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/auth/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/cache/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/cli/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/container/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/core/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/core/cache.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/core/constants.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/core/events.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/core/middleware.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/core/request.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/core/response.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/core/router.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/core/server.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/crud/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/database/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/database/adapter.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/database/connection.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/database/firebird.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/database/mssql.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/database/mysql.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/database/odbc.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/database/postgres.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/database/sqlite.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/debug/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/debug/error_overlay.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/dev_reload.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/dotenv/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/frond/FROND.md +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/frond/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/gallery/auth/meta.json +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/gallery/auth/src/routes/api/gallery_auth.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/gallery/database/meta.json +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/gallery/database/src/routes/api/gallery_db.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/gallery/error-overlay/meta.json +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/gallery/error-overlay/src/routes/api/gallery_crash.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/gallery/orm/meta.json +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/gallery/orm/src/orm/Product.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/gallery/orm/src/routes/api/gallery_products.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/gallery/queue/meta.json +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/gallery/queue/src/routes/api/gallery_queue.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/gallery/rest-api/meta.json +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/gallery/rest-api/src/routes/api/gallery_hello.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/gallery/templates/meta.json +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/gallery/templates/src/routes/gallery_page.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/gallery/templates/src/templates/gallery_page.twig +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/graphql/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/i18n/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/mcp/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/mcp/protocol.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/mcp/tools.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/messenger/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/migration/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/migration/runner.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/orm/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/orm/fields.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/orm/model.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/public/css/tina4.css +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/public/css/tina4.min.css +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/public/favicon.ico +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/public/images/logo.svg +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/public/images/tina4-logo-icon.webp +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/public/js/frond.min.js +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/public/js/tina4-dev-admin.min.js +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/public/js/tina4.min.js +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/public/js/tina4js.min.js +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/public/swagger/index.html +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/public/swagger/oauth2-redirect.html +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/query_builder/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/queue/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/queue_backends/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/queue_backends/kafka_backend.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/queue_backends/mongo_backend.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/queue_backends/rabbitmq_backend.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/scss/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/scss/tina4css/_alerts.scss +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/scss/tina4css/_badges.scss +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/scss/tina4css/_buttons.scss +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/scss/tina4css/_cards.scss +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/scss/tina4css/_forms.scss +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/scss/tina4css/_grid.scss +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/scss/tina4css/_modals.scss +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/scss/tina4css/_nav.scss +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/scss/tina4css/_reset.scss +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/scss/tina4css/_tables.scss +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/scss/tina4css/_typography.scss +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/scss/tina4css/_utilities.scss +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/scss/tina4css/_variables.scss +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/scss/tina4css/base.scss +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/scss/tina4css/colors.scss +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/scss/tina4css/tina4.scss +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/seeder/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/service/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/session/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/session_handlers/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/session_handlers/mongodb_handler.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/session_handlers/redis_handler.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/session_handlers/valkey_handler.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/swagger/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/templates/components/crud.twig +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/templates/docker/distroless/Dockerfile +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/templates/docker/poetry/Dockerfile +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/templates/docker/python/Dockerfile +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/templates/docker/uv/Dockerfile +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/templates/errors/302.twig +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/templates/errors/401.twig +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/templates/errors/403.twig +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/templates/errors/404.twig +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/templates/errors/500.twig +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/templates/errors/502.twig +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/templates/errors/503.twig +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/templates/errors/base.twig +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/templates/frontend/README.md +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/templates/readme.md +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/test_client/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/af/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/af/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/en/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/en/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/es/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/es/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/fr/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/fr/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/ja/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/ja/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/zh/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/zh/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/validator/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/websocket/__init__.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/websocket/backplane.py +0 -0
- {tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/wsdl/__init__.py +0 -0
|
@@ -1721,7 +1721,17 @@ def render_dev_toolbar(method: str, path: str, matched_pattern: str,
|
|
|
1721
1721
|
poll_interval_ms = int(os.environ.get("TINA4_DEV_POLL_INTERVAL", "3000"))
|
|
1722
1722
|
|
|
1723
1723
|
return f"""<div id="tina4-dev-toolbar" style="position:fixed;bottom:0;left:0;right:0;background:#333;color:#fff;font-family:monospace;font-size:12px;padding:6px 16px;z-index:99999;display:flex;align-items:center;gap:16px;">
|
|
1724
|
-
<span style="color:#3572A5;font-weight:bold;">Tina4 v{__version__}</span>
|
|
1724
|
+
<span id="tina4-ver-btn" style="color:#3572A5;font-weight:bold;cursor:pointer;text-decoration:underline dotted;" onclick="tina4VersionModal()" title="Click to check for updates">Tina4 v{__version__}</span>
|
|
1725
|
+
<div id="tina4-ver-modal" style="display:none;position:fixed;bottom:3rem;left:1rem;background:#1e1e2e;border:1px solid #3572A5;border-radius:8px;padding:16px 20px;z-index:100000;min-width:320px;box-shadow:0 8px 32px rgba(0,0,0,0.5);font-family:monospace;font-size:13px;color:#cdd6f4;">
|
|
1726
|
+
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;">
|
|
1727
|
+
<strong style="color:#89b4fa;">Version Info</strong>
|
|
1728
|
+
<span onclick="document.getElementById('tina4-ver-modal').style.display='none'" style="cursor:pointer;color:#888;">×</span>
|
|
1729
|
+
</div>
|
|
1730
|
+
<div id="tina4-ver-body" style="line-height:1.8;">
|
|
1731
|
+
<div>Current: <strong style="color:#a6e3a1;">v{__version__}</strong></div>
|
|
1732
|
+
<div id="tina4-ver-latest" style="color:#888;">Checking for updates...</div>
|
|
1733
|
+
</div>
|
|
1734
|
+
</div>
|
|
1725
1735
|
<span style="color:#4caf50;">{method}</span>
|
|
1726
1736
|
<span>{path}</span>
|
|
1727
1737
|
<span style="color:#666;">→ {matched_pattern}</span>
|
|
@@ -1760,6 +1770,49 @@ def render_dev_toolbar(method: str, path: str, matched_pattern: str,
|
|
|
1760
1770
|
}}
|
|
1761
1771
|
setInterval(_t4_poll,_t4_interval);
|
|
1762
1772
|
}})();
|
|
1773
|
+
function tina4VersionModal(){{
|
|
1774
|
+
var m=document.getElementById('tina4-ver-modal');
|
|
1775
|
+
if(m.style.display==='block'){{m.style.display='none';return;}}
|
|
1776
|
+
m.style.display='block';
|
|
1777
|
+
var el=document.getElementById('tina4-ver-latest');
|
|
1778
|
+
el.innerHTML='Checking for updates...';
|
|
1779
|
+
el.style.color='#888';
|
|
1780
|
+
fetch('https://pypi.org/pypi/tina4-python/json')
|
|
1781
|
+
.then(function(r){{return r.json()}})
|
|
1782
|
+
.then(function(d){{
|
|
1783
|
+
var latest=d.info.version;
|
|
1784
|
+
var current='{__version__}';
|
|
1785
|
+
if(latest===current){{
|
|
1786
|
+
el.innerHTML='Latest: <strong style="color:#a6e3a1;">v'+latest+'</strong> — You are up to date!';
|
|
1787
|
+
el.style.color='#a6e3a1';
|
|
1788
|
+
}}else{{
|
|
1789
|
+
var cParts=current.split('.').map(Number);
|
|
1790
|
+
var lParts=latest.split('.').map(Number);
|
|
1791
|
+
var isNewer=false;
|
|
1792
|
+
for(var i=0;i<Math.max(cParts.length,lParts.length);i++){{
|
|
1793
|
+
var c=cParts[i]||0,l=lParts[i]||0;
|
|
1794
|
+
if(l>c){{isNewer=true;break;}}
|
|
1795
|
+
if(l<c)break;
|
|
1796
|
+
}}
|
|
1797
|
+
if(isNewer){{
|
|
1798
|
+
var breaking=(lParts[0]!==cParts[0]||lParts[1]!==cParts[1]);
|
|
1799
|
+
el.innerHTML='Latest: <strong style="color:#f9e2af;">v'+latest+'</strong>';
|
|
1800
|
+
if(breaking){{
|
|
1801
|
+
el.innerHTML+='<div style="color:#f38ba8;margin-top:6px;">⚠ Major/minor version change — check the <a href="https://github.com/tina4stack/tina4-python/releases" target="_blank" style="color:#89b4fa;">changelog</a> for breaking changes before upgrading.</div>';
|
|
1802
|
+
}}else{{
|
|
1803
|
+
el.innerHTML+='<div style="color:#f9e2af;margin-top:6px;">Patch update available. Run: <code style="background:#313244;padding:2px 6px;border-radius:3px;">pip install --upgrade tina4-python</code></div>';
|
|
1804
|
+
}}
|
|
1805
|
+
}}else{{
|
|
1806
|
+
el.innerHTML='Latest: <strong style="color:#a6e3a1;">v'+latest+'</strong> — You are up to date!';
|
|
1807
|
+
el.style.color='#a6e3a1';
|
|
1808
|
+
}}
|
|
1809
|
+
}}
|
|
1810
|
+
}})
|
|
1811
|
+
.catch(function(){{
|
|
1812
|
+
el.innerHTML='Could not check for updates (offline?)';
|
|
1813
|
+
el.style.color='#f38ba8';
|
|
1814
|
+
}});
|
|
1815
|
+
}}
|
|
1763
1816
|
</script>"""
|
|
1764
1817
|
|
|
1765
1818
|
|
|
@@ -1225,12 +1225,36 @@ class Frond:
|
|
|
1225
1225
|
return blocks
|
|
1226
1226
|
|
|
1227
1227
|
def _render_with_blocks(self, parent_source: str, context: dict, child_blocks: dict) -> str:
|
|
1228
|
-
"""Render parent template, replacing blocks with child content.
|
|
1228
|
+
"""Render parent template, replacing blocks with child content.
|
|
1229
|
+
|
|
1230
|
+
Supports {{ parent() }} / {{ super() }} inside child blocks to include
|
|
1231
|
+
the parent block's content (standard Twig/Jinja2 behavior).
|
|
1232
|
+
"""
|
|
1233
|
+
engine = self
|
|
1234
|
+
|
|
1229
1235
|
def replace_block(m):
|
|
1230
1236
|
name = m.group(1)
|
|
1231
|
-
|
|
1232
|
-
block_source = child_blocks.get(name,
|
|
1233
|
-
|
|
1237
|
+
parent_content = m.group(2)
|
|
1238
|
+
block_source = child_blocks.get(name, parent_content)
|
|
1239
|
+
|
|
1240
|
+
# Make parent() and super() available inside child blocks
|
|
1241
|
+
# They return the rendered parent block content
|
|
1242
|
+
rendered_parent = None
|
|
1243
|
+
|
|
1244
|
+
def get_parent():
|
|
1245
|
+
nonlocal rendered_parent
|
|
1246
|
+
if rendered_parent is None:
|
|
1247
|
+
rendered_parent = SafeString(
|
|
1248
|
+
engine._render_tokens(_tokenize(parent_content), context)
|
|
1249
|
+
)
|
|
1250
|
+
return rendered_parent
|
|
1251
|
+
|
|
1252
|
+
# Inject parent/super into a block-local context
|
|
1253
|
+
block_ctx = dict(context)
|
|
1254
|
+
block_ctx["parent"] = get_parent
|
|
1255
|
+
block_ctx["super"] = get_parent
|
|
1256
|
+
|
|
1257
|
+
return engine._render_tokens(_tokenize(block_source), block_ctx)
|
|
1234
1258
|
|
|
1235
1259
|
pattern = _BLOCK_RE
|
|
1236
1260
|
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tina4_python-3.10.32 → tina4_python-3.10.34}/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.32 → tina4_python-3.10.34}/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.32 → tina4_python-3.10.34}/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.32 → tina4_python-3.10.34}/tina4_python/session_handlers/mongodb_handler.py
RENAMED
|
File without changes
|
{tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/session_handlers/redis_handler.py
RENAMED
|
File without changes
|
{tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/session_handlers/valkey_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/templates/docker/distroless/Dockerfile
RENAMED
|
File without changes
|
{tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/templates/docker/poetry/Dockerfile
RENAMED
|
File without changes
|
{tina4_python-3.10.32 → tina4_python-3.10.34}/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.32 → tina4_python-3.10.34}/tina4_python/translations/af/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/af/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/en/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/en/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/es/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/es/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/fr/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/fr/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/ja/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/ja/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/zh/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.10.32 → tina4_python-3.10.34}/tina4_python/translations/zh/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|