aboutsummaryrefslogtreecommitdiff
path: root/backend/hist_data/gen_picked_data.py
diff options
context:
space:
mode:
authorTerry Truong <terry06890@gmail.com>2023-01-21 12:21:03 +1100
committerTerry Truong <terry06890@gmail.com>2023-01-21 12:32:01 +1100
commit0a9b2c2e5eca8a04e37fbdd423379882863237c2 (patch)
tree1812bdb6bb13e4f76fdd7ef04075b291f775c213 /backend/hist_data/gen_picked_data.py
parent8321e2f92dbc073b8f1de87895d6620a2021b22e (diff)
Adjust backend coding style
Increase line spacing, add section comments, etc
Diffstat (limited to 'backend/hist_data/gen_picked_data.py')
-rwxr-xr-xbackend/hist_data/gen_picked_data.py30
1 files changed, 20 insertions, 10 deletions
diff --git a/backend/hist_data/gen_picked_data.py b/backend/hist_data/gen_picked_data.py
index c5f4577..a6bb8f8 100755
--- a/backend/hist_data/gen_picked_data.py
+++ b/backend/hist_data/gen_picked_data.py
@@ -4,14 +4,15 @@
Adds additional manually-picked events to the database
"""
-# Code used in unit testing (for resolving imports of modules within this directory)
-import os, sys
+# For unit testing, resolve imports of modules within this directory
+import os
+import sys
parentDir = os.path.dirname(os.path.realpath(__file__))
sys.path.append(parentDir)
-# Standard imports
+
import argparse
import json, sqlite3
-# Local imports
+
from gen_imgs import convertImage
from cal import SCALES, dbDateToHistDate, dateToUnit
@@ -23,7 +24,7 @@ IMG_OUT_DIR = 'img'
def genData(pickedDir: str, pickedEvtFile: str, dbFile: str, imgOutDir: str, scales: list[int]) -> None:
dbCon = sqlite3.connect(dbFile)
dbCur = dbCon.cursor()
- #
+
with open(os.path.join(pickedDir, pickedEvtFile)) as f:
eventsToAdd = json.load(f)
nextId = -1
@@ -33,7 +34,7 @@ def genData(pickedDir: str, pickedEvtFile: str, dbFile: str, imgOutDir: str, sca
if eventId is None and title is None:
print(f'ERROR: Entry with no ID or title: {event}')
break
- #
+
doAdd = eventId is None and len(event) > 1
doModify = eventId is not None and len(event) > 1
doDelete = not doModify and not doAdd
@@ -42,6 +43,7 @@ def genData(pickedDir: str, pickedEvtFile: str, dbFile: str, imgOutDir: str, sca
dbCur.execute('INSERT INTO events VALUES (?, ?, ?, ?, ?, ?, ?, ?)',
(nextId, event['title'], event['start'], event['start_upper'], event['end'], event['end_upper'],
event['fmt'], event['ctg']))
+
# Update image, description, and popularity tables
if 'image' in event:
print('> Adding image')
@@ -57,6 +59,7 @@ def genData(pickedDir: str, pickedEvtFile: str, dbFile: str, imgOutDir: str, sca
if 'desc' in event:
dbCur.execute('INSERT INTO descs VALUES (?, ?, ?)', (nextId, nextId, event['desc']))
dbCur.execute('INSERT INTO pop VALUES (?, ?)', (nextId, event['pop']))
+
# Update event distribution tables
for scale in scales:
unit = dateToUnit(dbDateToHistDate(event['start'], event['fmt']), scale)
@@ -65,7 +68,7 @@ def genData(pickedDir: str, pickedEvtFile: str, dbFile: str, imgOutDir: str, sca
else:
dbCur.execute('INSERT INTO dist VALUES (?, ?, ?)', (scale, unit, 1))
dbCur.execute('INSERT INTO event_disp VALUES (?, ?, ?)', (nextId, scale, unit))
- #
+
nextId -= 1
elif doDelete:
if eventId:
@@ -78,6 +81,7 @@ def genData(pickedDir: str, pickedEvtFile: str, dbFile: str, imgOutDir: str, sca
print(f'ERROR: Could not find event with title {title}')
break
eventId, eventStart, eventFmt = row
+
# Note: Intentionally not deleting entries or files for images that become unused.
dbCur.execute('DELETE FROM events WHERE id = ?', (eventId,))
dbCur.execute('DELETE FROM pop WHERE id = ?', (eventId,))
@@ -93,15 +97,18 @@ def genData(pickedDir: str, pickedEvtFile: str, dbFile: str, imgOutDir: str, sca
dbCur.execute('UPDATE dist SET count = count - 1 WHERE scale = ? AND unit = ?', (scale, unit))
dbCur.execute('DELETE FROM event_disp WHERE id = ?', (eventId,))
else: # doModify
+ # Note: Intentionally not updating 'event_disp' table to account for 'indirect event displayability'
print(f'Modifying event with ID {eventId}')
row = dbCur.execute('SELECT start, fmt FROM events WHERE id = ?', (eventId,)).fetchone()
if row is None:
print(f'ERROR: Could not find event with ID {eventId}')
break
oldStart, oldFmt = row
+
for field in ['title', 'start', 'start_upper', 'end', 'end_upper', 'fmt', 'ctg']:
if field in event:
dbCur.execute(f'UPDATE events SET {field} = ? WHERE id = ?', (event[field], eventId,))
+
if 'image' in event:
print('> Adding image')
image = event['image']
@@ -117,16 +124,19 @@ def genData(pickedDir: str, pickedEvtFile: str, dbFile: str, imgOutDir: str, sca
# Note: Intentionally not deleting entries or files for images that become unused.
else:
dbCur.execute('INSERT INTO event_imgs VALUES (?, ?)', (eventId, nextId))
+
if 'desc' in event:
if dbCur.execute('SELECT desc FROM descs WHERE id = ?', (eventId,)).fetchone():
dbCur.execute('UPDATE event_imgs SET desc = ? WHERE id = ?', (event['desc'], eventId))
else:
dbCur.execute('INSERT INTO descs VALUES (?, ?)', (eventId, event['desc']))
+
if 'pop' in event:
if dbCur.execute('SELECT pop FROM pop WHERE id = ?', (eventId,)).fetchone():
dbCur.execute('UPDATE pop SET pop = ? WHERE id = ?', (event['pop'], eventId))
else:
dbCur.execute('INSERT INTO pop VALUES (?, ?)', (eventId, event['pop']))
+
if 'start' in event:
# Remove old distribution data
for scale in scales:
@@ -147,14 +157,14 @@ def genData(pickedDir: str, pickedEvtFile: str, dbFile: str, imgOutDir: str, sca
else:
dbCur.execute('INSERT INTO dist VALUES (?, ?, ?)', (scale, unit, 1))
dbCur.execute('INSERT INTO event_disp VALUES (?, ?, ?)', (eventId, scale, unit))
- # Note: Intentionally not updating 'event_disp' table to account for 'indirect event displayability'
+
nextId -= 1
- #
+
dbCon.commit()
dbCon.close()
if __name__ == '__main__':
parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
args = parser.parse_args()
- #
+
genData(PICKED_DIR, PICKED_EVT_FILE, DB_FILE, IMG_OUT_DIR, SCALES)