33
44from django .core .management import call_command
55from django .contrib .auth import get_user_model
6+ from django .contrib .auth .models import Group
67from django .core .management .base import BaseCommand
78
9+ from mittab .apps .tab .auth_roles import APDA_BOARD_GROUP_NAME
810from mittab .apps .tab .models import TabSettings
911from mittab .libs .backup import backup_round , BEFORE_NEW_TOURNAMENT , INITIAL
1012
@@ -26,6 +28,12 @@ def add_arguments(self, parser):
2628 help = "Password for the entry user" ,
2729 nargs = "?" ,
2830 default = USER_MODEL .objects .make_random_password (length = 8 ))
31+ parser .add_argument (
32+ "--apda-board-password" ,
33+ dest = "apda_board_password" ,
34+ help = "Password for the APDA Board user" ,
35+ nargs = "?" ,
36+ default = None )
2937 parser .add_argument (
3038 "--first-init" ,
3139 dest = "first_init" ,
@@ -35,6 +43,12 @@ def add_arguments(self, parser):
3543 default = False )
3644
3745 def handle (self , * args , ** options ):
46+ apda_board_password = (
47+ options .get ("apda_board_password" )
48+ or os .environ .get ("BOARD_PASSWORD" )
49+ or USER_MODEL .objects .make_random_password (length = 16 )
50+ )
51+
3852 if not options ["first_init" ]:
3953 self .stdout .write ("Backing up the previous tournament data" )
4054 backup_round (btype = BEFORE_NEW_TOURNAMENT )
@@ -48,13 +62,16 @@ def handle(self, *args, **options):
4862 print (why )
4963 sys .exit (1 )
5064
51- self .stdout .write ("Creating tab/entry users" )
65+ self .stdout .write ("Creating tab/entry/APDA Board users" )
5266 tab = USER_MODEL .objects .create_user ("tab" , None , options ["tab_password" ])
5367 tab .is_staff = True
5468 tab .is_admin = True
5569 tab .is_superuser = True
5670 tab .save ()
5771 USER_MODEL .objects .create_user ("entry" , None , options ["entry_password" ])
72+ apda_board = USER_MODEL .objects .create_user ("board" , None , apda_board_password )
73+ apda_board_group , _ = Group .objects .get_or_create (name = APDA_BOARD_GROUP_NAME )
74+ apda_board .groups .add (apda_board_group )
5875
5976 self .stdout .write ("Setting default tab settings" )
6077 TabSettings .set ("tot_rounds" , 5 )
@@ -73,5 +90,9 @@ def handle(self, *args, **options):
7390 self .stdout .write (
7491 f"{ 'entry' .ljust (10 , ' ' )} | { options ['entry_password' ].ljust (10 , ' ' )} "
7592 )
93+ self .stdout .write (
94+ f"{ 'board' .ljust (10 , ' ' )} | "
95+ f"{ apda_board_password .ljust (10 , ' ' )} "
96+ )
7697 if options ["first_init" ]:
7798 backup_round (name = "initial-tournament" , btype = INITIAL )
0 commit comments