def delete_account(user_data): """Delete user transaction""" session = Session() response = None try: user = session.query(User).filter(User.email == user_data['email'] ).first() if user is not None: if __hash_pass(user_data['password']) == user.password: session.delete(user) session.commit() # TRANSACTION SUCCESSFUL response = success_response(user, 'delete') else: response = error_response(err_concept='bad_credentials') else: response = error_response(err_concept='non_user') except exc.DBAPIError as e: session.rollback() response = error_response(e.code, e.orig, 'transaction') finally: if response is not None: return response
def update_account(user_data): """Updating user account data""" update_data = user_data['new_data'] session = Session() response = None try: user = session.query(User).filter(User.email == user_data['email']).first() if user is not None: if __hash_pass(user_data['password']) == user.password: if 'email' in update_data: user.email = update_data['email'] if 'username' in update_data: user.username = update_data['username'] if 'first_name' in update_data: user.first_name = update_data['first_name'] if 'last_name' in update_data: user.last_name = update_data['last_name'] if 'password' in update_data: user.password = __hash_pass(update_data['password']) user.last_login = datetime.now() session.commit() # TRANSACTION SUCCESSFUL response = success_response(user, 'update') else: response = error_response(err_concept='bad_credentials') else: response = error_response(err_concept='non_user') except exc.DBAPIError as e: session.rollback() response = error_response(e.code, e.orig, 'transaction') finally: if response is not None: return response
def get(self): response = None response = product_query(request) if response is not None: return response return error_response()
def product_query(req): """ Product Query method. Lazy load the product elaborating a Query object before hitting the database. """ session = Session() query = None response = None page = None try: query = Query([Products.name, Products.cost, Products.total_products, Products.batch, Products.expiration_date, Product_Types.name.label('type')]).join(Product_Types) if len(req.args) is 0: pass else: if 'type' in req.args: product_type = req.args['type'] query = query.filter(Product_Types.name == product_type) if 'lower_than' in req.args: cost = float(req.args['lower_than']) query = query.filter(Products.cost < cost) if 'higher_than' in req.args: cost = float(req.args['higher_than']) query = query.filter(Products.cost > cost) if 'name' in req.args: name = req.args['name'] query = query.filter(Products.name.like(f'%{name}%')) except exc.DBAPIError as e: session.rollback() response = error_response(e.code, e.orig) else: if 'page' in req.args: page = int(req.args['page']) query = query.limit(10).offset( (page - 1) * 10 ) else: page = 1 query = query.limit(10).offset(0) query.session = session response = product_response(query, 'products_query', page) finally: return response
def signin_user(user_data): '''SignIn Transaction''' session = Session() response = None try: user = session.query(User).filter( User.email==user_data['email'] ).first() if user is not None: if __hash_pass(user_data['password']) == user.password: user.last_login = datetime.now() session.commit() # TRANSACTION SUCCESSFUL response = success_response(user, 'signin') else: response = error_response(err_concept='bad_credentials') else: response = error_response(err_concept='non_user') except exc.DBAPIError as e: session.rollback() response = error_response(e.code, e.orig, 'transaction') finally: if response is not None: return response
def signup_user(user_data): '''SignUp Transaction''' session = Session() new_user = User(user_data['username'], user_data['email'], __hash_pass(user_data['password']), user_data['first_name'], user_data['last_name'], datetime.now()) response = None try: session.add(new_user) session.commit() # TRANSACTION SUCCESSFUL response = success_response(new_user, 'signup') except exc.DBAPIError as e: print(e.args) session.rollback() response = error_response(e.code, e.orig, 'transaction') finally: return response
from sqlalchemy import create_engine, exc from sqlalchemy.orm import sessionmaker from services.error import error_response from config import config from colorama import Fore from datetime import datetime connection = None try: engine = create_engine(config['db_url'], max_overflow=5, pool_recycle=3600, pool_size=5) connection = engine.connect() except exc.OperationalError as e: error_response(e.code, e.orig) finally: if connection is not None: Session = sessionmaker(bind=engine) # CONNECTION ESTABLISHED print(Fore.GREEN, f'\n** CONNECTION ESTABLISHED - {datetime.now()}', Fore.RESET)