def add_transaction(): transaction_schema = Transaction.from_json( json.loads(request.data.decode('utf-8'))) if transaction_schema.errors: return {'errors': transaction_schema.errors}, 400 transaction_data = transaction_schema.data if transaction_data['source_account_id'] == transaction_data[ 'target_account_id']: return { 'errors': { 'target_account': 'Source account and target account can not be equal' } }, 400 source_account = Account.query.filter( Account.id == transaction_data['source_account_id']).first() if not source_account: return { 'errors': { 'source_account': 'Source account with this id does not exist' } }, 400 target_account = Account.query.filter( Account.id == transaction_data['target_account_id']).first() if not target_account: return { 'errors': { 'target_account': 'Target account with this id does not exist' } }, 400 currency = GroupCurrency.query.filter( GroupCurrency.id == transaction_data['currency_id']).first() if not currency: return { 'errors': { 'currency': 'Group currency with this id does not exist' } }, 400 transaction = make_transaction( user=current_user, source_account_id=transaction_data['source_account_id'], target_account_id=transaction_data['target_account_id'], amount=transaction_data['amount'], currency_id=transaction_data['currency_id'], date=transaction_data.get('date'), description=transaction_data.get('description')) return transaction, 201
def edit_transaction(transaction_id): transaction = Transaction.query.filter( Transaction.id == transaction_id, Transaction.user_id == current_user.id ).first_or_404() transaction_schema = Transaction.from_json( json.loads(request.data.decode('utf-8')), partial=True ) if transaction_schema.errors: return {'errors': transaction_schema.errors}, 400 transaction_data = transaction_schema.data if transaction_data['source_account_id'] == transaction_data['target_account_id']: return { 'errors': {'target_account': 'Source account and target account can not be equal'} }, 400 source_account = Account.query.filter( Account.id == transaction_data['source_account_id'] ).first() if not source_account: return {'errors': {'source_account': 'Source account with this id does not exist'}}, 400 target_account = Account.query.filter( Account.id == transaction_data['target_account_id'] ).first() if not target_account: return {'errors': {'target_account': 'Target account with this id does not exist'}}, 400 if 'currency_id' in transaction_data: currency = GroupCurrency.query.filter( GroupCurrency.id == transaction_data['currency_id'] ).first() if not currency: return {'errors': {'currency': 'Group currency with this id does not exist'}}, 400 transaction = update_transaction( transaction=transaction, user=current_user, source_account_id=transaction_data['source_account_id'], target_account_id=transaction_data['target_account_id'], amount=transaction_data['amount'], currency_id=transaction_data['currency_id'], date=transaction_data.get('date'), description=transaction_data.get('description'), ) db.session.commit() return transaction, 200
def add_transaction(): transaction_schema = Transaction.from_json(json.loads(request.data.decode('utf-8'))) if transaction_schema.errors: return {'errors': transaction_schema.errors}, 400 transaction_data = transaction_schema.data if transaction_data['source_account_id'] == transaction_data['target_account_id']: return { 'errors': {'target_account': 'Source account and target account can not be equal'} }, 400 source_account = Account.query.filter( Account.id == transaction_data['source_account_id'] ).first() if not source_account: return {'errors': {'source_account': 'Source account with this id does not exist'}}, 400 target_account = Account.query.filter( Account.id == transaction_data['target_account_id'] ).first() if not target_account: return {'errors': {'target_account': 'Target account with this id does not exist'}}, 400 currency = GroupCurrency.query.filter( GroupCurrency.id == transaction_data['currency_id'] ).first() if not currency: return {'errors': {'currency': 'Group currency with this id does not exist'}}, 400 transaction = make_transaction( user=current_user, source_account_id=transaction_data['source_account_id'], target_account_id=transaction_data['target_account_id'], amount=transaction_data['amount'], currency_id=transaction_data['currency_id'], date=transaction_data.get('date'), description=transaction_data.get('description') ) return transaction, 201
def edit_transaction(transaction_id): transaction = Transaction.query.filter( Transaction.id == transaction_id, Transaction.user_id == current_user.id).first_or_404() transaction_schema = Transaction.from_json(json.loads( request.data.decode('utf-8')), partial=True) if transaction_schema.errors: return {'errors': transaction_schema.errors}, 400 transaction_data = transaction_schema.data if transaction_data['source_account_id'] == transaction_data[ 'target_account_id']: return { 'errors': { 'target_account': 'Source account and target account can not be equal' } }, 400 source_account = Account.query.filter( Account.id == transaction_data['source_account_id']).first() if not source_account: return { 'errors': { 'source_account': 'Source account with this id does not exist' } }, 400 target_account = Account.query.filter( Account.id == transaction_data['target_account_id']).first() if not target_account: return { 'errors': { 'target_account': 'Target account with this id does not exist' } }, 400 if 'currency_id' in transaction_data: currency = GroupCurrency.query.filter( GroupCurrency.id == transaction_data['currency_id']).first() if not currency: return { 'errors': { 'currency': 'Group currency with this id does not exist' } }, 400 transaction = update_transaction( transaction=transaction, user=current_user, source_account_id=transaction_data['source_account_id'], target_account_id=transaction_data['target_account_id'], amount=transaction_data['amount'], currency_id=transaction_data['currency_id'], date=transaction_data.get('date'), description=transaction_data.get('description'), ) db.session.commit() return transaction, 200