From c1ca993e004bb87dd567caf11e22af915355d1f6 Mon Sep 17 00:00:00 2001 From: hv7214 Date: Sat, 8 Feb 2020 00:23:57 +0530 Subject: [PATCH 1/2] feat(components/core): db config system --- .gitignore | 4 ++-- components/core/DBCon.py | 4 +++- components/core/db.config.json | 6 ++++++ components/core/setup.py | 18 ++++++++++++++++++ 4 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 components/core/db.config.json diff --git a/.gitignore b/.gitignore index 5ad5b805..99aa59f0 100644 --- a/.gitignore +++ b/.gitignore @@ -70,9 +70,9 @@ typings/ # Yarn Integrity file .yarn-integrity -# dotenv environment variables file +# dotenv environment variables and user config file .env - +user.db.config.json ### Python ### # Byte-compiled / optimized / DLL files diff --git a/components/core/DBCon.py b/components/core/DBCon.py index 123340af..28abe24d 100644 --- a/components/core/DBCon.py +++ b/components/core/DBCon.py @@ -1,13 +1,15 @@ import MySQLdb +from ConfReader import get_conf_reader import os _db=None +dbConf = get_conf_reader("db.config.json") def get_db_con () : global _db if _db==None: try: - _db=MySQLdb.connect("db", os.environ.get('BASSA_DB_USERNAME'), os.environ.get('BASSA_DB_PASSWORD'), os.environ.get('BASSA_DB_NAME')) + _db=MySQLdb.connect(host=dbConf["BASSA_HOST"], user=dbConf["BASSA_DB_USERNAME"], passwd=dbConf["BASSA_DB_PASSWORD"],db=dbConf["BASSA_DB_NAME"]) return _db except: return None diff --git a/components/core/db.config.json b/components/core/db.config.json new file mode 100644 index 00000000..bc3bb86a --- /dev/null +++ b/components/core/db.config.json @@ -0,0 +1,6 @@ +{ + "BASSA_DB_NAME": "Bassa", + "BASSA_HOST": "localhost", + "BASSA_DB_USERNAME": "root", + "BASSA_DB_PASSWORD": "" +} diff --git a/components/core/setup.py b/components/core/setup.py index 67bdc008..82fd58b0 100644 --- a/components/core/setup.py +++ b/components/core/setup.py @@ -2,6 +2,7 @@ import shutil import inspect import platform +import json from setuptools import setup import setuptools try: @@ -11,6 +12,9 @@ EMAIL_CONF = 'email.conf' DL_CONF = 'dl.conf' +DB_CONF = 'db.config.json' +USER_DB_CONF = 'user.db.config.json' + LINUX_CONFDIR = os.path.expanduser('~') + '/.config/bassa/' WIN_CONFDIR = os.path.expanduser('~') + '/%app_data%/bassa/' OSX_CONFDIR = os.path.expanduser('~') + '/.config/bassa/' @@ -38,8 +42,22 @@ def read(file_name): email_conf_location = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) + "/" + EMAIL_CONF dl_conf_location = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) + "/" + DL_CONF +db_conf_location = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) + "/" + DB_CONF +user_db_conf_location = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) + "/" + USER_DB_CONF shutil.copyfile(email_conf_location, configdir + EMAIL_CONF) shutil.copyfile(dl_conf_location, configdir + DL_CONF) +shutil.copyfile(db_conf_location, configdir + DB_CONF) +## merge db configs if user config exist +if os.path.exists(user_db_conf_location): + # userDbConf, defaultDbConf + with open(user_db_conf_location) as user_db_conf: + userDbConf = json.load(user_db_conf) + with open(configdir + DB_CONF) as default_db_conf: + defaultDbConf = json.load(default_db_conf) + for key in userDbConf: + defaultDbConf[key] = userDbConf[key] + with open(configdir + DB_CONF, 'w') as default_db_conf: + json.dump(defaultDbConf, default_db_conf, indent=4) ###/ Set configs ### From f9708619d4ba43f8ecc711970da08eb8f1f5380c Mon Sep 17 00:00:00 2001 From: hv7214 Date: Sat, 8 Feb 2020 00:40:40 +0530 Subject: [PATCH 2/2] doc(wiki/*): added db config system guide Note: This should be appended to wiki --- ADD_TO_WIKI.md | 12 ++++++++++++ components/core/DBCon.py | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 ADD_TO_WIKI.md diff --git a/ADD_TO_WIKI.md b/ADD_TO_WIKI.md new file mode 100644 index 00000000..3326621b --- /dev/null +++ b/ADD_TO_WIKI.md @@ -0,0 +1,12 @@ +There is already `db.config.json` file at `/components/core` setting up default values for database connection. If you want to override any of the key, just make a `user.db.config.json` file in directory same as of `db.config.json` with keys you want to override.
+ +Template for `user.db.config.json` file: +```json +{ + "BASSA_DB_NAME": "Bassa", + "BASSA_HOST": "localhost", + "BASSA_DB_USERNAME": "root", + "BASSA_DB_PASSWORD": "" +} +``` + diff --git a/components/core/DBCon.py b/components/core/DBCon.py index 28abe24d..f3647637 100644 --- a/components/core/DBCon.py +++ b/components/core/DBCon.py @@ -3,13 +3,13 @@ import os _db=None -dbConf = get_conf_reader("db.config.json") +db_conf = get_conf_reader("db.config.json") def get_db_con () : global _db if _db==None: try: - _db=MySQLdb.connect(host=dbConf["BASSA_HOST"], user=dbConf["BASSA_DB_USERNAME"], passwd=dbConf["BASSA_DB_PASSWORD"],db=dbConf["BASSA_DB_NAME"]) + _db=MySQLdb.connect(host=db_conf["BASSA_HOST"], user=db_conf["BASSA_DB_USERNAME"], passwd=db_conf["BASSA_DB_PASSWORD"],db=db_conf["BASSA_DB_NAME"]) return _db except: return None