# HG changeset patch # User Mads Kiilerich # Date 2020-10-10 19:59:54 # Node ID 30aac95e7fd556df71eb1fb38927a915afd9260f # Parent 3ccb302bb55156e13a536590eb7d415135549af5 db_manage: clarify that the purpose of admin_prompt is to create the admin user Use cli_args to pass the test admin user information so it can be created the usual way. This removes an unfortunate lib dependency on tests. diff --git a/kallithea/bin/kallithea_cli_db.py b/kallithea/bin/kallithea_cli_db.py --- a/kallithea/bin/kallithea_cli_db.py +++ b/kallithea/bin/kallithea_cli_db.py @@ -64,7 +64,7 @@ def db_create(user, password, email, rep repo_root_path = dbmanage.prompt_repo_root_path(None) dbmanage.create_settings(repo_root_path) dbmanage.create_default_user() - dbmanage.admin_prompt() + dbmanage.create_admin_user() dbmanage.create_permissions() dbmanage.populate_default_permissions() Session().commit() diff --git a/kallithea/lib/db_manage.py b/kallithea/lib/db_manage.py --- a/kallithea/lib/db_manage.py +++ b/kallithea/lib/db_manage.py @@ -26,6 +26,7 @@ Original author and date, and relevant c :license: GPLv3, see LICENSE.md for more details. """ +import getpass import logging import os import sys @@ -128,53 +129,36 @@ class DbManage(object): log.info('Created tables for %s', self.dbname) - def admin_prompt(self, second=False): - if not self.tests: - import getpass + def create_admin_user(self): + username = self.cli_args.get('username') + password = self.cli_args.get('password') + email = self.cli_args.get('email') - username = self.cli_args.get('username') - password = self.cli_args.get('password') - email = self.cli_args.get('email') + def get_password(): + password = getpass.getpass('Specify admin password ' + '(min 6 chars):') + confirm = getpass.getpass('Confirm password:') - def get_password(): - password = getpass.getpass('Specify admin password ' - '(min 6 chars):') - confirm = getpass.getpass('Confirm password:') + if password != confirm: + log.error('passwords mismatch') + return False + if len(password) < 6: + log.error('password is to short use at least 6 characters') + return False - if password != confirm: - log.error('passwords mismatch') - return False - if len(password) < 6: - log.error('password is to short use at least 6 characters') - return False - - return password - if username is None: - username = input('Specify admin username:') - if password is None: + return password + if username is None: + username = input('Specify admin username:') + if password is None: + password = get_password() + if not password: + # second try password = get_password() if not password: - # second try - password = get_password() - if not password: - sys.exit() - if email is None: - email = input('Specify admin email:') - self.create_user(username, password, email, True) - else: - log.info('creating admin and regular test users') - from kallithea.tests.base import (TEST_USER_ADMIN_EMAIL, TEST_USER_ADMIN_LOGIN, TEST_USER_ADMIN_PASS, TEST_USER_REGULAR2_EMAIL, - TEST_USER_REGULAR2_LOGIN, TEST_USER_REGULAR2_PASS, TEST_USER_REGULAR_EMAIL, TEST_USER_REGULAR_LOGIN, - TEST_USER_REGULAR_PASS) - - self.create_user(TEST_USER_ADMIN_LOGIN, TEST_USER_ADMIN_PASS, - TEST_USER_ADMIN_EMAIL, True) - - self.create_user(TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS, - TEST_USER_REGULAR_EMAIL, False) - - self.create_user(TEST_USER_REGULAR2_LOGIN, TEST_USER_REGULAR2_PASS, - TEST_USER_REGULAR2_EMAIL, False) + sys.exit() + if email is None: + email = input('Specify admin email:') + self.create_user(username, password, email, True) def create_auth_plugin_options(self, skip_existing=False): """ diff --git a/kallithea/tests/fixture.py b/kallithea/tests/fixture.py --- a/kallithea/tests/fixture.py +++ b/kallithea/tests/fixture.py @@ -41,8 +41,9 @@ from kallithea.model.repo_group import R from kallithea.model.scm import ScmModel from kallithea.model.user import UserModel from kallithea.model.user_group import UserGroupModel -from kallithea.tests.base import (GIT_REPO, HG_REPO, IP_ADDR, TEST_USER_ADMIN_EMAIL, TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN, TESTS_TMP_PATH, - invalidate_all_caches) +from kallithea.tests.base import (GIT_REPO, HG_REPO, IP_ADDR, TEST_USER_ADMIN_EMAIL, TEST_USER_ADMIN_LOGIN, TEST_USER_ADMIN_PASS, TEST_USER_REGULAR2_EMAIL, + TEST_USER_REGULAR2_LOGIN, TEST_USER_REGULAR2_PASS, TEST_USER_REGULAR_EMAIL, TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS, + TESTS_TMP_PATH, invalidate_all_caches) log = logging.getLogger(__name__) @@ -365,12 +366,19 @@ def create_test_env(repos_test_path, con os.makedirs(repos_test_path) dbmanage = DbManage(dbconf=dbconf, root=config['here'], - tests=True) + tests=True, + cli_args={ + 'username': TEST_USER_ADMIN_LOGIN, + 'password': TEST_USER_ADMIN_PASS, + 'email': TEST_USER_ADMIN_EMAIL, + }) dbmanage.create_tables(reuse_database=reuse_database) # for tests dynamically set new root paths based on generated content dbmanage.create_settings(dbmanage.prompt_repo_root_path(repos_test_path)) dbmanage.create_default_user() - dbmanage.admin_prompt() + dbmanage.create_admin_user() + dbmanage.create_user(TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS, TEST_USER_REGULAR_EMAIL, False) + dbmanage.create_user(TEST_USER_REGULAR2_LOGIN, TEST_USER_REGULAR2_PASS, TEST_USER_REGULAR2_EMAIL, False) dbmanage.create_permissions() dbmanage.populate_default_permissions() Session().commit()