Foppe Hemminga преди 5 години
родител
ревизия
e40c906b34
променени са 1 файла, в които са добавени 25 реда и са изтрити 2 реда
  1. 25 2
      cron.py

+ 25 - 2
cron.py

@@ -37,6 +37,13 @@ def update_value(maintainer, player, property, new_value):
     cur = conn.cursor()
     cur.execute(query, (maintainer, player, property, value))
 
+def update_missing_value(maintainer, player, property, value):
+    query = """INSERT OR REPLACE INTO player (maintainer, player, property, value)
+        VALUES (?, ?, ?, ?);"""
+    conn = sqlite3.connect(settings.db_path + '/slork.sqlite')
+    cur = conn.cursor()
+    cur.execute(query, (maintainer, player, property, value)
+
 def cron():
     query = """SELECT player_properties.maintainer,
             maintainer.api, player_properties.player,
@@ -72,9 +79,12 @@ def cron():
             WHERE maintainer = ?
             AND player = ?
             AND player.property = ?;"""
+        retrieved_properties = []
         for property in properties:
-            for p_row in cur.execute(query, (row['maintainer'], row['player'], property)):
+            p_rows = cur.execute(query, (row['maintainer'], row['player'], property))
+            for p_row in p_rows:
                 print(f"property: '{property}' parent: '{p_row['parent']}' -> value: '{p_row['value']}'")
+                retrieved_properties.append(property)
                 new_value = ''
                 if (p_row['parent']):
                     new_value = player_json[p_row['parent']][property]
@@ -84,7 +94,20 @@ def cron():
                 if p_row['value'] != new_value:
                     send_notification(row['maintainer'], row['player'], property, p_row['value'], new_value)
                     update_value(row['maintainer'], row['player'], property, new_value)
-
+        new_properties = []
+        for item in properties:
+            if item not in retrieved_properties:
+                new_properties.append(item)
+        if len(new_properties > 0):
+            for item in len(new_properties):
+                query = """SELECT parent FROM properties where property = ?;"""
+                cur.execute(query, (item))
+                parent = cur.fetchone()['parent']
+                if (parent):
+                    value = player_json[parent][property]
+                else:
+                    value = player_json[property]
+                update_missing_value(row['maintainer'], row['player'], item, value):
         time.sleep(1)
 
 if __name__ == '__main__':