diff --git a/lib/hawat/app.py b/lib/hawat/app.py index 3cb5f26f97462d02f07e9145bf92150ef1e792d4..bbb9dbca7253597bd856b042dcea8c2f74132001 100644 --- a/lib/hawat/app.py +++ b/lib/hawat/app.py @@ -31,7 +31,6 @@ from hawat.const import CFGKEY_MENTAT_CORE import hawat.base import hawat.config -import hawat.db import hawat.events diff --git a/lib/hawat/base.py b/lib/hawat/base.py index f261a7f0232bf53e4cfc8ded64ec0e61fc6492a1..9cce3da13d691643c5a04bc7152f36e3fba97faa 100644 --- a/lib/hawat/base.py +++ b/lib/hawat/base.py @@ -31,7 +31,7 @@ import vial.app import vial.const import vial.menu import vial.errors -import hawat.db +import hawat.events import mentat import mentat._buildmeta diff --git a/lib/hawat/blueprints/auth_api/__init__.py b/lib/hawat/blueprints/auth_api/__init__.py index 713faaec794df6ce1b31cd739b17a0972851faed..70dab603781bce6f02602c1bf063d673181eb84b 100644 --- a/lib/hawat/blueprints/auth_api/__init__.py +++ b/lib/hawat/blueprints/auth_api/__init__.py @@ -75,12 +75,11 @@ from mentat.datatype.sqldb import UserModel, ItemChangeLogModel import vial.const import vial.forms +import vial.db from vial.app import VialBlueprint from vial.view import ItemChangeView from vial.view.mixin import HTMLMixin, SQLAlchemyMixin -import hawat.db - BLUEPRINT_NAME = 'auth_api' """Name of the blueprint as module global constant.""" @@ -301,7 +300,7 @@ class APIAuthBlueprint(VialBlueprint): # Now login the user with provided API key. if api_key: - dbsess = hawat.db.db_get().session + dbsess = vial.db.db_get().session try: user = dbsess.query(UserModel).filter(UserModel.apikey == api_key).one() if user: diff --git a/lib/hawat/blueprints/auth_dev/__init__.py b/lib/hawat/blueprints/auth_dev/__init__.py index 717456d8717e239bab3bd6cba89b7565f1b8e35a..7c653f3319a1a318f22bbb471a6e958f7c30d242 100644 --- a/lib/hawat/blueprints/auth_dev/__init__.py +++ b/lib/hawat/blueprints/auth_dev/__init__.py @@ -65,11 +65,11 @@ from mentat.datatype.sqldb import UserModel, ItemChangeLogModel import vial.const import vial.forms +import vial.db from vial.app import VialBlueprint from vial.view import RenderableView, SimpleView from vial.view.mixin import HTMLMixin, SQLAlchemyMixin -import hawat.db from hawat.blueprints.auth_dev.forms import LoginForm, RegisterUserAccountForm @@ -111,7 +111,7 @@ class LoginView(HTMLMixin, SQLAlchemyMixin, SimpleView): form = LoginForm() if form.validate_on_submit(): - dbsess = hawat.db.db_get().session + dbsess = vial.db.db_get().session try: user = dbsess.query(UserModel).filter(UserModel.login == form.login.data).one() diff --git a/lib/hawat/blueprints/auth_dev/forms.py b/lib/hawat/blueprints/auth_dev/forms.py index cf6ffc9f9cc8988720ede4d33d7e83d1dc06c35d..fffb9a754e50cfbaa7a3c2d8fcd0090b4ad9f32f 100644 --- a/lib/hawat/blueprints/auth_dev/forms.py +++ b/lib/hawat/blueprints/auth_dev/forms.py @@ -31,8 +31,8 @@ from flask_babel import lazy_gettext from mentat.datatype.sqldb import UserModel, GroupModel import vial.forms +import vial.db -import hawat.db from hawat.blueprints.users.forms import check_id_existence, BaseUserAccountForm @@ -40,7 +40,7 @@ def get_available_groups(): """ Query the database for list of all available groups. """ - return hawat.db.db_query(GroupModel).order_by(GroupModel.name).all() + return vial.db.db_query(GroupModel).order_by(GroupModel.name).all() class LoginForm(flask_wtf.FlaskForm): @@ -72,7 +72,7 @@ class LoginForm(flask_wtf.FlaskForm): Load list of all user accounts and populate the ``choices`` attribute of the ``login`` selectbox. """ - dbsess = hawat.db.db_get().session + dbsess = vial.db.db_get().session users = dbsess.query(UserModel).order_by(UserModel.login).all() choices = [] diff --git a/lib/hawat/blueprints/auth_env/__init__.py b/lib/hawat/blueprints/auth_env/__init__.py index aefc2700097c94e2235fbebd221e00b4b88093c2..774e921c8536ba5eee24a28dfdd42b304cdcc51c 100644 --- a/lib/hawat/blueprints/auth_env/__init__.py +++ b/lib/hawat/blueprints/auth_env/__init__.py @@ -96,7 +96,7 @@ from flask_babel import gettext, lazy_gettext, force_locale # from mentat.datatype.sqldb import UserModel, ItemChangeLogModel -import hawat.db +import vial.db import vial.const import vial.forms from vial.app import VialBlueprint @@ -169,7 +169,7 @@ class LoginView(HTMLMixin, RenderableView): ) self.abort(403) - dbsess = hawat.db.db_get().session + dbsess = vial.db.db_get().session try: user = dbsess.query(UserModel).filter(UserModel.login == user_login).one() diff --git a/lib/hawat/blueprints/auth_env/forms.py b/lib/hawat/blueprints/auth_env/forms.py index ec7d80a345055042ca37f710871c6031f986c9e8..7c3eba0a151acdd8daf197cc38677eb6dc2477e2 100644 --- a/lib/hawat/blueprints/auth_env/forms.py +++ b/lib/hawat/blueprints/auth_env/forms.py @@ -28,7 +28,7 @@ from flask_babel import lazy_gettext # # Custom modules. # -import hawat.db +import vial.db from hawat.blueprints.users.forms import BaseUserAccountForm from mentat.datatype.sqldb import GroupModel @@ -37,7 +37,7 @@ def get_available_groups(): """ Query the database for list of all available groups. """ - return hawat.db.db_query(GroupModel).order_by(GroupModel.name).all() + return vial.db.db_query(GroupModel).order_by(GroupModel.name).all() class RegisterUserAccountForm(BaseUserAccountForm): diff --git a/lib/hawat/blueprints/changelogs/forms.py b/lib/hawat/blueprints/changelogs/forms.py index 3bd0c3e132c09d6d1cfbc8ac20e5d7a9bc81d8da..7f3da8abc248ec879a43524f3730ce6f0de742e2 100644 --- a/lib/hawat/blueprints/changelogs/forms.py +++ b/lib/hawat/blueprints/changelogs/forms.py @@ -25,8 +25,7 @@ from flask_babel import lazy_gettext import vial.const import vial.forms - -import hawat.db +import vial.db from mentat.datatype.sqldb import UserModel, ItemChangeLogModel @@ -35,7 +34,7 @@ def get_available_authors(): """ Query the database for list of changelog authors. """ - return hawat.db.db_query(UserModel).\ + return vial.db.db_query(UserModel).\ order_by(UserModel.fullname).\ all() @@ -43,7 +42,7 @@ def get_item_operation_choices(): """ Return select choices for item changelog operations. """ - operations_list = hawat.db.db_query(ItemChangeLogModel).\ + operations_list = vial.db.db_query(ItemChangeLogModel).\ distinct(ItemChangeLogModel.operation).\ all() return list( @@ -57,7 +56,7 @@ def get_item_model_choices(): """ Return select choices for item changelog item models. """ - models_list = hawat.db.db_query(ItemChangeLogModel).\ + models_list = vial.db.db_query(ItemChangeLogModel).\ distinct(ItemChangeLogModel.model).\ all() return list( diff --git a/lib/hawat/blueprints/dbstatus/__init__.py b/lib/hawat/blueprints/dbstatus/__init__.py index c38c08ab598b45828877532b6a77724cebd76511..e72dd35d05b3c62b796e80929cddcaa41c3956e5 100644 --- a/lib/hawat/blueprints/dbstatus/__init__.py +++ b/lib/hawat/blueprints/dbstatus/__init__.py @@ -130,7 +130,7 @@ class ViewView(HTMLMixin, PsycopgMixin, SimpleView): record['user_id'] = user_id record['query_id'] = query_id if user_id not in cache: - cache[user_id] = hawat.db.db_get().session.query(UserModel).filter(UserModel.id == int(user_id)).one_or_none() + cache[user_id] = vial.db.db_get().session.query(UserModel).filter(UserModel.id == int(user_id)).one_or_none() record['user'] = cache[user_id] return result @@ -212,7 +212,7 @@ class MyQueriesView(HTMLMixin, PsycopgMixin, SimpleView): record['user_id'] = user_id record['query_id'] = query_id if user_id not in cache: - cache[user_id] = hawat.db.db_get().session.query(UserModel).filter(UserModel.id == int(user_id)).one_or_none() + cache[user_id] = vial.db.db_get().session.query(UserModel).filter(UserModel.id == int(user_id)).one_or_none() record['user'] = cache[user_id] return result diff --git a/lib/hawat/blueprints/dnsr/__init__.py b/lib/hawat/blueprints/dnsr/__init__.py index baf4a10d55831b6dd4ea618305878218755ec5e8..dd263e694446b6d67737171a4b3fbd6be819673c 100644 --- a/lib/hawat/blueprints/dnsr/__init__.py +++ b/lib/hawat/blueprints/dnsr/__init__.py @@ -60,13 +60,14 @@ from flask_babel import lazy_gettext import mentat.services.dnsr from mentat.const import tr_ -import hawat.db +import vial.db import vial.const import vial.acl from vial.app import VialBlueprint from vial.view import RenderableView from vial.view.mixin import HTMLMixin, AJAXMixin, SnippetMixin from vial.utils import URLParamsBuilder +import hawat.const from hawat.blueprints.dnsr.forms import DnsrSearchForm diff --git a/lib/hawat/blueprints/events/forms.py b/lib/hawat/blueprints/events/forms.py index 998f1b1ba722054e7f606578f3c3b47b15b6ce92..ce111a432fc71da5322f28bd62eb524cda936989 100644 --- a/lib/hawat/blueprints/events/forms.py +++ b/lib/hawat/blueprints/events/forms.py @@ -26,8 +26,7 @@ from flask_babel import lazy_gettext import vial.const import vial.forms - -import hawat.db +import vial.db from mentat.datatype.sqldb import GroupModel @@ -36,7 +35,7 @@ def get_available_groups(): """ Query the database for list of all available groups. """ - return hawat.db.db_query(GroupModel).order_by(GroupModel.name).all() + return vial.db.db_query(GroupModel).order_by(GroupModel.name).all() class SimpleEventSearchForm(vial.forms.BaseSearchForm): diff --git a/lib/hawat/blueprints/filters/__init__.py b/lib/hawat/blueprints/filters/__init__.py index 90cd4c9adace1fe76c3a64c9024b275ec3e0c8af..c49fb365d4a6dc630400fc408c9f91db0542055e 100644 --- a/lib/hawat/blueprints/filters/__init__.py +++ b/lib/hawat/blueprints/filters/__init__.py @@ -53,11 +53,11 @@ from mentat.datatype.sqldb import FilterModel, GroupModel, ItemChangeLogModel from mentat.idea.internal import Idea, IDEAFilterCompiler import vial.const -import hawat.db -import hawat.events +import vial.db from vial.app import VialBlueprint from vial.view import RenderableView, ItemListView, ItemShowView, ItemCreateView, ItemCreateForView, ItemUpdateView, ItemDeleteView, ItemEnableView, ItemDisableView from vial.view.mixin import HTMLMixin, SQLAlchemyMixin +import hawat.events from hawat.blueprints.filters.forms import BaseFilterForm, AdminFilterForm, PlaygroundFilterForm diff --git a/lib/hawat/blueprints/filters/forms.py b/lib/hawat/blueprints/filters/forms.py index 18af85cf1f4e6599a533d0860be6537c86444bee..20e6a8e2a204c54de7320b4f07e7d7be45362ba9 100644 --- a/lib/hawat/blueprints/filters/forms.py +++ b/lib/hawat/blueprints/filters/forms.py @@ -31,7 +31,7 @@ from flask_babel import gettext, lazy_gettext # # Custom modules. # -import hawat.db +import vial.db import vial.forms from mentat.datatype.sqldb import GroupModel from mentat.const import REPORTING_FILTER_BASIC, REPORTING_FILTER_ADVANCED @@ -42,7 +42,7 @@ def get_available_groups(): """ Query the database for list of all available groups. """ - return hawat.db.db_query(GroupModel).order_by(GroupModel.name).all() + return vial.db.db_query(GroupModel).order_by(GroupModel.name).all() def check_filter(form, field): # pylint: disable=locally-disabled,unused-argument diff --git a/lib/hawat/blueprints/geoip/__init__.py b/lib/hawat/blueprints/geoip/__init__.py index 72bd723bf9cb3ce59da25708082fe33af08c6b80..650d095a2fa4f3485272e9f55ebd6dc48b524db8 100644 --- a/lib/hawat/blueprints/geoip/__init__.py +++ b/lib/hawat/blueprints/geoip/__init__.py @@ -63,13 +63,14 @@ from flask_babel import lazy_gettext import mentat.services.geoip from mentat.const import tr_ -import hawat.db +import vial.db import vial.const import vial.acl from vial.app import VialBlueprint from vial.view import RenderableView from vial.view.mixin import HTMLMixin, AJAXMixin, SnippetMixin from vial.utils import URLParamsBuilder +import hawat.const from hawat.blueprints.geoip.forms import GeoipSearchForm diff --git a/lib/hawat/blueprints/groups/__init__.py b/lib/hawat/blueprints/groups/__init__.py index 56d4a58c903359a770448a011d0c868323c30920..e585532198716eb41cdfd946fcc7ea9c49e20f83 100644 --- a/lib/hawat/blueprints/groups/__init__.py +++ b/lib/hawat/blueprints/groups/__init__.py @@ -45,13 +45,13 @@ from mentat.datatype.sqldb import UserModel, GroupModel, SettingsReportingModel, FilterModel, NetworkModel, ItemChangeLogModel from mentat.const import tr_ -import hawat.db import vial.acl import vial.menu from vial.app import VialBlueprint from vial.view import ItemListView, ItemShowView, ItemCreateView, ItemUpdateView, ItemDeleteView, ItemEnableView, ItemDisableView, ItemObjectRelationView from vial.view.mixin import HTMLMixin, SQLAlchemyMixin from vial.utils import URLParamsBuilder +import hawat.const from hawat.blueprints.groups.forms import AdminCreateGroupForm, AdminUpdateGroupForm,\ UpdateGroupForm diff --git a/lib/hawat/blueprints/groups/forms.py b/lib/hawat/blueprints/groups/forms.py index f3436f6a86de005479f8be812c9890a9b2110a51..de85b3e546eb358a2abf8862adceacd57c85f87c 100644 --- a/lib/hawat/blueprints/groups/forms.py +++ b/lib/hawat/blueprints/groups/forms.py @@ -29,7 +29,7 @@ from flask_babel import gettext, lazy_gettext # # Custom modules. # -import hawat.db +import vial.db import vial.forms from mentat.datatype.sqldb import GroupModel, UserModel @@ -39,7 +39,7 @@ def check_name_existence(form, field): # pylint: disable=locally-disabled,unuse Callback for validating user logins during account create action. """ try: - hawat.db.db_get().session.query(GroupModel).\ + vial.db.db_get().session.query(GroupModel).\ filter(GroupModel.name == field.data).\ one() except sqlalchemy.orm.exc.NoResultFound: @@ -53,7 +53,7 @@ def check_name_uniqueness(form, field): """ Callback for validating user logins during account update action. """ - item = hawat.db.db_get().session.query(GroupModel).\ + item = vial.db.db_get().session.query(GroupModel).\ filter(GroupModel.name == field.data).\ filter(GroupModel.id != form.db_item_id).\ all() @@ -74,7 +74,7 @@ def get_available_users(): """ Query the database for list of all available user accounts. """ - return hawat.db.db_query(UserModel).order_by(UserModel.fullname).all() + return vial.db.db_query(UserModel).order_by(UserModel.fullname).all() def format_select_option_label_user(item): @@ -88,7 +88,7 @@ def get_available_groups(): """ Query the database for list of all available groups. """ - return hawat.db.db_query(GroupModel).order_by(GroupModel.name).all() + return vial.db.db_query(GroupModel).order_by(GroupModel.name).all() class BaseGroupForm(vial.forms.BaseItemForm): diff --git a/lib/hawat/blueprints/nerd/__init__.py b/lib/hawat/blueprints/nerd/__init__.py index 843c80df19702638ab6c7313de8b3cfa6362e726..da747f07592bc4822c13b657e5f979fc3f1cdd18 100644 --- a/lib/hawat/blueprints/nerd/__init__.py +++ b/lib/hawat/blueprints/nerd/__init__.py @@ -61,7 +61,7 @@ from flask_babel import lazy_gettext import mentat.services.nerd from mentat.const import tr_ -import hawat.db +import vial.db import vial.const import vial.acl from vial.app import VialBlueprint diff --git a/lib/hawat/blueprints/networks/forms.py b/lib/hawat/blueprints/networks/forms.py index d3d7cafc4365846f1e5c45da6af12aabe5db2e6d..0221868fc27d11a5dcbc7530cef1b20b7694993e 100644 --- a/lib/hawat/blueprints/networks/forms.py +++ b/lib/hawat/blueprints/networks/forms.py @@ -30,8 +30,7 @@ from flask_babel import lazy_gettext # import vial.const import vial.forms - -import hawat.db +import vial.db from mentat.datatype.sqldb import GroupModel @@ -40,7 +39,7 @@ def get_available_groups(): """ Query the database for list of all available groups. """ - return hawat.db.db_query(GroupModel).order_by(GroupModel.name).all() + return vial.db.db_query(GroupModel).order_by(GroupModel.name).all() class BaseNetworkForm(vial.forms.BaseItemForm): diff --git a/lib/hawat/blueprints/pdnsr/__init__.py b/lib/hawat/blueprints/pdnsr/__init__.py index 5ff3c4d0b8d388a04b344a4e26b218c06b82cd1e..317906751ce0b320a3027cffa27967cb3b043d29 100644 --- a/lib/hawat/blueprints/pdnsr/__init__.py +++ b/lib/hawat/blueprints/pdnsr/__init__.py @@ -61,7 +61,7 @@ from flask_babel import lazy_gettext import mentat.services.pdnsr from mentat.const import tr_ -import hawat.db +import vial.db import vial.const import vial.acl from vial.app import VialBlueprint diff --git a/lib/hawat/blueprints/reports/forms.py b/lib/hawat/blueprints/reports/forms.py index 2b31c12fa897feeaa822e625d14eab50d68d2d26..2c085e40084b248415f3688c94bac9805e2e96b9 100644 --- a/lib/hawat/blueprints/reports/forms.py +++ b/lib/hawat/blueprints/reports/forms.py @@ -26,8 +26,7 @@ from flask_babel import lazy_gettext import vial.const import vial.forms - -import hawat.db +import vial.db import mentat.const from mentat.datatype.sqldb import UserModel, GroupModel @@ -39,11 +38,11 @@ def get_available_groups(): """ # In case current user is administrator provide list of all groups. if flask_login.current_user.has_role(vial.const.ROLE_ADMIN): - return hawat.db.db_query(GroupModel).\ + return vial.db.db_query(GroupModel).\ order_by(GroupModel.name).\ all() # Otherwise provide only list of groups current user is member of. - return hawat.db.db_query(GroupModel).\ + return vial.db.db_query(GroupModel).\ filter(GroupModel.members.any(UserModel.id == flask_login.current_user.id)).\ order_by(GroupModel.name).\ all() diff --git a/lib/hawat/blueprints/settings_reporting/forms.py b/lib/hawat/blueprints/settings_reporting/forms.py index 12b5dc9e2eb47f5d835ae4410dc8753d25e6a09d..a68003fc1e3c3003c81dfde6309e76dc0e375d98 100644 --- a/lib/hawat/blueprints/settings_reporting/forms.py +++ b/lib/hawat/blueprints/settings_reporting/forms.py @@ -33,8 +33,7 @@ from flask_babel import gettext, lazy_gettext # import vial.const import vial.forms - -import hawat.db +import vial.db import mentat.const from mentat.datatype.sqldb import GroupModel @@ -47,7 +46,7 @@ def get_available_groups(): """ Query the database for list of all available groups. """ - return hawat.db.db_query(GroupModel).order_by(GroupModel.name).all() + return vial.db.db_query(GroupModel).order_by(GroupModel.name).all() def get_available_locales(): diff --git a/lib/hawat/blueprints/timeline/forms.py b/lib/hawat/blueprints/timeline/forms.py index aecdfe1a4f8facff0688ecda1efe054f0b8a0480..d23ff041a662ba00e8414144ed464cb479259d30 100644 --- a/lib/hawat/blueprints/timeline/forms.py +++ b/lib/hawat/blueprints/timeline/forms.py @@ -26,7 +26,7 @@ from flask_babel import lazy_gettext import vial.const import vial.forms -import hawat.db +import vial.db from mentat.datatype.sqldb import GroupModel @@ -34,7 +34,7 @@ def get_available_groups(): """ Query the database for list of all available groups. """ - return hawat.db.db_query(GroupModel).order_by(GroupModel.name).all() + return vial.db.db_query(GroupModel).order_by(GroupModel.name).all() class SimpleTimelineSearchForm(flask_wtf.FlaskForm): diff --git a/lib/hawat/blueprints/users/forms.py b/lib/hawat/blueprints/users/forms.py index 73d055a87efd2f32664bf0b826fc79fca8a87cc2..922f029cca4f6318fa10f4e9f8ed3cd88fc84101 100644 --- a/lib/hawat/blueprints/users/forms.py +++ b/lib/hawat/blueprints/users/forms.py @@ -30,7 +30,7 @@ from flask_babel import gettext, lazy_gettext # # Custom modules. # -import hawat.db +import vial.db import vial.forms from mentat.datatype.sqldb import UserModel, GroupModel @@ -40,7 +40,7 @@ def check_id_existence(form, field): Callback for validating user logins during account create action. """ try: - hawat.db.db_get().session.query(UserModel).\ + vial.db.db_get().session.query(UserModel).\ filter(UserModel.login == field.data).\ one() except sqlalchemy.orm.exc.NoResultFound: @@ -54,7 +54,7 @@ def check_id_uniqueness(form, field): """ Callback for validating user logins during account update action. """ - user = hawat.db.db_get().session.query(UserModel).\ + user = vial.db.db_get().session.query(UserModel).\ filter(UserModel.login == field.data).\ filter(UserModel.id != form.db_item_id).\ all() @@ -67,7 +67,7 @@ def get_available_groups(): """ Query the database for list of all available groups. """ - return hawat.db.db_query(GroupModel).order_by(GroupModel.name).all() + return vial.db.db_query(GroupModel).order_by(GroupModel.name).all() class BaseUserAccountForm(vial.forms.BaseItemForm): diff --git a/lib/hawat/blueprints/whois/__init__.py b/lib/hawat/blueprints/whois/__init__.py index 46f38bbaf43c9a1fe09d742b342edc8fafb95e6d..7d43ba843078c9beb8b10a16e5ba129a9b200dfe 100644 --- a/lib/hawat/blueprints/whois/__init__.py +++ b/lib/hawat/blueprints/whois/__init__.py @@ -69,7 +69,7 @@ import mentat.services.whois from mentat.const import tr_ import hawat.const -import hawat.db +import vial.db import vial.const import vial.acl from vial.app import VialBlueprint diff --git a/lib/hawat/db.py b/lib/hawat/db.py deleted file mode 100644 index aa8f0f165658e48857003f8f88aa695b57913c96..0000000000000000000000000000000000000000 --- a/lib/hawat/db.py +++ /dev/null @@ -1,114 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -#------------------------------------------------------------------------------- -# This file is part of Mentat system (https://mentat.cesnet.cz/). -# -# Copyright (C) since 2011 CESNET, z.s.p.o (http://www.ces.net/) -# Use of this source is governed by the MIT license, see LICENSE file. -#------------------------------------------------------------------------------- - - -""" -This module contains very thin database abstraction layer and access functions for -Hawat. It is a wrapper around `SQLAlchemy <http://www.sqlalchemy.org/>`__ library. -""" - - -__author__ = "Jan Mach <jan.mach@cesnet.cz>" -__credits__ = "Pavel Kácha <pavel.kacha@cesnet.cz>, Andrea KropáÄová <andrea.kropacova@cesnet.cz>" - - -# -# Flask related modules. -# -import flask_sqlalchemy - -# -# Custom modules. -# -import mentat.datatype.sqldb -import mentat.services.sqlstorage -from mentat.const import CKEY_CORE_DATABASE, CKEY_CORE_DATABASE_SQLSTORAGE -from hawat.const import CFGKEY_MENTAT_CORE - - -_DB = None - - -def db_settings(app): - """ - Return database settings from Mentat core configurations. - - :return: Database settings. - :rtype: dict - """ - return app.config[CFGKEY_MENTAT_CORE][CKEY_CORE_DATABASE][CKEY_CORE_DATABASE_SQLSTORAGE] - - -def db_get(): - """ - Opens a new database connection if there is none yet for the - current application context. - - :return: Database storage handler. - :rtype: flask_sqlalchemy.SQLAlchemy - """ - global _DB # pylint: disable=locally-disabled,global-statement - if not _DB: - _DB = flask_sqlalchemy.SQLAlchemy( - metadata = mentat.datatype.sqldb.MODEL.metadata, - model_class = mentat.datatype.sqldb.MODEL, - query_class = mentat.services.sqlstorage.RetryingQuery - ) - mentat.services.sqlstorage.set_manager(StorageServiceManager()) - - return _DB - - -def db_session(): - """ - Convenience method. - """ - return db_get().session - - -def db_query(dbmodel): - """ - Convenience method. - """ - return db_get().session.query(dbmodel) - - -class StorageService: # pylint: disable=locally-disabled,too-few-public-methods - """ - This is a thin proxy class, that can be used in place of :py:class:`mentat.services.sqlstorage.StorageService`. - This is necessary for certain services like :py:mod:`mentat.services.whois`, that require - some access to database storage service and are hardcoded to use :py:class:`mentat.services.sqlstorage.StorageService`. - This is necessary when using the services from Flask framework, because there - is another storage service management feature in place using the py:mod:`flask_sqlalchemy` - module. - """ - @property - def session(self): - """ - Thin proxy property for retrieving reference to current database session. - """ - return db_session() - - -class StorageServiceManager: # pylint: disable=locally-disabled,too-few-public-methods - """ - This is a thin proxy class, that can be used in place of :py:class:`mentat.services.sqlstorage.StorageServiceManager`. - This is necessary for certain services like :py:mod:`mentat.services.whois`, that require - some access to database storage service manager and are hardcoded to use :py:class:`mentat.services.sqlstorage.StorageServiceManager`. - This is necessary when using the services from Flask framework, because there - is another storage service management feature in place using the py:mod:`flask_sqlalchemy` - module. - """ - @staticmethod - def service(): - """ - Thin proxy property for retrieving reference to current database storage - service. - """ - return StorageService()