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/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 123340af..f3647637 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 +db_conf = 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=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 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 ###