From 032f303e701f5176ef064daf6f166446e6febe9e Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Tue, 20 Oct 2026 11:21:34 +0300 Subject: [PATCH] Migrate to Pydantic 2 for LNbits 1.7.0 --- config.json | 2 +- crud.py | 2 +- models.py | 10 ++++++---- views_api.py | 4 ++-- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/config.json b/config.json index f8acfca..25a9add 100644 --- a/config.json +++ b/config.json @@ -6,7 +6,7 @@ "short_description": "Sell and register event tickets", "description": "", "tile": "/events/static/image/events.png", - "min_lnbits_version": "1.5.5", + "min_lnbits_version": "1.7.0", "contributors": [ { "name": "talvasconcelos", diff --git a/crud.py b/crud.py index 930915e..394c161 100644 --- a/crud.py +++ b/crud.py @@ -107,7 +107,7 @@ async def purge_unpaid_tickets(event_id: str) -> None: async def create_event(data: CreateEvent) -> Event: event_id = urlsafe_short_hash() - event = Event(id=event_id, time=datetime.now(timezone.utc), **data.dict()) + event = Event(id=event_id, time=datetime.now(timezone.utc), **data.model_dump()) event = cast(Event, sync_event_ticket_waves(event)) await db.insert("events.events", event) return event diff --git a/models.py b/models.py index ac0d6b5..130f288 100644 --- a/models.py +++ b/models.py @@ -3,7 +3,7 @@ from fastapi import Query from lnbits.db import FilterModel -from pydantic import BaseModel, EmailStr, Field, validator +from pydantic import BaseModel, EmailStr, Field, field_validator class PromoCode(BaseModel): @@ -12,11 +12,13 @@ class PromoCode(BaseModel): active: bool = True # make the promo code uppercase - @validator("code") + @field_validator("code") + @classmethod def uppercase_code(cls, v): return v.upper() - @validator("discount_percent") + @field_validator("discount_percent") + @classmethod def validate_discount_percent(cls, v): assert 0 <= v <= 100, "Discount must be between 0 and 100." return v @@ -99,7 +101,7 @@ class PublicEvent(BaseModel): allow_fiat: bool = False fiat_currency: str = "GBP" price_per_ticket: float - banner: str | None + banner: str | None = None extra: EventExtra = Field(default_factory=EventExtra) diff --git a/views_api.py b/views_api.py index c55ffa0..f95041d 100644 --- a/views_api.py +++ b/views_api.py @@ -227,8 +227,8 @@ async def api_event_create( ) event = Event( **{ - **event.dict(), - **data.dict(), + **event.model_dump(), + **data.model_dump(), "id": event.id, "wallet": event.wallet, "time": event.time,