fixup!
This commit is contained in:
+5
-4
@@ -9,7 +9,6 @@ from contextlib import asynccontextmanager
|
|||||||
from enum import Enum
|
from enum import Enum
|
||||||
from typing import Any, Generic, Literal, Optional, TypeVar
|
from typing import Any, Generic, Literal, Optional, TypeVar
|
||||||
|
|
||||||
import shortuuid
|
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
from pydantic import BaseModel, ValidationError, root_validator
|
from pydantic import BaseModel, ValidationError, root_validator
|
||||||
from sqlalchemy import event
|
from sqlalchemy import event
|
||||||
@@ -191,7 +190,7 @@ class Connection(Compat):
|
|||||||
{filters.order_by()}
|
{filters.order_by()}
|
||||||
{filters.pagination()}
|
{filters.pagination()}
|
||||||
""",
|
""",
|
||||||
parsed_values,
|
self.rewrite_values(parsed_values),
|
||||||
)
|
)
|
||||||
if rows:
|
if rows:
|
||||||
# no need for extra query if no pagination is specified
|
# no need for extra query if no pagination is specified
|
||||||
@@ -401,7 +400,9 @@ class Filter(BaseModel, Generic[TFilterModel]):
|
|||||||
values: Optional[dict] = None
|
values: Optional[dict] = None
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def parse_query(cls, key: str, raw_values: list[Any], model: type[TFilterModel]):
|
def parse_query(
|
||||||
|
cls, key: str, raw_values: list[Any], model: type[TFilterModel], i: int = 0
|
||||||
|
):
|
||||||
# Key format:
|
# Key format:
|
||||||
# key[operator]
|
# key[operator]
|
||||||
# e.g. name[eq]
|
# e.g. name[eq]
|
||||||
@@ -422,7 +423,7 @@ class Filter(BaseModel, Generic[TFilterModel]):
|
|||||||
validated, errors = compare_field.validate(raw_value, {}, loc="none")
|
validated, errors = compare_field.validate(raw_value, {}, loc="none")
|
||||||
if errors:
|
if errors:
|
||||||
raise ValidationError(errors=[errors], model=model)
|
raise ValidationError(errors=[errors], model=model)
|
||||||
values[f"{field}__{shortuuid.uuid()}"] = validated
|
values[f"{field}__{i}"] = validated
|
||||||
else:
|
else:
|
||||||
raise ValueError("Unknown filter field")
|
raise ValueError("Unknown filter field")
|
||||||
|
|
||||||
|
|||||||
@@ -204,9 +204,9 @@ def parse_filters(model: Type[TFilterModel]):
|
|||||||
):
|
):
|
||||||
params = request.query_params
|
params = request.query_params
|
||||||
filters = []
|
filters = []
|
||||||
for key in params.keys():
|
for i, key in enumerate(params.keys()):
|
||||||
try:
|
try:
|
||||||
filters.append(Filter.parse_query(key, params.getlist(key), model))
|
filters.append(Filter.parse_query(key, params.getlist(key), model, i))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -184,7 +184,7 @@ async def fake_payments(client, adminkey_headers_from):
|
|||||||
# we have to wait a second to ensure a different timestamp than previous invoices
|
# we have to wait a second to ensure a different timestamp than previous invoices
|
||||||
if DB_TYPE == SQLITE:
|
if DB_TYPE == SQLITE:
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
ts = int(time())
|
ts = time()
|
||||||
|
|
||||||
fake_data = [
|
fake_data = [
|
||||||
CreateInvoice(amount=10, memo="aaaa", out=False),
|
CreateInvoice(amount=10, memo="aaaa", out=False),
|
||||||
@@ -201,5 +201,5 @@ async def fake_payments(client, adminkey_headers_from):
|
|||||||
assert data["checking_id"]
|
assert data["checking_id"]
|
||||||
await update_payment_status(data["checking_id"], status=PaymentState.SUCCESS)
|
await update_payment_status(data["checking_id"], status=PaymentState.SUCCESS)
|
||||||
|
|
||||||
params = {"time[ge]": ts, "time[le]": int(time()) + 1}
|
params = {"time[ge]": ts, "time[le]": time()}
|
||||||
return fake_data, params
|
return fake_data, params
|
||||||
|
|||||||
Reference in New Issue
Block a user