feat(brand): لوگوی اختصاصی نسخهٔ انگلیسی — ستون logo_en، میگریشن ۰۰۰۳، لوکالایز و فیلد پنل (کد از قبل در تولید اجرا میشد)
This commit is contained in:
@@ -32,6 +32,7 @@ class Brand(Base):
|
|||||||
name: Mapped[str] = mapped_column(String(128), default="")
|
name: Mapped[str] = mapped_column(String(128), default="")
|
||||||
name_en: Mapped[str] = mapped_column(String(128), default="")
|
name_en: Mapped[str] = mapped_column(String(128), default="")
|
||||||
logo: Mapped[str] = mapped_column(Text, default="")
|
logo: Mapped[str] = mapped_column(Text, default="")
|
||||||
|
logo_en: Mapped[str] = mapped_column(Text, default="")
|
||||||
hero: Mapped[str] = mapped_column(Text, default="")
|
hero: Mapped[str] = mapped_column(Text, default="")
|
||||||
contact_bg: Mapped[str] = mapped_column(Text, default="")
|
contact_bg: Mapped[str] = mapped_column(Text, default="")
|
||||||
phone: Mapped[str] = mapped_column(String(64), default="")
|
phone: Mapped[str] = mapped_column(String(64), default="")
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ class BrandOut(ORMModel):
|
|||||||
name: str
|
name: str
|
||||||
name_en: str = ""
|
name_en: str = ""
|
||||||
logo: str
|
logo: str
|
||||||
|
logo_en: str = ""
|
||||||
hero: str
|
hero: str
|
||||||
contact_bg: str
|
contact_bg: str
|
||||||
phone: str
|
phone: str
|
||||||
@@ -443,6 +444,7 @@ class BrandIn(BaseModel):
|
|||||||
name: str = ""
|
name: str = ""
|
||||||
name_en: str = ""
|
name_en: str = ""
|
||||||
logo: str = ""
|
logo: str = ""
|
||||||
|
logo_en: str = ""
|
||||||
hero: str = ""
|
hero: str = ""
|
||||||
contact_bg: str = ""
|
contact_bg: str = ""
|
||||||
phone: str = ""
|
phone: str = ""
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
"""لوگوی انگلیسی برند — ستون logo_en در جدول brand.
|
||||||
|
|
||||||
|
نسخهٔ انگلیسی سایت لوگوی اختصاصی خودش را دارد؛ فیلد مشترک logo برای هر دو
|
||||||
|
زبان کافی نبود. بازگشت به فارسی با خالیبودن ستون انجام میشود.
|
||||||
|
|
||||||
|
Revision ID: 0003
|
||||||
|
Revises: 0002
|
||||||
|
Create Date: 2026-10-01
|
||||||
|
"""
|
||||||
|
from typing import Sequence, Union
|
||||||
|
|
||||||
|
import sqlalchemy as sa
|
||||||
|
from alembic import op
|
||||||
|
|
||||||
|
revision: str = "0003"
|
||||||
|
down_revision: Union[str, None] = "0002"
|
||||||
|
branch_labels: Union[str, Sequence[str], None] = None
|
||||||
|
depends_on: Union[str, Sequence[str], None] = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade() -> None:
|
||||||
|
cols = sa.inspect(op.get_bind()).get_columns("brand")
|
||||||
|
existing = {c["name"] for c in cols}
|
||||||
|
if "logo_en" not in existing:
|
||||||
|
op.add_column("brand", sa.Column("logo_en", sa.Text(), nullable=False, server_default=""))
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade() -> None:
|
||||||
|
cols = sa.inspect(op.get_bind()).get_columns("brand")
|
||||||
|
if "logo_en" in {c["name"] for c in cols}:
|
||||||
|
op.drop_column("brand", "logo_en")
|
||||||
@@ -211,7 +211,7 @@ export const ENTITIES: Record<string, EntityConfig> = {
|
|||||||
brand: {
|
brand: {
|
||||||
resource: 'brand', dataKey: 'brand', title: 'برند و تماس', kind: 'singleton',
|
resource: 'brand', dataKey: 'brand', title: 'برند و تماس', kind: 'singleton',
|
||||||
titleKey: 'name',
|
titleKey: 'name',
|
||||||
fields: [F('name', 'نام برند'), F('logo', 'لوگو', 'image', undefined, true), F('hero', 'تصویر هیرو', 'image', undefined, true), F('contact_bg', 'پسزمینه بخش تماس', 'image', undefined, true), F('phone', 'تلفن نمایشی', 'text', undefined, true), F('phone_href', 'لینک تلفن', 'text', undefined, true), F('email', 'ایمیل', 'text', undefined, true), F('address', 'نشانی', 'textarea')],
|
fields: [F('name', 'نام برند'), F('logo', 'لوگو', 'image'), F('hero', 'تصویر هیرو', 'image', undefined, true), F('contact_bg', 'پسزمینه بخش تماس', 'image', undefined, true), F('phone', 'تلفن نمایشی', 'text', undefined, true), F('phone_href', 'لینک تلفن', 'text', undefined, true), F('email', 'ایمیل', 'text', undefined, true), F('address', 'نشانی', 'textarea')],
|
||||||
defaults: {},
|
defaults: {},
|
||||||
},
|
},
|
||||||
hero: {
|
hero: {
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ export type BrandInfo = {
|
|||||||
name: string
|
name: string
|
||||||
name_en?: string
|
name_en?: string
|
||||||
logo: string
|
logo: string
|
||||||
|
logo_en?: string
|
||||||
hero: string
|
hero: string
|
||||||
contact_bg: string
|
contact_bg: string
|
||||||
phone: string
|
phone: string
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ export function localizeSite(data: SiteData, lang: Lang): SiteData {
|
|||||||
brand: {
|
brand: {
|
||||||
...data.brand,
|
...data.brand,
|
||||||
name: s(data.brand.name, data.brand.name_en),
|
name: s(data.brand.name, data.brand.name_en),
|
||||||
|
logo: s(data.brand.logo, data.brand.logo_en),
|
||||||
address: s(data.brand.address, data.brand.address_en),
|
address: s(data.brand.address, data.brand.address_en),
|
||||||
},
|
},
|
||||||
nav: data.nav.map((n) => ({ ...n, label: s(n.label, n.label_en) })),
|
nav: data.nav.map((n) => ({ ...n, label: s(n.label, n.label_en) })),
|
||||||
|
|||||||
Reference in New Issue
Block a user