feat: Обновить bulk actions, удалить функции связанные с inbounds, взамен добавить функции связанные с squads. Так-же удалены inbounds c моделей пользователя

This commit is contained in:
Artem 2025-08-30 21:46:34 +02:00
parent 5f04c2eca9
commit 97ef97bd46
No known key found for this signature in database
GPG key ID: 833485276B7902CE
4 changed files with 22 additions and 34 deletions

View file

@ -9,7 +9,7 @@ from remnawave.models import (
BulkAllUpdateUsersRequestDto,
BulkAllUpdateUsersResponseDto,
BulkResponseDto,
BulkUpdateUsersInboundsRequestDto,
BulkUpdateUsersInternalSquadsRequestDto,
UpdateUserFields,
)
from remnawave.rapid import AttributeBody, BaseController, patch, post
@ -62,12 +62,12 @@ class UsersBulkActionsController(BaseController):
"""Bulk Update Users"""
...
@post("/users/bulk/update-inbounds", response_class=BulkResponseDto)
async def bulk_update_users_inbounds(
@post("/users/bulk/update-squads", response_class=BulkResponseDto)
async def bulk_update_users_internal_squads(
self,
body: Annotated[BulkUpdateUsersInboundsRequestDto, PydanticBody()],
body: Annotated[BulkUpdateUsersInternalSquadsRequestDto, PydanticBody()],
) -> BulkResponseDto:
"""Bulk Update Users Inbounds"""
"""Bulk Update Users Internal Squads"""
...
@post("/users/bulk/all/update", response_class=BulkAllUpdateUsersResponseDto)

View file

@ -220,7 +220,7 @@ from .users_bulk_actions import (
BulkAllUpdateUsersRequestDto,
BulkAllUpdateUsersResponseDto,
BulkResponseDto,
BulkUpdateUsersInboundsRequestDto,
BulkUpdateUsersInternalSquadsRequestDto,
UpdateUserFields,
)
from .users_stats import UserUsageByRange, UserUsageByRangeResponseDto
@ -401,7 +401,7 @@ __all__ = [
"BulkAllUpdateUsersRequestDto",
"BulkAllUpdateUsersResponseDto",
"BulkResponseDto",
"BulkUpdateUsersInboundsRequestDto",
"BulkUpdateUsersInternalSquadsRequestDto",
"UpdateUserFields",
# Users stats models
"UserUsageByRange",

View file

@ -35,9 +35,11 @@ class HappCrypto(BaseModel):
class CreateUserRequestDto(BaseModel):
expire_at: datetime = Field(..., serialization_alias="expireAt")
username: Annotated[
str, StringConstraints(pattern=r"^[a-zA-Z0-9_-]+$", min_length=3, max_length=36)
]
created_at: Optional[datetime] = Field(None, serialization_alias="createdAt")
status: Optional[UserStatus] = None
subscription_uuid: Optional[str] = Field(
None, serialization_alias="subscriptionUuid"
@ -56,11 +58,6 @@ class CreateUserRequestDto(BaseModel):
traffic_limit_strategy: Optional[TrafficLimitStrategy] = Field(
None, serialization_alias="trafficLimitStrategy"
)
active_user_inbounds: Optional[List[str]] = Field(
None, serialization_alias="activeUserInbounds"
)
expire_at: datetime = Field(..., serialization_alias="expireAt")
created_at: Optional[datetime] = Field(None, serialization_alias="createdAt")
last_traffic_reset_at: Optional[datetime] = Field(
None, serialization_alias="lastTrafficResetAt"
)
@ -78,30 +75,24 @@ class CreateUserRequestDto(BaseModel):
class UpdateUserRequestDto(BaseModel):
uuid: UUID
active_internal_squads: Optional[List[str]] = Field(
None, serialization_alias="activeInternalSquads"
)
description: Optional[str] = None
email: Optional[str] = None
expire_at: Optional[datetime] = Field(None, serialization_alias="expireAt")
hwidDeviceLimit: Optional[int] = Field(
None, serialization_alias="hwidDeviceLimit", strict=True, ge=0
)
status: Optional[UserStatus] = None
tag: Optional[str] = None
telegram_id: Optional[int] = Field(None, serialization_alias="telegramId")
traffic_limit_bytes: Optional[int] = Field(
None, serialization_alias="trafficLimitBytes", strict=True, ge=0
)
traffic_limit_strategy: Optional[TrafficLimitStrategy] = Field(
None, serialization_alias="trafficLimitStrategy"
)
active_user_inbounds: Optional[List[str]] = Field(
None, serialization_alias="activeUserInbounds"
)
expire_at: Optional[datetime] = Field(None, serialization_alias="expireAt")
last_traffic_reset_at: Optional[datetime] = Field(
None, serialization_alias="lastTrafficResetAt"
)
description: Optional[str] = None
tag: Optional[str] = None
telegram_id: Optional[int] = Field(None, serialization_alias="telegramId")
email: Optional[str] = None
hwidDeviceLimit: Optional[int] = Field(
None, serialization_alias="hwidDeviceLimit", strict=True, ge=0
)
active_internal_squads: Optional[List[str]] = Field(
None, serialization_alias="activeInternalSquads"
)
class UserResponseDto(BaseModel):
@ -129,9 +120,6 @@ class UserResponseDto(BaseModel):
hwidDeviceLimit: Optional[int] = Field(
None, serialization_alias="hwidDeviceLimit", strict=True, ge=0
)
active_user_inbounds: Optional[List[UserActiveInboundsDto]] = Field(
None, alias="activeUserInbounds"
)
active_internal_squads: Optional[List[ActiveInternalSquadDto]] = Field(
None, alias="activeInternalSquads"
)

View file

@ -8,9 +8,9 @@ from remnawave.enums import UserStatus
from remnawave.enums.users import TrafficLimitStrategy
class BulkUpdateUsersInboundsRequestDto(BaseModel):
class BulkUpdateUsersInternalSquadsRequestDto(BaseModel):
uuids: List[UUID]
active_user_inbounds: List[UUID] = Field(serialization_alias="activeUserInbounds")
active_internal_squads: List[UUID] = Field(serialization_alias="activeInternalSquads")
TagStr = Annotated[
str,