コード例 #1
0
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
コード例 #2
0
ファイル: transaction.py プロジェクト: monetario/core
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
コード例 #3
0
ファイル: transaction.py プロジェクト: monetario/core
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
コード例 #4
0
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