diff --git a/app/db/crud.py b/app/db/crud.py
@@ -725,12 +725,15 @@ def revoke_user_sub(db: Session, dbuser: User):
def update_user_sub(db: Session, dbuser: User, user_agent: str):
- dbuser.sub_updated_at = datetime.utcnow()
- dbuser.sub_last_user_agent = user_agent
-
- db.commit()
- db.refresh(dbuser)
- return dbuser
+ with db.get_bind().begin() as conn:
+ conn.execute(
+ update(User)
+ .where(User.id == dbuser.id)
+ .values(
+ sub_updated_at=datetime.utcnow(),
+ sub_last_user_agent=user_agent,
+ )
+ )
def reset_all_users_data_usage(db: Session, admin: Optional[Admin] = None):
diff --git a/app/models/user.py b/app/models/user.py
@@ -40,9 +40,16 @@ class User(BaseModel):
]
expire_strategy: UserExpireStrategy
expire_date: datetime | None = Field(None)
- usage_duration: Annotated[
- int, Field(le=9999 * 365 * 24 * 60 * 60, description="usage_duration must be less than 9999 years")
- ] | None = None,
+ usage_duration: (
+ Annotated[
+ int,
+ Field(
+ le=9999 * 365 * 24 * 60 * 60,
+ description="usage_duration must be less than 9999 years",
+ ),
+ ]
+ | None
+ ) = (None,)
activation_deadline: datetime | None = Field(None)
key: str = Field(default_factory=lambda: secrets.token_hex(16))
data_limit: int | None = Field(