This repository was archived by the owner on Feb 6, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.py
More file actions
76 lines (63 loc) · 2.8 KB
/
Copy pathsetup.py
File metadata and controls
76 lines (63 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
"""
This is a setup script that will set up all the things that are mandatory to execute this program.
*** RUN ONLY ONCE *** unless it is required to reset the database contents.
"""
import interface.print as iface_print
import interface.common as iface_common
import interface.error as iface_error
import random
import database as db
import database.schema as db_schema
import database.seed as db_seed
import os
try:
iface_print.header()
iface_print.warning(
'\033[41m\033[4mATTENTION! This setup script will reset all database contents. BE CAREFUL!\033[0m')
iface_print.separator()
iface_print.info('Verification required!')
verif_code = ''.join(str(random.randint(0, 9)) for _ in range(6))
iface_print.info(f'Please type \033[44m\033[4m{verif_code}\033[0m to continue.')
iface_print.separator()
if iface_common.input_general('Insert verification code') != verif_code:
iface_print.separator()
iface_print.failed('Verification code mismatch.')
iface_print.warning('Setup terminated.')
exit()
iface_print.separator()
iface_print.info('Checking database file...')
if not os.path.exists('database.db'):
iface_print.info('Database file not found!')
iface_print.info('Creating database.db file...')
open('./database.db', 'a').close()
iface_print.success('Database file created.')
else:
iface_print.success('Database file found.')
iface_print.separator()
if iface_common.input_general('Are you sure you want to reset all database contents? [y/N]') not in ['y', 'Y']:
iface_print.warning('Setup terminated.')
exit()
iface_print.separator()
iface_print.info('Migrating database...')
for name, attributes in db_schema.schema.items():
iface_print.info(f'Creating table {name}')
db.create_table(name, attributes, drop_if_exists=True)
iface_print.success(f'Created table {name}')
iface_print.success('Migration completed.')
iface_print.separator()
iface_print.info('Seeding database...')
for vehicle in db_seed.vehicles:
db.cur.execute("INSERT INTO vehicles (name, emissions_gr_km) VALUES (?, ?)", (vehicle['name'], vehicle['emissions_gr_km']))
for tree in db_seed.trees:
db.cur.execute("INSERT INTO trees (name, scientific_name, carbon_absorption_gr_hr) VALUES (?, ?, ?)",
(tree['name'], tree['scientific_name'], tree['carbon_absorption_gr_hr']))
db.conn.commit()
iface_print.success('Seeding completed.')
iface_print.separator()
iface_print.success('Setup completed.')
except KeyboardInterrupt:
iface_print.header()
iface_print.warning('CTRL+C pressed!')
iface_print.warning('The setup program has been terminated safely.')
except Exception as e:
iface_error.handle_exception(e)