ClassFilterDone
Some checks failed
K8S Fission Deployment / Deployment fission functions (push) Failing after 11s
Some checks failed
K8S Fission Deployment / Deployment fission functions (push) Failing after 11s
This commit is contained in:
54
apps/filters.py
Normal file
54
apps/filters.py
Normal file
@@ -0,0 +1,54 @@
|
||||
import dataclasses
|
||||
from typing import Optional
|
||||
from flask import request
|
||||
from helpers import str_to_bool
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class PhoneFilter:
|
||||
phone_numbers: 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):
|
||||
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"))
|
||||
Reference in New Issue
Block a user