|
@@ -551,9 +551,25 @@ def user_money(user_id):
|
|
|
return cursor.fetchone()[0]
|
|
|
|
|
|
|
|
|
-def delete_order(order_id):
|
|
|
+def delete_order(order_id, new_order_status):
|
|
|
connect()
|
|
|
|
|
|
+ cursor.execute('''
|
|
|
+ INSERT INTO order_history
|
|
|
+ (ownership_id, buy, "limit", ordered_amount, executed_amount, expiry_dt, status, order_id)
|
|
|
+ SELECT
|
|
|
+ ownership_id,
|
|
|
+ buy,
|
|
|
+ "limit",
|
|
|
+ ordered_amount,
|
|
|
+ executed_amount,
|
|
|
+ expiry_dt,
|
|
|
+ ?,
|
|
|
+ rowid
|
|
|
+ FROM order
|
|
|
+ WHERE rowid = ?
|
|
|
+ ''', (order_id, new_order_status))
|
|
|
+
|
|
|
cursor.execute('''
|
|
|
DELETE FROM orders
|
|
|
WHERE rowid = ?
|
|
@@ -692,7 +708,7 @@ def execute_orders(ownable_id):
|
|
|
_my_division(buyer_money, price))
|
|
|
|
|
|
if amount == 0: # probable because buyer has not enough money
|
|
|
- delete_order(buy_order_id)
|
|
|
+ delete_order(buy_order_id, 'Unable to pay')
|
|
|
continue
|
|
|
|
|
|
buy_order_finished = (buy_order_amount - buy_executed_amount - amount <= 0) or (
|
|
@@ -715,9 +731,9 @@ def execute_orders(ownable_id):
|
|
|
''', (amount, buy_order_id, sell_order_id))
|
|
|
|
|
|
if buy_order_finished:
|
|
|
- delete_order(buy_order_id)
|
|
|
+ delete_order(buy_order_id, 'Executed')
|
|
|
if sell_order_finished:
|
|
|
- delete_order(sell_order_id)
|
|
|
+ delete_order(sell_order_id, 'Executed')
|
|
|
|
|
|
if seller_id != buyer_id: # prevent showing self-transactions
|
|
|
cursor.execute('''
|
|
@@ -1126,3 +1142,30 @@ def ownable_ids():
|
|
|
''')
|
|
|
|
|
|
return [ownable_id[0] for ownable_id in cursor.fetchall()]
|
|
|
+
|
|
|
+
|
|
|
+def get_old_orders(user_id, include_executed, include_canceled, limit):
|
|
|
+ connect() # TODO testen
|
|
|
+ # TODO indices prüfen
|
|
|
+ cursor.execute('''
|
|
|
+ SELECT
|
|
|
+ (CASE WHEN order_history.buy THEN 'Buy' ELSE 'Sell' END),
|
|
|
+ ownable.name,
|
|
|
+ order_history.amount,
|
|
|
+ order_history.limit,
|
|
|
+ order_history.expiry_dt,
|
|
|
+ order_history.order_id,
|
|
|
+ order_history.status
|
|
|
+ FROM order_history, ownership, ownable
|
|
|
+ WHERE ownership.user_id = ?
|
|
|
+ AND ownership.rowid = order_history.ownership_id
|
|
|
+ AND ownable.rowid = ownership.ownable_id
|
|
|
+ AND (
|
|
|
+ (order_history.status = 'Executed' AND ?)
|
|
|
+ OR
|
|
|
+ ((order_history.status = 'Expired' OR order_history.status = 'Canceled') AND ?)
|
|
|
+ )
|
|
|
+ LIMIT ?
|
|
|
+ ''', (user_id, include_executed, include_canceled, limit))
|
|
|
+
|
|
|
+ return cursor.fetchall()
|