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
77
78
79
80
81
|
'''
A utility class to manage the environment
variables & interact with the database.
Verified: 2021 February 7
* Follows PEP8
* Tested Platforms
* Windows 10
'''
from server.database import Database
from server.settings import Settings
from server.error import ServerError
from server.console import Console
from shared.state import Static
class Environment:
def __init__(self, ret):
self.__ret = ret
self.__db = Database()
self.__db.create_table(Settings.TABLE_NAME,
**Settings.TABLE_KWARGS)
self.__db.commit()
self.__environment = self.__db.read(
Settings.TABLE_NAME, fetch=1)
if not self.__environment:
self.__db.write(Settings.TABLE_NAME,
Settings.DEFAULT)
self.__db.commit()
self.__environment = (Settings.DEFAULT,)
@ServerError.quiet
def __del__(self):
self.__db.close()
def set(self, variable, value):
lower_variable = variable.lower()
if lower_variable in Settings.TABLE_KWARGS:
upper_variable = variable.upper()
old_value = getattr(Settings, upper_variable)
if type(old_value) is int:
lower_value = value.lower()
if lower_value == 'true':
value = 1
elif lower_value == 'false':
value = 0
else:
raise ValueError('Bool Required')
else:
value = value.strip()
self.__db.update(Settings.TABLE_NAME,
(lower_variable, '=', old_value),
**{lower_variable: value})
self.__db.commit()
setattr(Settings, upper_variable, value)
return Console.printf('Environment variable set',
Static.SUCCESS, ret=self.__ret)
else:
return Console.printf('Environment variable does not exist',
Static.WARNING, ret=self.__ret)
@staticmethod
def list(ret):
headers, values = ('Variable', 'Value'), []
for key, value in zip(Settings.EVENIORMENT_VARIABLES,
Settings.environment()):
values.append((key, (bool(value) if type(value)
is int else value)))
return Console.tabulate(values, headers, ret)
|