Files
py-ailbl-user-phone/apps/filters.py
QuangMinh_123 24e4db954a
Some checks failed
K8S Fission Deployment / Deployment fission functions (push) Failing after 21s
FixNameFile
2025-12-10 09:57:16 +00:00

55 lines
1.6 KiB
Python

import dataclasses
from typing import Optional
from flask import request
from helpers import str_to_bool
@dataclasses.dataclass
class PhoneFilter:
phone_number: Optional[str] = None
prefix: Optional[str] = None
created_from: Optional[str] = None
created_to: Optional[str] = None
modified_from: Optional[str] = None
modified_to: Optional[str] = None
@classmethod
def from_request_queries(cls) -> "PhoneFilter":
return cls(
phone_number=request.args.get("filter[phone_number]"),
prefix=request.args.get("filter[prefix]"),
created_from=request.args.get("filter[created_from]"),
created_to=request.args.get("filter[created_to]"),
modified_from=request.args.get("filter[modified_from]"),
modified_to=request.args.get("filter[modified_to]"),
)
@dataclasses.dataclass
class Page:
page: int = 0
size: int = 10
asc: bool = False
@classmethod
def from_request_queries(cls) -> "Page":
return Page(
page=int(request.args.get("page", 0)),
size=int(request.args.get("size", 10)),
asc=request.args.get("asc", type=str_to_bool) or False
)
@dataclasses.dataclass
class PhonePage(Page): # Ke thua
sortby: Optional[str] = None
filter: PhoneFilter = dataclasses.field(
default_factory=PhoneFilter.from_request_queries
)
@classmethod
def from_request_queries(cls) -> "PhonePage":
# return super().from_request_queries()
base = Page.from_request_queries()
return cls(**dataclasses.asdict(base), sortby=request.args.get("sortby"))