def add(data, db_session, username=None): logger.info(LogMsg.START, username) if data.get('credit') and data.get('debit'): logger.error(LogMsg.DATA_MISSING) raise Http_error(400, Message.CREDIT_DEBIT_ERROR) if username is not None: permissions, presses = get_user_permissions(username, db_session) has_permission([Permissions.TRANSACTION_ADD_PREMIUM], permissions) account_id = data.get('account_id') logger.debug(LogMsg.GETTING_ACCOUNT_BY_ID, account_id) account = get_account(account_id, db_session) if account is None: logger.error(LogMsg.NOT_FOUND, {'account_id': account_id}) raise Http_error(404, Message.NOT_FOUND) model_instance = Transaction() populate_basic_data(model_instance, username) model_instance.account_id = account_id model_instance.credit = data.get('credit') model_instance.debit = data.get('debit') model_instance.payment_details = data.get('payment_details') db_session.add(model_instance) logger.debug(LogMsg.TRANSACTION_ADDED, model_to_dict(model_instance)) logger.info(LogMsg.END) return model_instance
def delete(id, db_session, username=None): logger.info(LogMsg.START, username) price = get_by_id(id, db_session) if price is None: logger.error(LogMsg.NOT_FOUND, {'book_price_id': id}) raise Http_error(404, Message.NOT_FOUND) book = get_book(price.book_id, db_session) if username is not None: per_data = {} permissions, presses = get_user_permissions(username, db_session) if book.creator == username: per_data.update({Permissions.IS_OWNER.value: True}) has_permit = has_permission_or_not([Permissions.PRICE_DELETE_PREMIUM], permissions, None, per_data) if not has_permit: if book.press in presses: has_permission([Permissions.PRICE_DELETE_PRESS], permissions) else: logger.error(LogMsg.PERMISSION_DENIED, username) raise Http_error(403, Message.ACCESS_DENIED) logger.debug(LogMsg.PERMISSION_VERIFIED) try: db_session.delete(price) logger.debug(LogMsg.DELETE_SUCCESS, {'book_price_id': id}) except: logger.exception(LogMsg.DELETE_FAILED, exc_info=True) raise Http_error(404, Message.DELETE_FAILED) logger.info(LogMsg.END) return Http_response(204, True)
def get_person_accounts(person_id, db_session, username): logger.info(LogMsg.START, username) permissions, presses = get_user_permissions(username, db_session) has_permission([Permissions.ACCOUNT_GET_PREMIUM], permissions) rtn = [] try: logger.debug(LogMsg.GETTING_PERSON_ALL_ACCOUNTS, person_id) result = db_session.query(Account).filter( Account.person_id == person_id).all() for item in result: rtn.append(account_to_dict(item)) logger.debug(LogMsg.GET_SUCCESS, rtn) except: logger.error(LogMsg.GET_FAILED, {'person_id': person_id}, exc_info=True) raise Http_error(404, Message.GET_FAILED) logger.info(LogMsg.END) return rtn
def delete(id, db_session, username): logger.info(LogMsg.START, username) permissions, presses = get_user_permissions(username, db_session) has_permission([Permissions.ACCOUNT_DELETE_PREMIUM], permissions) user = check_user(username, db_session) if user is None: logger.error(LogMsg.INVALID_USER, username) raise Http_error(404, Message.INVALID_USER) if user.person_id is None: logger.error(LogMsg.PERSON_NOT_EXISTS, username) raise Http_error(404, Message.Invalid_persons) validate_person(user.person_id, db_session) logger.debug(LogMsg.PERSON_EXISTS, username) try: logger.debug(LogMsg.DELETE_ACCOUNT_BY_ID, id) db_session.query(Account).filter( and_(Account.person_id == user.person_id, Account.id == id)).delete() except: logger.error(LogMsg.DELETE_FAILED, exc_info=True) raise Http_error(404, Message.NOT_FOUND) logger.info(LogMsg.END) return Http_response(204, True)
def delete(id, db_session, username=None): logger.info(LogMsg.START) order_item = get(id, db_session) if order_item is None: logger.error(LogMsg.NOT_FOUND, {'order_item_id': id}) raise Http_error(404, Message.NOT_FOUND) order = get_order(order_item.order_id, db_session) if order is None: logger.error(LogMsg.NOT_FOUND, {'order_id': order_item.order_id}) raise Http_error(404, Message.NOT_FOUND) if username is not None: user = check_user(username, db_session) per_data = {} permissions, presses = get_user_permissions(username, db_session) if order_item.creator == username or order.person_id == user.person_id: per_data.update({Permissions.IS_OWNER.value: True}) has_permission([Permissions.ORDER_ITEM_GET_PREMIUM], permissions, None, per_data) logger.debug(LogMsg.PERMISSION_VERIFIED) try: db_session.delete(order_item) logger.debug(LogMsg.ORDER_ITEM_DELETED, id) new_order = calc_total_price_order(order.id, db_session) logger.debug(LogMsg.ORDER_CALC_PRICE, order_to_dict(new_order, db_session, username)) except: logger.exception(LogMsg.DELETE_FAILED, exc_info=True) raise Http_error(404, Message.DELETE_FAILED) logger.info(LogMsg.END) return Http_response(204, True)
def get_orders_items(order_id, db_session, username=None): logger.info(LogMsg.START) result = db_session.query(OrderItem).filter( OrderItem.order_id == order_id).all() order = get_order(order_id, db_session) if order is None: logger.error(LogMsg.NOT_FOUND, {'order_id': order_id}) raise Http_error(404, Message.NOT_FOUND) if username is not None: user = check_user(username, db_session) per_data = {} permissions, presses = get_user_permissions(username, db_session) if order.person_id == user.person_id or ( result is not None and result[0].creator == username): per_data.update({Permissions.IS_OWNER.value: True}) has_permission([Permissions.ORDER_ITEM_GET_PREMIUM], permissions, None, per_data) logger.debug(LogMsg.PERMISSION_VERIFIED) final_res = [] for item in result: final_res.append(item_to_dict(item, db_session)) logger.debug(LogMsg.ORDERS_ITEMS, final_res) logger.info(LogMsg.END) return final_res
def delete(id, db_session, username): logger.info(LogMsg.START, username) group_member = get_model(id, db_session) if group_member is None: logger.error(LogMsg.NOT_FOUND, {'discussion_group_member': id}) raise Http_error(404, Message.NOT_FOUND) user = check_user(username, db_session) per_data = {} permissions, presses = get_user_permissions(username, db_session) if group_member.person_id == user.person_id or is_admin_member( user.person_id, group_member.group_id, db_session): per_data.update({Permissions.IS_OWNER.value: True}) has_permission([Permissions.DISCUSSION_MEMBER_PREMIUM], permissions, None, per_data) logger.debug(LogMsg.PERMISSION_VERIFIED, username) db_session.query(DiscussionMember).filter( DiscussionMember.id == id).delete() logger.debug(LogMsg.DISCUSSION_GROUP_OLD_MEMBERS_DELETED) return Http_response(204, True)
def get_personal_library(data, db_session, username): logger.info(LogMsg.START, username) permissions, presses = get_user_permissions(username, db_session) has_permission([Permissions.LIBRARY_DELETE_PREMIUM], permissions, None, {Permissions.IS_OWNER.value: True}) user = check_user(username, db_session) if user.person_id is None: logger.error(LogMsg.USER_HAS_NO_PERSON, username) raise Http_error(400, Message.Invalid_persons) validate_person(user.person_id, db_session) logger.debug(LogMsg.PERSON_EXISTS) if data.get('sort') is None: data['sort'] = ['creation_date-'] if data.get('filter') is None: data.update({'filter': {'person_id': user.person_id}}) else: data['filter'].update({'person_id': user.person_id}) logger.debug(LogMsg.LIBRARY_GET_PERSON_LIBRARY, username) result = Library.mongoquery( db_session.query(Library)).query(**data).end().all() logger.info(LogMsg.END) return lib_to_dictlist(result, db_session)
def add(data, db_session, username): logger.debug(LogMsg.START, username) permissions, presses = get_user_permissions(username, db_session) has_permission([Permissions.ACCOUNT_ADD_PREMIUM], permissions) check_schema(['person_id', 'type'], data.keys()) logger.debug(LogMsg.SCHEMA_CHECKED) check_enum(data.get('type'), AccountTypes) logger.debug(LogMsg.ENUM_CHECK, { 'enum': data.get('type'), 'reference_enum': 'AccountTypes' }) user = check_user(username, db_session) logger.debug(LogMsg.USER_CHECKING, username) if user is None: logger.error(LogMsg.INVALID_USER, username) raise Http_error(404, Message.INVALID_USER) logger.info(LogMsg.USER_XISTS, username) if user.person_id is None: logger.info(LogMsg.PERSON_NOT_EXISTS, username) raise Http_error(404, Message.Invalid_persons) validate_person(user.person_id, db_session) logger.info(LogMsg.PERSON_EXISTS, username) type = data.get('type', 'Main') value = data.get('value', 0.0) person_id = data.get('person_id') logger.info(LogMsg.GETTING_USER_ACCOUNTS, type) account = get(person_id, type, db_session) if account is not None: logger.error(LogMsg.ACCOUNT_BY_TYPE_EXISTS, type) raise Http_error(409, Message.ALREADY_EXISTS) model_instance = Account() populate_basic_data(model_instance, username, data.get('tags')) logger.debug(LogMsg.POPULATING_BASIC_DATA) model_instance.type = type model_instance.person_id = person_id model_instance.value = value db_session.add(model_instance) logger.debug(LogMsg.DB_ADD, account_to_dict(model_instance)) logger.info(LogMsg.END) return account_to_dict(model_instance)