Files
@ 5b3568c99cc3
Branch filter:
Location: kallithea/kallithea/lib/paster_commands/setup_db.py
5b3568c99cc3
4.2 KiB
text/x-python
sqlalchemy: remove echo setting from .ini files and create_engine
Instead of 'echo' the normal logging configration should be used.
Follow the advice from
https://docs.sqlalchemy.org/en/rel_1_1/core/engines.html#configuring-logging
which says "when using Python logging, ensure all echo flags are set to False
at all times".
Instead of 'echo' the normal logging configration should be used.
Follow the advice from
https://docs.sqlalchemy.org/en/rel_1_1/core/engines.html#configuring-logging
which says "when using Python logging, ensure all echo flags are set to False
at all times".
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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | # -*- coding: utf-8 -*-
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
kallithea.lib.paster_commands.setup_db
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Databaset setup gearbox command for Kallithea
"""
import os
import sys
import paste.deploy
from kallithea.lib.db_manage import DbManage
from kallithea.lib.paster_commands.common import BasePasterCommand
from kallithea.model.meta import Session
# This is almost like SetupAppCommand ... but we have to pass options and it is
# thus simpler to drop websetup and reimplement everything
class Command(BasePasterCommand):
"""Kallithea: Configure the database specified in the .ini file
Setup Kallithea according to its configuration file. This is
the second part of a two-phase web application installation
process (the first phase is prepare-app). The setup process
consist of things like setting up databases and creating the admin user
"""
def get_description(self):
return self.__doc__.splitlines()[0]
requires_db_session = False # only available after this command has been run
def get_parser(self, prog_name):
parser = super(Command, self).get_parser(prog_name)
parser.add_argument('--user',
action='store',
dest='username',
default=None,
help='Admin Username')
parser.add_argument('--email',
action='store',
dest='email',
default=None,
help='Admin Email')
parser.add_argument('--password',
action='store',
dest='password',
default=None,
help='Admin password min 6 chars')
parser.add_argument('--repos',
action='store',
dest='repos_location',
default=None,
help='Absolute path to repositories location')
parser.add_argument('--force-yes',
action='store_true',
dest='force_ask',
default=None,
help='Force yes to every question')
parser.add_argument('--force-no',
action='store_false',
dest='force_ask',
default=None,
help='Force no to every question')
parser.add_argument('--public-access',
action='store_true',
dest='public_access',
default=None,
help='Enable public access on this installation (default)')
parser.add_argument('--no-public-access',
action='store_false',
dest='public_access',
default=None,
help='Disable public access on this installation ')
return parser
def take_action(self, opts):
path_to_ini_file = os.path.realpath(opts.config_file)
conf = paste.deploy.appconfig('config:' + path_to_ini_file)
dbconf = conf['sqlalchemy.url']
dbmanage = DbManage(dbconf=dbconf, root=conf['here'],
tests=False, cli_args=vars(opts))
dbmanage.create_tables(override=True)
opts = dbmanage.config_prompt(None)
dbmanage.create_settings(opts)
dbmanage.create_default_user()
dbmanage.admin_prompt()
dbmanage.create_permissions()
dbmanage.populate_default_permissions()
Session().commit()
|