diff options
Diffstat (limited to 'src/lb_app/app_db')
-rw-r--r-- | src/lb_app/app_db/__init__.py | 0 | ||||
-rw-r--r-- | src/lb_app/app_db/db.py | 31 | ||||
-rw-r--r-- | src/lb_app/app_db/user.py | 27 |
3 files changed, 58 insertions, 0 deletions
diff --git a/src/lb_app/app_db/__init__.py b/src/lb_app/app_db/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/lb_app/app_db/__init__.py diff --git a/src/lb_app/app_db/db.py b/src/lb_app/app_db/db.py new file mode 100644 index 0000000..005599b --- /dev/null +++ b/src/lb_app/app_db/db.py @@ -0,0 +1,31 @@ +from flask import current_app, _app_ctx_stack +from flask_pymongo import PyMongo + +class MongoDB(object): + def __init__(self, app=None): + self.app = app + if app is not None: + self.init_app(app) + + def init_app(self, app): + app.teardown_appcontext(self.teardown) + + def connect(self): + return PyMongo(self.app, current_app.config['MONGO_URI']) + + + def teardown(self, exception): + ctx = _app_ctx_stack.top + if hasattr(ctx, 'mongo_db'): + ctx.mongo_db.cx.close() + + def connection(self): + ctx = _app_ctx_stack.top + if ctx is not None: + if not hasattr(ctx, 'mongo_db'): + ctx.mongo_db = self.connect() + return ctx.mongo_db + + def set_up(self): + mongo = PyMongo(self.app) + mongo.cx.drop_database("test_liberationCenter") diff --git a/src/lb_app/app_db/user.py b/src/lb_app/app_db/user.py new file mode 100644 index 0000000..1af957c --- /dev/null +++ b/src/lb_app/app_db/user.py @@ -0,0 +1,27 @@ +from flask import current_app + +from .db import MongoDB + +class User(object): + def __init__(self, app=None): + self.app = app + + def all(self): + db = MongoDB(self.app) + mongo = db.connection() + return list(mongo.db.users.find({})) + + def register(self, username): + db = MongoDB(self.app) + mongo = db.connection() + error = None + + if not username: + error = 'Username is required.' + elif len(list(mongo.db.users.find({"username": username}))) > 0: + error = 'User {} is already registered.'.format(username) + + if error is None: + mongo.db.users.insert({"username": username}) + return None + return error |