mschieder@442: #!/usr/bin/env python3 mschieder@442: # mschieder@442: # Author: Magnus Schieder mschieder@442: # (c) 2018 Intevation GmbH mschieder@442: # mschieder@442: # Program to create test data for getan (getan_test_data.db). mschieder@442: # Please delete existing getan_test_data.db. mschieder@442: # Open getan with getan_test_data.db: getan /path/getan_test_data.db mschieder@442: # mschieder@442: # This is Free Software licensed under the terms of GPLv3 or later. mschieder@442: # For details see LICENSE coming with the source of 'getan'. mschieder@442: # mschieder@442: mschieder@442: mschieder@442: import sqlite3 mschieder@442: mschieder@442: mschieder@442: def main(): mschieder@442: mschieder@442: conn = sqlite3.connect("getan_test_data.db") mschieder@442: mschieder@442: db = conn.cursor() mschieder@442: mschieder@442: # create getan schema. mschieder@442: db.execute('''CREATE TABLE projects ( mschieder@442: id INTEGER PRIMARY KEY AUTOINCREMENT, mschieder@442: key VARCHAR(16) NOT NULL CONSTRAINT unique_key UNIQUE, mschieder@442: description VARCHAR(256), mschieder@442: active BOOLEAN DEFAULT 1) mschieder@442: ''') mschieder@442: mschieder@442: db.execute('''CREATE TABLE entries ( mschieder@442: id INTEGER PRIMARY KEY AUTOINCREMENT, mschieder@442: project_id INTEGER REFERENCES projects(id), mschieder@442: start_time TIMESTAMP NOT NULL, mschieder@442: stop_time TIMESTAMP NOT NULL, mschieder@442: description VARCHAR(256), mschieder@442: mschieder@442: CHECK (strftime('%s', start_time) <= strftime('%s', stop_time))) mschieder@442: ''') mschieder@442: mschieder@442: # List of projects. mschieder@442: # (key, 'description') mschieder@442: pro = [ mschieder@442: (1, 'pro1'), mschieder@442: (2, 'pro2'), mschieder@442: (3, 'pro3'), mschieder@442: ] mschieder@442: mschieder@442: # List of entries with test data. mschieder@442: # (project_id, 'start_time', 'stop_time', 'description') mschieder@442: ent = [ mschieder@442: (2, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent9'), mschieder@442: (2, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent8'), mschieder@442: (2, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent7'), mschieder@442: (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent6'), mschieder@442: (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent5'), mschieder@442: (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent4'), mschieder@442: (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent3'), mschieder@442: (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent2'), mschieder@442: (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent1'), mschieder@442: ] mschieder@442: mschieder@442: db.executemany("INSERT INTO projects(key, description) VALUES (?,?)", pro) mschieder@442: mschieder@442: db.executemany('''INSERT INTO entries(project_id, start_time, stop_time, mschieder@442: description) VALUES (?,?,?,?)''', ent) mschieder@442: mschieder@442: conn.commit() mschieder@442: conn.close() mschieder@442: mschieder@442: if __name__ == '__main__': mschieder@442: main()