New bids pages + various fixes. (#266)

* New bids pages + various fixes.

* LINT

* Fix styling.
This commit is contained in:
Gerlof van Ek
2025-02-22 16:55:12 +01:00
committed by GitHub
parent f1c2b41714
commit 97bb615176
12 changed files with 2851 additions and 640 deletions

View File

@@ -9,12 +9,14 @@ from .util import (
PAGE_LIMIT,
describeBid,
get_data_entry,
have_data_entry,
get_data_entry_or,
have_data_entry,
listAvailableCoins,
listBidActions,
listBidStates,
listOldBidStates,
set_pagination_filters,
setCoinFilter,
)
from basicswap.util import (
ensure,
@@ -149,9 +151,7 @@ def page_bid(self, url_split, post_string):
)
def page_bids(
self, url_split, post_string, sent=False, available=False, received=False
):
def page_bids(self, url_split, post_string, sent=False, available=False, received=False):
server = self.server
swap_client = server.swap_client
swap_client.checkSystemStatus()
@@ -165,6 +165,8 @@ def page_bids(
"limit": PAGE_LIMIT,
"sort_by": "created_at",
"sort_dir": "desc",
"coin_from": -1,
"coin_to": -1,
}
if available:
filters["bid_state_ind"] = BidStates.BID_RECEIVED
@@ -176,6 +178,9 @@ def page_bids(
if have_data_entry(form_data, "clearfilters"):
swap_client.clearFilters(filter_key)
else:
filters["coin_from"] = setCoinFilter(form_data, "coin_from")
filters["coin_to"] = setCoinFilter(form_data, "coin_to")
if have_data_entry(form_data, "sort_by"):
sort_by = get_data_entry(form_data, "sort_by")
ensure(sort_by in ["created_at"], "Invalid sort by")
@@ -208,6 +213,8 @@ def page_bids(
"bid_states": listBidStates(),
}
coins_from, coins_to = listAvailableCoins(swap_client, split_from=True)
if available:
bids = swap_client.listBids(sent=False, filters=filters)
template = server.env.get_template("bids_available.html")
@@ -221,6 +228,8 @@ def page_bids(
"data": page_data,
"summary": summary,
"filter_key": filter_key,
"coins_from": coins_from,
"coins": coins_to,
"bids": [
(
format_timestamp(b[0]),
@@ -249,6 +258,8 @@ def page_bids(
"data": page_data,
"summary": summary,
"filter_key": filter_key,
"coins_from": coins_from,
"coins": coins_to,
"sent_bids": [
(
format_timestamp(b[0]),

View File

@@ -122,8 +122,30 @@ def set_pagination_filters(form_data, filters):
filters["page_no"] = 1
elif form_data and have_data_entry(form_data, "pageforwards"):
filters["page_no"] = int(form_data[b"pageno"][0]) + 1
if filters["page_no"] > 1:
filters["offset"] = (filters["page_no"] - 1) * PAGE_LIMIT
no_limit = False
if form_data:
if "is_json" in form_data:
no_limit = form_data.get("no_limit", False)
else:
no_limit = b"no_limit" in form_data
if no_limit:
filters["offset"] = 0
filters["limit"] = None
else:
if filters["page_no"] > 1:
filters["offset"] = (filters["page_no"] - 1) * PAGE_LIMIT
filters["limit"] = PAGE_LIMIT
def get_data_with_pagination(data, filters):
if filters.get("limit") is None:
return data
offset = filters.get("offset", 0)
limit = filters.get("limit", PAGE_LIMIT)
return data[offset:offset + limit]
def getTxIdHex(bid, tx_type, suffix):