import os import sys import transaction from getpass import getpass from ziggurat_foundations.models.services.user import UserService from pyramid.paster import ( get_appsettings, setup_logging, bootstrap, ) from ..models import ( DBSession, Base, User, Group, UserGroup, GroupPermission, ) def usage(argv): cmd = os.path.basename(argv[0]) print('usage: %s \n' '(example: "%s development.ini sugiana")' % (cmd, cmd)) sys.exit(1) def ask_password(name): msg1 = f'Masukkan kata kunci untuk {name}: ' msg2 = f'Ulangi kata kunci untuk {name}: ' while True: pass1 = getpass(msg1) if not pass1: continue pass2 = getpass(msg2) if pass1 == pass2: return pass1 print('Maaf, kata kunci tidak sama') def main(argv=sys.argv): if len(argv) != 3: usage(argv) config_uri = argv[1] username = argv[2] setup_logging(config_uri) settings = get_appsettings(config_uri) bootstrap(config_uri) # This make get_current_registry() works. q = DBSession.query(Group).filter_by(group_name='Admin') g_admin = q.first() q = DBSession.query(User).filter_by(user_name=username) user = q.first() password = ask_password(username) with transaction.manager: if not user: email = f'{username}@local' user = User(user_name=username, email=email) DBSession.add(user) DBSession.flush() ug = UserGroup(group_id=g_admin.id, user_id=user.id) DBSession.add(ug) UserService.set_password(user, password)