Quellcode durchsuchen

Lots of smaller fixes

Eren Yilmaz vor 6 Jahren
Ursprung
Commit
c6ee021fc7
5 geänderte Dateien mit 24 neuen und 15 gelöschten Zeilen
  1. 7 6
      client_controller.py
  2. 2 2
      db_setup.py
  3. 1 0
      game.py
  4. 12 6
      model.py
  5. 2 1
      server_controller.py

+ 7 - 6
client_controller.py

@@ -5,6 +5,7 @@ from inspect import signature
 import connection
 from connection import client_request
 from debug import debug
+from game import DEFAULT_ORDER_EXPIRY
 from run_client import allowed_commands, fake_loading_bar
 from util import my_tabulate
 
@@ -228,9 +229,9 @@ def buy(obj_name=None, amount=None, limit='', stop_loss='', expiry=None):
         return
 
     if expiry is None:
-        expiry = input('Time until order expires (minutes, default 43200):')
+        expiry = input('Time until order expires (minutes, default ' + str(DEFAULT_ORDER_EXPIRY) + '):')
         if expiry == '':
-            expiry = 43200
+            expiry = DEFAULT_ORDER_EXPIRY
     try:
         expiry = float(expiry)
     except ValueError:
@@ -275,9 +276,9 @@ def sell(obj_name=None, amount=None, limit='', stop_loss='', expiry=None):
         return
 
     if expiry is None:
-        expiry = input('Time until order expires (minutes, default 43200):')
+        expiry = input('Time until order expires (minutes, default ' + str(DEFAULT_ORDER_EXPIRY) + '):')
         if expiry == '':
-            expiry = 43200
+            expiry = DEFAULT_ORDER_EXPIRY
     try:
         expiry = float(expiry)
     except ValueError:
@@ -426,9 +427,9 @@ def trades(limit=10):
 def old_orders(include_canceled=None, include_executed=None, limit=10):
     limit = float(limit)
     if include_canceled is None:
-        include_canceled = yn_dialog('Include canceled/expired orders?')
+        include_canceled = yn_dialog('Include canceled/expired orders in list?')
     if include_executed is None:
-        include_executed = yn_dialog('Include fully executed orders?')
+        include_executed = yn_dialog('Include fully executed orders in list?')
     if not include_canceled and not include_executed:
         data = []
     else:

+ 2 - 2
db_setup.py

@@ -293,7 +293,7 @@ def create_triggers(cursor):
                 ''')
     cursor.execute('''
                 CREATE TRIGGER IF NOT EXISTS order_history_no_update
-                INSTEAD OF UPDATE ON order_history
+                BEFORE UPDATE ON order_history
                 BEGIN SELECT RAISE(ROLLBACK, 'Can not change order history.'); END
                 ''')
 
@@ -415,7 +415,7 @@ def tables(cursor):
                     executed_amount CURRENCY NOT NULL,
                     expiry_dt DATETIME NOT NULL,
                     status VARCHAR(20) NOT NULL,
-                    order_id = INTEGER NOT NULL,
+                    order_id INTEGER NOT NULL,
                     archived_dt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
                     FOREIGN KEY (ownership_id) REFERENCES ownership(rowid)
                     -- order_id is not a FOREIGN KEY since orders are deleted from order table afterwards

+ 1 - 0
game.py

@@ -1,3 +1,4 @@
 CURRENCY_NAME = "₭ollar"
 
 MINIMUM_ORDER_AMOUNT = 1
+DEFAULT_ORDER_EXPIRY = 43200

+ 12 - 6
model.py

@@ -566,7 +566,7 @@ def delete_order(order_id, new_order_status):
             expiry_dt, 
             ?, 
             rowid
-        FROM order
+        FROM orders
         WHERE rowid = ?
         ''', (order_id, new_order_status))
 
@@ -593,6 +593,7 @@ def current_value(ownable_id):
 
 def execute_orders(ownable_id):
     connect()
+    orders_changed = False
     while True:
         # find order to execute
         cursor.execute('''
@@ -670,9 +671,12 @@ def execute_orders(ownable_id):
         #               user_id,user_id,rowid,rowid)
 
         if not matching_orders:
+            if not orders_changed:
+                break
             # check if the trading bot has any new offers to make
             new_order_was_placed = trading_bot.notify_order_traded(ownable_id)
             if new_order_was_placed:
+                orders_changed = False
                 continue
             else:
                 break
@@ -732,8 +736,10 @@ def execute_orders(ownable_id):
 
         if buy_order_finished:
             delete_order(buy_order_id, 'Executed')
+            orders_changed = True
         if sell_order_finished:
             delete_order(sell_order_id, 'Executed')
+            orders_changed = True
 
         if seller_id != buyer_id:  # prevent showing self-transactions
             cursor.execute('''
@@ -1150,16 +1156,16 @@ def get_old_orders(user_id, include_executed, include_canceled, limit):
     cursor.execute('''
         SELECT 
             (CASE WHEN order_history.buy THEN 'Buy' ELSE 'Sell' END),
-            ownable.name,
-            order_history.amount,
-            order_history.limit,
+            ownables.name,
+            (order_history.ordered_amount - order_history.executed_amount) || '/' || order_history.ordered_amount,
+            order_history."limit",
             order_history.expiry_dt,
             order_history.order_id,
             order_history.status
-        FROM order_history, ownership, ownable
+        FROM order_history, ownership, ownables
         WHERE ownership.user_id = ?
         AND ownership.rowid = order_history.ownership_id
-        AND ownable.rowid = ownership.ownable_id
+        AND ownables.rowid = ownership.ownable_id
         AND (
              (order_history.status = 'Executed' AND ?)
              OR 

+ 2 - 1
server_controller.py

@@ -196,7 +196,8 @@ def old_orders():
     include_executed = request.json['include_executed']
     include_canceled = request.json['include_canceled']
     user_id = model.get_user_id_by_session_id(request.json['session_id'])
-    data = model.get_old_orders(user_id, include_executed, include_canceled)
+    limit = request.json['limit']
+    data = model.get_old_orders(user_id, include_executed, include_canceled, limit)
     return {'data': data}