Example #1
0
def membership_fees_json():
    return jsonify(items=[
        {
            'name': localized(membership_fee.name),
            'regular_fee': money_filter(
                membership_fee.regular_fee),
            'payment_deadline': membership_fee.payment_deadline.days,
            'payment_deadline_final': membership_fee.payment_deadline_final.days,
            'begins_on': date_filter(membership_fee.begins_on),
            'ends_on': date_filter(membership_fee.ends_on),
            'finance_link': {'href': url_for(".transactions_all",
                                        filter="all",
                                        after=membership_fee.begins_on,
                                        before=membership_fee.ends_on),
                            'title': 'Finanzübersicht',
                            'icon': 'glyphicon-euro'},
            'book_link': {'href': url_for(".membership_fee_book",
                                          fee_id=membership_fee.id),
                          'title': 'Buchen',
                          'icon': 'glyphicon-book'},
            'edit_link': {'href': url_for(".membership_fee_edit",
                                        fee_id=membership_fee.id),
                            'title': 'Bearbeiten',
                            'icon': 'glyphicon-edit'},
        } for membership_fee in MembershipFee.q.order_by(MembershipFee.begins_on.desc()).all()])
Example #2
0
def _format_row(split, style, prefix=None):
    row = {
        'posted_at': datetime_filter(split.transaction.posted_at),
        # 'posted_by': (split.transaction.author.id, split.transaction.author.name),
        'valid_on': date_filter(split.transaction.valid_on),
        'description': {
            'href':
            url_for("finance.transactions_show",
                    transaction_id=split.transaction_id),
            'title':
            localized(split.transaction.description)
            if split.transaction.description else 'Keine Beschreibung',
            **({
                'empty': True
            } if not split.transaction.description else {}),
        },
        'amount': {
            'value':
            money_filter(-split.amount) if
            (style == "inverted") else money_filter(split.amount),
            'is_positive': (split.amount > 0) ^ (style == "inverted"),
        },
        'row_positive': (split.amount > 0) ^ (style == "inverted"),
    }
    if prefix is None:
        return row
    return {'{}_{}'.format(prefix, key): val for key, val in row.items()}
Example #3
0
def _format_row(split, style, prefix=None):
    T = FinanceTable
    row = {
        'posted_at':
        datetime_filter(split.transaction.posted_at),
        # 'posted_by': (split.transaction.author.id, split.transaction.author.name),
        'valid_on':
        date_filter(split.transaction.valid_on),
        'description':
        T.description.value(
            href=url_for("finance.transactions_show",
                         transaction_id=split.transaction_id),
            title=localized(split.transaction.description)
            if split.transaction.description else 'Keine Beschreibung'),
        'amount':
        T.amount.value(
            value=money_filter(-split.amount) if
            (style == "inverted") else money_filter(split.amount),
            is_positive=(split.amount > 0) ^ (style == "inverted"),
        ),
        'row_positive': (split.amount > 0) ^ (style == "inverted"),
    }
    if prefix is None:
        return row
    return {f'{prefix}_{key}': val for key, val in row.items()}
Example #4
0
def date_format(dt, default=None):
    """
    Format date or datetime objects for `table.dateFormatter`.
    :param datetime|date|None dt: a date or datetime object or None
    :param str|None default: formatted value to use if `dt` is None
    :return:
    """
    if dt is not None:
        return {
            'formatted': date_filter(dt),
            'timestamp': int(datetime.combine(dt, utc.time_min()).timestamp()),
        }
    else:
        return {
            'formatted': default if default is not None else date_filter(None),
            'timestamp': None,
        }
Example #5
0
def membership_fees_json():
    return jsonify(items=[
        {
            'name': localized(membership_fee.name),
            'regular_fee': money_filter(membership_fee.regular_fee),
            'payment_deadline': membership_fee.payment_deadline.days,
            'payment_deadline_final':
            membership_fee.payment_deadline_final.days,
            'begins_on': date_filter(membership_fee.begins_on),
            'ends_on': date_filter(membership_fee.ends_on),
            'finance_link': {
                'href':
                url_for(".transactions_all",
                        filter="all",
                        after=membership_fee.begins_on,
                        before=membership_fee.ends_on),
                'title':
                'Finanzübersicht',
                'icon':
                'glyphicon-euro'
            },
            'book_link': {
                'href': url_for(".membership_fee_book",
                                fee_id=membership_fee.id),
                'title': 'Buchen',
                'icon': 'glyphicon-book'
            },
            'edit_link': {
                'href': url_for(".membership_fee_edit",
                                fee_id=membership_fee.id),
                'title': 'Bearbeiten',
                'icon': 'glyphicon-edit'
            },
        } for membership_fee in MembershipFee.q.order_by(
            MembershipFee.begins_on.desc()).all()
    ])
Example #6
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()
            ]
        })
Example #7
0
def _format_row(split, style, prefix=None):
    row = {
        'posted_at': datetime_filter(split.transaction.posted_at),
        #'posted_by': (split.transaction.author.id, split.transaction.author.name),
        'valid_on': date_filter(split.transaction.valid_on),
        'description': {
            'href': url_for(
                "finance.transactions_show",
                transaction_id=split.transaction_id
                ),
            'title': localized(split.transaction.description)
        },
        'amount': {
            'value': money_filter(-split.amount) if (style == "inverted") else money_filter(split.amount),
            'is_positive': (split.amount > 0) ^ (style == "inverted"),
        },
        'row_positive': (split.amount > 0) ^ (style == "inverted"),
    }
    if prefix is None:
        return row
    return {'{}_{}'.format(prefix, key): val for key, val in row.items()}
Example #8
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()]
    })