Compare commits
2 Commits
77ef4aaa57
...
e212492b30
| Author | SHA1 | Date | |
|---|---|---|---|
| e212492b30 | |||
| b759a997d9 |
@@ -0,0 +1,38 @@
|
|||||||
|
"""enforce addon.is_enabled->NOT NULL
|
||||||
|
|
||||||
|
Revision ID: ad537d63c440
|
||||||
|
Revises: 6d1bae3dc723
|
||||||
|
Create Date: 2026-08-19 21:14:39.928563
|
||||||
|
|
||||||
|
"""
|
||||||
|
from typing import Sequence, Union
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision: str = 'ad537d63c440'
|
||||||
|
down_revision: Union[str, Sequence[str], None] = '6d1bae3dc723'
|
||||||
|
branch_labels: Union[str, Sequence[str], None] = None
|
||||||
|
depends_on: Union[str, Sequence[str], None] = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade() -> None:
|
||||||
|
"""Upgrade schema."""
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.alter_column('addons', 'is_enabled',
|
||||||
|
existing_type=sa.BOOLEAN(),
|
||||||
|
nullable=False)
|
||||||
|
op.create_unique_constraint(None, 'link_codes', ['code'])
|
||||||
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade() -> None:
|
||||||
|
"""Downgrade schema."""
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.drop_constraint(None, 'link_codes', type_='unique')
|
||||||
|
op.alter_column('addons', 'is_enabled',
|
||||||
|
existing_type=sa.BOOLEAN(),
|
||||||
|
nullable=True)
|
||||||
|
# ### end Alembic commands ###
|
||||||
@@ -11,4 +11,4 @@ class Addon(Base):
|
|||||||
name: Mapped[str] = mapped_column(TEXT, nullable=False, unique=False)
|
name: Mapped[str] = mapped_column(TEXT, nullable=False, unique=False)
|
||||||
price: Mapped[float] = mapped_column(FLOAT, nullable=False)
|
price: Mapped[float] = mapped_column(FLOAT, nullable=False)
|
||||||
free_threshold: Mapped[int] = mapped_column(INTEGER, default=-1)
|
free_threshold: Mapped[int] = mapped_column(INTEGER, default=-1)
|
||||||
is_enabled: Mapped[bool] = mapped_column(BOOLEAN, default=False, nullable=True)
|
is_enabled: Mapped[bool] = mapped_column(BOOLEAN, default=False, nullable=False)
|
||||||
|
|||||||
@@ -37,7 +37,4 @@ class User(Base):
|
|||||||
"Subscription", back_populates="user", lazy="selectin"
|
"Subscription", back_populates="user", lazy="selectin"
|
||||||
)
|
)
|
||||||
sessions: Mapped[list["Session"]] = relationship(back_populates="user", lazy="selectin")
|
sessions: Mapped[list["Session"]] = relationship(back_populates="user", lazy="selectin")
|
||||||
referal: Mapped["User | None"] = relationship(
|
referal: Mapped["User | None"] = relationship("User", remote_side=[id], lazy="selectin")
|
||||||
"User",
|
|
||||||
remote_side=[id],
|
|
||||||
)
|
|
||||||
|
|||||||
10
external/rw.py
vendored
10
external/rw.py
vendored
@@ -76,10 +76,7 @@ def _parse_user(user_dto) -> RWUserInfo:
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def _build_rw_username(*, telegram_id: int | None, username: str | None) -> str | None:
|
def _build_rw_username(*, username: str | None) -> str | None:
|
||||||
if telegram_id is not None:
|
|
||||||
return f"tg_{telegram_id}"
|
|
||||||
|
|
||||||
if not username:
|
if not username:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -439,7 +436,7 @@ async def get_rw_user(
|
|||||||
rw_user = await get_user_by_telegram_id(sdk, telegram_id)
|
rw_user = await get_user_by_telegram_id(sdk, telegram_id)
|
||||||
|
|
||||||
if rw_user is None:
|
if rw_user is None:
|
||||||
rw_username = _build_rw_username(telegram_id=telegram_id, username=username)
|
rw_username = _build_rw_username(username=username)
|
||||||
if rw_username is None:
|
if rw_username is None:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
"Cannot build username for telegram_id=%s username=%s",
|
"Cannot build username for telegram_id=%s username=%s",
|
||||||
@@ -450,6 +447,7 @@ async def get_rw_user(
|
|||||||
|
|
||||||
rw_user = await get_user_by_username(sdk, rw_username)
|
rw_user = await get_user_by_username(sdk, rw_username)
|
||||||
return rw_user
|
return rw_user
|
||||||
|
return rw_user
|
||||||
|
|
||||||
|
|
||||||
async def sync_subscription_by_telegram_id(
|
async def sync_subscription_by_telegram_id(
|
||||||
@@ -466,7 +464,7 @@ async def sync_subscription_by_telegram_id(
|
|||||||
|
|
||||||
rw_user = await get_rw_user(sdk, telegram_id=telegram_id, username=username)
|
rw_user = await get_rw_user(sdk, telegram_id=telegram_id, username=username)
|
||||||
if rw_user is None:
|
if rw_user is None:
|
||||||
rw_username = _build_rw_username(telegram_id=telegram_id, username=username)
|
rw_username = _build_rw_username(username=username)
|
||||||
rw_user = await create_user(
|
rw_user = await create_user(
|
||||||
sdk=sdk,
|
sdk=sdk,
|
||||||
username=rw_username,
|
username=rw_username,
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ class OrderRepository:
|
|||||||
self.session.add(addon)
|
self.session.add(addon)
|
||||||
|
|
||||||
await self.session.commit()
|
await self.session.commit()
|
||||||
|
await self.session.refresh(order, attribute_names=["addons"])
|
||||||
|
|
||||||
return order
|
return order
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user