2
2
import os
3
3
import sys
4
4
5
+ from django .core .management import execute_from_command_line
6
+
7
+
5
8
class BarsystemInstaller :
6
9
def main (self , argv ):
7
10
# curses.init_pair(1, curses.COLOR_RED, curses.COLOR_WHITE)
@@ -14,21 +17,93 @@ def main(self, argv):
14
17
# if key == 'q':
15
18
# break
16
19
20
+ import django
21
+ django .setup ()
22
+
17
23
self .command = argv [0 ] if len (argv ) else ''
18
24
self .argv = argv [1 :] if len (argv ) > 1 else []
19
25
20
26
cmd_name = 'cmd_' + self .command
21
27
if hasattr (self , cmd_name ):
22
28
getattr (self , cmd_name )()
23
29
else :
24
- print ('usage()' )
30
+ self .cmd_help ()
31
+
32
+ def _command_list (self ):
33
+ return [cmd [len ('cmd_' ):] for cmd in dir (self ) if cmd .startswith ('cmd_' )]
34
+
35
+ def cmd_help (self ):
36
+ print ('Possible commands:' )
37
+ for cmd in self ._command_list ():
38
+ print (' *' , cmd )
25
39
26
40
def cmd_init (self ):
27
- print ('init!' )
41
+ self .cmd_generate_secret_key ()
42
+ self .cmd_migrate ()
43
+ self .cmd_createsuperuser ()
44
+ self .cmd_create_initial_db_entries ()
45
+
46
+ def cmd_update (self ):
47
+ print ('[Updating barsystem]' )
48
+ self .cmd_migrate ()
49
+
50
+ def cmd_migrate (self ):
51
+ print ('[Running migrations]' )
52
+ execute_from_command_line ([
53
+ sys .argv [0 ],
54
+ 'migrate'
55
+ ])
56
+
57
+ def cmd_createsuperuser (self ):
58
+ print ('[Creating superuser]' )
59
+
60
+ from django .contrib .auth import get_user_model
61
+ for user in get_user_model ().objects .all ():
62
+ if user .is_superuser :
63
+ print ('- There is already a superuser!' )
64
+ return
65
+
66
+ execute_from_command_line ([
67
+ sys .argv [0 ],
68
+ 'createsuperuser'
69
+ ])
70
+ print ('- Superuser created.' )
28
71
29
72
def cmd_generate_secret_key (self ):
30
- settings_module = os .getenv ('DJANGO_SETTINGS_MODULE' )
31
- print ('gen sec key!' , settings_module )
73
+ print ('[Generating secret key]' )
74
+ from django .conf import settings
75
+ from django .core .management .utils import get_random_secret_key
76
+
77
+ if os .path .exists (settings .SECRET_KEY_FILE ):
78
+ print ('- Secret file already exists!' )
79
+ return
80
+
81
+ os .makedirs (settings .CONFIG_DIR , exist_ok = True )
82
+
83
+ with open (settings .SECRET_KEY_FILE , 'w' ) as f :
84
+ f .write (get_random_secret_key ())
85
+ print ('- Secret key generated.' )
86
+
87
+ def cmd_create_initial_db_entries (self ):
88
+ print ('[Creating necesarry database entries]' )
89
+ from decimal import Decimal
90
+ from barsystem .models import Product
91
+ try :
92
+ Product .objects .get (special_id = 'cash_deposit' )
93
+ print ('- Cash deposit already exists!' )
94
+ except Product .DoesNotExist :
95
+ cash_deposit = Product (
96
+ name = 'Cash deposit' ,
97
+ member_price = Decimal (- 1 ),
98
+ standard_price = Decimal (- 1 ),
99
+ active = True ,
100
+ special = True ,
101
+ special_id = 'cash_deposit' ,
102
+ quantity_type = 'enter_numeric' ,
103
+ )
104
+ cash_deposit .save ()
105
+ print ('- Cash deposit created.' )
106
+
32
107
33
108
34
109
# Main entrypoint for barsystem-install executable
0 commit comments