Commit 74494ea1956ed2b57f654fe229787622f97841ba
1 parent
ab5ec0ea
Exists in
master
and in
4 other branches
cli.create_db holds errors at existing db
Showing
1 changed file
with
23 additions
and
9 deletions
Show diff stats
app/commands/commands.py
@@ -3,7 +3,7 @@ import click | @@ -3,7 +3,7 @@ import click | ||
3 | import random | 3 | import random |
4 | 4 | ||
5 | from flask import current_app | 5 | from flask import current_app |
6 | -from sqlalchemy.exc import OperationalError | 6 | +from sqlalchemy.exc import OperationalError, IntegrityError |
7 | from sqlalchemy.sql import func | 7 | from sqlalchemy.sql import func |
8 | from sqlalchemy.ext.automap import automap_base | 8 | from sqlalchemy.ext.automap import automap_base |
9 | from sqlalchemy.orm import Session | 9 | from sqlalchemy.orm import Session |
@@ -17,9 +17,10 @@ from . import bp | @@ -17,9 +17,10 @@ from . import bp | ||
17 | 17 | ||
18 | @bp.cli.command("feed_from_lesia") | 18 | @bp.cli.command("feed_from_lesia") |
19 | def feed_from_lesia(): | 19 | def feed_from_lesia(): |
20 | - """ Feed db with agents from a lesia like mysql database. | 20 | + """ |
21 | + Feed db with agents from a lesia like mysql database. | ||
21 | 22 | ||
22 | - configure that database uri in the db_config.py file. | 23 | + configure the proper database uri in the db_config.py file. |
23 | """ | 24 | """ |
24 | Base = automap_base() | 25 | Base = automap_base() |
25 | 26 | ||
@@ -29,8 +30,7 @@ def feed_from_lesia(): | @@ -29,8 +30,7 @@ def feed_from_lesia(): | ||
29 | try: | 30 | try: |
30 | Base.prepare(engine, reflect=True) | 31 | Base.prepare(engine, reflect=True) |
31 | except OperationalError: | 32 | except OperationalError: |
32 | - # TODO: use logging facility instead | ||
33 | - print("Please, configure the mysql database (see db_config.py)") | 33 | + current_app.logger.error("Please, configure the mysql database (see db_config.py)") |
34 | sys.exit(-1) | 34 | sys.exit(-1) |
35 | 35 | ||
36 | # mapped classes are now created with names by default | 36 | # mapped classes are now created with names by default |
@@ -142,11 +142,25 @@ def user_delete(user_id): | @@ -142,11 +142,25 @@ def user_delete(user_id): | ||
142 | 142 | ||
143 | @bp.cli.command('create_db') | 143 | @bp.cli.command('create_db') |
144 | def create_db(): | 144 | def create_db(): |
145 | - """ Create the database structure.""" | 145 | + """ |
146 | + Create the database structure. Database should be empty. | ||
147 | + | ||
148 | + configure the proper database uri in the db_config.py file. | ||
149 | + """ | ||
146 | db.create_all() | 150 | db.create_all() |
147 | admin = User(email='admin@nowhere.org', name='admin', login='admin', password='admin', role='admin') | 151 | admin = User(email='admin@nowhere.org', name='admin', login='admin', password='admin', role='admin') |
148 | - db.session.add(admin) | ||
149 | - db.session.commit() | 152 | + sqlite_uri = db.engine.url.__str__() if 'sqlite' in db.engine.url.__str__() else None |
153 | + try: | ||
154 | + db.session.add(admin) | ||
155 | + db.session.commit() | ||
156 | + except IntegrityError: | ||
157 | + current_app.logger.error("User admin already exists, database should be empty at create") | ||
158 | + if sqlite_uri: | ||
159 | + current_app.logger.error("see "+sqlite_uri) | ||
160 | + sys.exit(-1) | ||
161 | + | ||
162 | + if sqlite_uri: | ||
163 | + current_app.logger.info("Created sqlite db: "+sqlite_uri) | ||
150 | 164 | ||
151 | 165 | ||
152 | @bp.cli.command('user_add') | 166 | @bp.cli.command('user_add') |
@@ -159,7 +173,7 @@ def user_add(email, name, login, password): | @@ -159,7 +173,7 @@ def user_add(email, name, login, password): | ||
159 | user = User(email=email, name=name, login=login, password=password) | 173 | user = User(email=email, name=name, login=login, password=password) |
160 | db.session.add(user) | 174 | db.session.add(user) |
161 | db.session.commit() | 175 | db.session.commit() |
162 | - print("added ", name) | 176 | + current_app.logger.info("added ", name) |
163 | 177 | ||
164 | 178 | ||
165 | @bp.cli.command('user_show_all') | 179 | @bp.cli.command('user_show_all') |