38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
"""出入库单现场免登录 token"""
|
|
from __future__ import annotations
|
|
|
|
import secrets
|
|
|
|
from app.core.config import settings
|
|
from app.models.db_models import DbInboundOutbound
|
|
|
|
|
|
def ensure_site_access_token(row: DbInboundOutbound) -> str:
|
|
token = (row.site_access_token or "").strip()
|
|
if not token:
|
|
token = secrets.token_urlsafe(32)[:64]
|
|
row.site_access_token = token
|
|
return token
|
|
|
|
|
|
def build_site_inventory_url(token: str) -> str:
|
|
origin = (settings.PUBLIC_WEB_ORIGIN or "").rstrip("/")
|
|
return f"{origin}/#/public/db/inventory/{token}"
|
|
|
|
|
|
def build_site_transport_url(token: str) -> str:
|
|
"""运输计划现场链接(pl_transport_site_link,与地磅出入库单解耦)。"""
|
|
origin = (settings.PUBLIC_WEB_ORIGIN or "").rstrip("/")
|
|
return f"{origin}/#/public/pl/site/{token}"
|
|
|
|
|
|
def site_link_fields_for_inventory(
|
|
inventory: DbInboundOutbound | None,
|
|
) -> tuple[str | None, str | None]:
|
|
if not inventory:
|
|
return None, None
|
|
token = (inventory.site_access_token or "").strip()
|
|
if not token:
|
|
return None, None
|
|
return token, build_site_inventory_url(token)
|