예제 #1
0
def bank_accounts_list():
    bank_account_table = BankAccountTable(
        data_url=url_for('.bank_accounts_list_json'),
        create_account=privilege_check(current_user, 'finance_change'))

    bank_account_activity_table = BankAccountActivityTable(
        data_url=url_for('.bank_accounts_activities_json'))

    return render_template(
        'finance/bank_accounts_list.html',
        bank_account_table=bank_account_table,
        bank_account_activity_table=bank_account_activity_table,
    )
예제 #2
0
def bank_accounts_activities_json():
    limit = request.args.get('limit', default=100, type=int)
    offset = request.args.get('offset', default=0, type=int)
    if privilege_check(current_user, 'finance_change'):

        def actions(activity_id):
            return [{
                'href':
                url_for('.bank_account_activities_edit',
                        activity_id=activity_id),
                'title':
                '',
                'btn_class':
                'btn-primary',
                'icon':
                'glyphicon-pencil'
            }]
    else:

        def actions(activity_id):
            return []

    activity_q = (BankAccountActivity.q.options(
        joinedload(BankAccountActivity.bank_account)).filter(
            BankAccountActivity.transaction_id == None).order_by(
                BankAccountActivity.valid_on))

    return jsonify(
        items={
            'total':
            activity_q.count(),
            'rows': [
                {
                    'bank_account': activity.bank_account.name,
                    'valid_on': date_filter(activity.valid_on),
                    'amount': money_filter(activity.amount),
                    'reference': activity.reference,
                    'original_reference': activity.original_reference,
                    'ktonr': activity.other_account_number,
                    # 'blz': activity.other_bank,   # todo revisit. wuzdat? dunno…
                    'name': activity.other_name,
                    'actions': actions(activity.id),
                } for activity in activity_q.limit(limit).offset(offset).all()
            ]
        })
예제 #3
0
파일: __init__.py 프로젝트: agdsn/pycroft
def bank_accounts_activities_json():
    limit = request.args.get('limit', default=100, type=int)
    offset = request.args.get('offset', default=0, type=int)
    if privilege_check(current_user, 'finance_change'):
        def actions(activity_id):
            return [{
                'href': url_for(
                    '.bank_account_activities_edit',
                    activity_id=activity_id),
                'title': '',
                'btn_class': 'btn-primary',
                'icon': 'glyphicon-pencil'
            }]
    else:
        def actions(activity_id):
            return []

    activity_q = (BankAccountActivity.q
            .options(joinedload(BankAccountActivity.bank_account))
            .filter(BankAccountActivity.transaction_id == None)
            .order_by(BankAccountActivity.valid_on))

    return jsonify(items={
        'total': activity_q.count(),
        'rows': [{
            'bank_account': activity.bank_account.name,
            'valid_on': date_filter(activity.valid_on),
            'amount': money_filter(activity.amount),
            'reference': activity.reference,
            'original_reference': activity.original_reference,
            'ktonr': activity.other_account_number,
            # 'blz': activity.other_bank,   # todo revisit. wuzdat? dunno…
            'name': activity.other_name,
            'actions': actions(activity.id),
        } for activity in activity_q.limit(limit).offset(offset).all()]
    })
예제 #4
0
def transactions_unconfirmed_json():
    transactions = Transaction.q.filter_by(confirmed=False).order_by(
        Transaction.posted_at).limit(100).all()

    items = []

    for transaction in transactions:
        user_account = next(
            (a for a in transaction.accounts if a.type == "USER_ASSET"), None)

        items.append({
            'description': {
                'href':
                url_for(".transactions_show", transaction_id=transaction.id),
                'title':
                transaction.description,
                'new_tab':
                True,
                'glyphicon':
                'glyphicon-new-window'
            },
            'user': {
                'href':
                url_for("user.user_show", user_id=user_account.user.id),
                'title':
                "{} ({})".format(user_account.user.name,
                                 encode_type2_user_id(user_account.user.id)),
                'new_tab':
                True
            } if user_account else None,
            'room':
            user_account.user.room.short_name
            if user_account and user_account.user.room else None,
            'author': {
                'href': url_for("user.user_show",
                                user_id=transaction.author.id),
                'title': transaction.author.name,
                'new_tab': True,
            },
            'date':
            date_format(transaction.posted_at),
            'amount':
            money_filter(transaction.amount),
            'actions': [{
                'href':
                url_for(".transaction_confirm", transaction_id=transaction.id),
                'title':
                'Bestätigen',
                'icon':
                'glyphicon-ok',
                'btn_class':
                'btn-success btn-sm',
            }, {
                'href':
                url_for(".transaction_delete", transaction_id=transaction.id),
                'title':
                'Löschen',
                'icon':
                'glyphicon-trash',
                'btn_class':
                'btn-danger btn-sm',
            }] if privilege_check(current_user, 'finance_change') else [],
        })

    return jsonify(items=items)
예제 #5
0
def transactions_unconfirmed_json():
    transactions = Transaction.q.filter_by(confirmed=False).order_by(
        Transaction.posted_at).limit(100).all()

    items = []

    for transaction in transactions:
        user_account = next(
            (a for a in transaction.accounts if a.type == "USER_ASSET"), None)
        bank_acc_act = BankAccountActivity.q.filter_by(
            transaction_id=transaction.id).first()

        items.append({
            'description': {
                'href':
                url_for(".transactions_show", transaction_id=transaction.id),
                'title':
                transaction.description,
                'new_tab':
                True,
                'glyphicon':
                'fa-external-link-alt'
            },
            'user': {
                'href':
                url_for("user.user_show", user_id=user_account.user.id),
                'title':
                "{} ({})".format(user_account.user.name,
                                 encode_type2_user_id(user_account.user.id)),
                'new_tab':
                True
            } if user_account else None,
            'room':
            user_account.user.room.short_name
            if user_account and user_account.user.room else None,
            'author': {
                'href': url_for("user.user_show",
                                user_id=transaction.author.id),
                'title': transaction.author.name,
                'new_tab': True,
            },
            'date':
            date_format(transaction.posted_at, formatter=date_filter),
            'amount':
            money_filter(transaction.amount),
            'actions': [{
                'href':
                url_for(".bank_account_activities_edit",
                        activity_id=bank_acc_act.id),
                'title':
                'Bankbewegung',
                'icon':
                'fa-credit-card',
                'btn_class':
                'btn-info btn-sm',
                'new_tab':
                True
            } if bank_acc_act is not None else {}, {
                'href':
                url_for(".transaction_confirm", transaction_id=transaction.id),
                'title':
                'Bestätigen',
                'icon':
                'fa-check',
                'btn_class':
                'btn-success btn-sm',
            }, {
                'href':
                url_for(".transaction_delete", transaction_id=transaction.id),
                'title':
                'Löschen',
                'icon':
                'fa-trash',
                'btn_class':
                'btn-danger btn-sm',
            }] if privilege_check(current_user, 'finance_change') else [],
        })

    return jsonify(items=items)