diff --git a/basicswap/basicswap.py b/basicswap/basicswap.py index 711b029..088c884 100644 --- a/basicswap/basicswap.py +++ b/basicswap/basicswap.py @@ -245,6 +245,7 @@ class BasicSwap(BaseApp): self.network_pubkey = self.settings['network_pubkey'] self.network_addr = pubkeyToAddress(chainparams[Coins.PART][self.chain]['pubkey_address'], bytes.fromhex(self.network_pubkey)) + self.db_echo = self.settings.get('db_echo', False) self.sqlite_file = os.path.join(self.data_dir, 'db{}.sqlite'.format('' if self.chain == 'mainnet' else ('_' + self.chain))) db_exists = os.path.exists(self.sqlite_file) @@ -257,7 +258,8 @@ class BasicSwap(BaseApp): close_all_sessions() Base.metadata.create_all(self.engine) self.engine.dispose() - self.engine = sa.create_engine('sqlite:///' + self.sqlite_file) + + self.engine = sa.create_engine('sqlite:///' + self.sqlite_file, echo=self.db_echo) self.session_factory = sessionmaker(bind=self.engine, expire_on_commit=False) session = scoped_session(self.session_factory) @@ -5392,10 +5394,13 @@ class BasicSwap(BaseApp): now = int(time.time()) session = scoped_session(self.session_factory) + subquery = session.query(sa.func.sum(Bid.amount).label('completed_bid_amount')).filter(sa.and_(Bid.offer_id == Offer.offer_id, Bid.state == BidStates.SWAP_COMPLETED)).correlate(Offer).scalar_subquery() + q = session.query(Offer, subquery) + if sent: - q = session.query(Offer).filter(Offer.was_sent == True) # noqa: E712 + q = q.filter(Offer.was_sent == True) # noqa: E712 else: - q = session.query(Offer).filter(sa.and_(Offer.expire_at > now, Offer.active_ind == 1)) + q = q.filter(sa.and_(Offer.expire_at > now, Offer.active_ind == 1)) filter_offer_id = filters.get('offer_id', None) if filter_offer_id is not None: @@ -5424,11 +5429,11 @@ class BasicSwap(BaseApp): for row in q: # Show offers for enabled coins only try: - ci_from = self.ci(row.coin_from) - ci_to = self.ci(row.coin_to) + ci_from = self.ci(row[0].coin_from) + ci_to = self.ci(row[0].coin_to) except Exception as e: continue - rv.append(row) + rv.append((row[0], 0 if row[1] is None else row[1])) return rv finally: session.close() diff --git a/basicswap/js_server.py b/basicswap/js_server.py index bdb3c42..08119c0 100644 --- a/basicswap/js_server.py +++ b/basicswap/js_server.py @@ -129,7 +129,8 @@ def js_offers(self, url_split, post_string, is_json, sent=False): offers = self.server.swap_client.listOffers(sent, filters) rv = [] - for o in offers: + for row in offers: + o, _ = row ci_from = self.server.swap_client.ci(o.coin_from) ci_to = self.server.swap_client.ci(o.coin_to) rv.append({ diff --git a/basicswap/templates/offer.html b/basicswap/templates/offer.html index 249e31d..90dd011 100644 --- a/basicswap/templates/offer.html +++ b/basicswap/templates/offer.html @@ -20,8 +20,9 @@
| At | From | Recipient | Offer ID | Coin From | Coin To | Amount From | Amount To | Rate | |
|---|---|---|---|---|---|---|---|---|---|
| At | From | Recipient | Offer ID | Coin From | Coin To | Amount From | Amount To | Rate | Amount From Swapped |
| {{ o[0] }} | {{ o[8]|truncate(12, True) }}{% if o[9]==true %} Sent{% endif %} | {{ o[7] }} | {{ o[1] }} | {{ o[2] }} | {{ o[3] }} | {{ o[4] }} | {{ o[5] }} | {{ o[6] }} | |
| {{ o[0] }} | {{ o[8]|truncate(12, True) }}{% if o[9]==true %} Sent{% endif %} | {{ o[7] }} | {{ o[1] }} | {{ o[2] }} | {{ o[3] }} | {{ o[4] }} | {{ o[5] }} | {{ o[6] }} | {{ o[10] }} |