add more device fields
This commit is contained in:
+17
-2
@@ -13,6 +13,9 @@ class CustomerBase(BaseModel):
|
||||
username: str = Field(max_length=64)
|
||||
mac_address: str = Field(max_length=17)
|
||||
status: Literal["new", "paid", "unpaid"] = "new"
|
||||
name: str | None = Field(default=None, max_length=128)
|
||||
phone: str | None = Field(default=None, max_length=32)
|
||||
device_alias: str | None = Field(default=None, max_length=64)
|
||||
|
||||
|
||||
class CustomerCreate(CustomerBase):
|
||||
@@ -23,6 +26,9 @@ class CustomerUpdate(BaseModel):
|
||||
username: str | None = Field(default=None, max_length=64)
|
||||
mac_address: str | None = Field(default=None, max_length=17)
|
||||
status: Literal["new", "paid", "unpaid"] | None = None
|
||||
name: str | None = Field(default=None, max_length=128)
|
||||
phone: str | None = Field(default=None, max_length=32)
|
||||
device_alias: str | None = Field(default=None, max_length=64)
|
||||
|
||||
|
||||
class CustomerOut(ORMModel, CustomerBase):
|
||||
@@ -136,11 +142,17 @@ class DeviceOut(BaseModel):
|
||||
mac_address: str
|
||||
group: str | None = None # radusergroup.groupname
|
||||
status: str | None = None # customers.status
|
||||
name: str | None = None # customers.name (human metadata)
|
||||
phone: str | None = None # customers.phone (human metadata)
|
||||
alias: str | None = None # customers.device_alias (human metadata)
|
||||
|
||||
|
||||
class DeviceCreate(BaseModel):
|
||||
mac_address: str = Field(pattern=_MAC_RE, max_length=17)
|
||||
group: str = Field(min_length=1, max_length=64)
|
||||
name: str = Field(min_length=1, max_length=128, description="Customer name (metadata, ignored by RADIUS)")
|
||||
phone: str = Field(min_length=1, max_length=32, description="Phone number (metadata, ignored by RADIUS)")
|
||||
alias: str | None = Field(default=None, max_length=64, description="Optional device alias (metadata)")
|
||||
|
||||
@field_validator("mac_address")
|
||||
@classmethod
|
||||
@@ -152,6 +164,9 @@ class DeviceEdit(BaseModel):
|
||||
mac_address: str = Field(pattern=_MAC_RE, max_length=17)
|
||||
group: str | None = Field(default=None, max_length=64)
|
||||
status: Literal["new", "paid", "unpaid"] | None = None
|
||||
name: str | None = Field(default=None, max_length=128)
|
||||
phone: str | None = Field(default=None, max_length=32)
|
||||
alias: str | None = Field(default=None, max_length=64)
|
||||
|
||||
@field_validator("mac_address")
|
||||
@classmethod
|
||||
@@ -160,8 +175,8 @@ class DeviceEdit(BaseModel):
|
||||
|
||||
@model_validator(mode="after")
|
||||
def _at_least_one(self):
|
||||
if self.group is None and self.status is None:
|
||||
raise ValueError("provide at least one of: group, status")
|
||||
if all(v is None for v in (self.group, self.status, self.name, self.phone, self.alias)):
|
||||
raise ValueError("provide at least one of: group, status, name, phone, alias")
|
||||
return self
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user