Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_serialise_posting(amount_cost_price, amount_string):
pos = Posting("Assets", *amount_cost_price, None, None)
json = {"account": "Assets", "amount": amount_string}
assert loads(dumps(serialise(pos))) == json
assert deserialise_posting(json) == pos
{"account": "Assets:ETrade:Cash", "amount": "100 USD"},
{"account": "Assets:ETrade:GLD", "amount": ""},
],
}
with app.test_request_context():
serialised = loads(dumps(serialise(txn)))
assert serialised == json_txn
txn = txn._replace(payee="")
json_txn["payee"] = ""
serialised = loads(dumps(serialise(txn)))
assert serialised == json_txn
txn = txn._replace(payee=None)
serialised = loads(dumps(serialise(txn)))
assert serialised == json_txn
def test_serialise(app):
assert serialise(None) is None
txn = Transaction(
{},
datetime.date(2017, 12, 12),
"*",
"Test3",
"asdfasd",
frozenset(["tag"]),
frozenset(["link"]),
[],
)
create_simple_posting(txn, "Assets:ETrade:Cash", "100", "USD")
create_simple_posting(txn, "Assets:ETrade:GLD", None, None)
json_txn = {
"date": "2017-12-12",
"flag": "*",
None,
None,
)
json = {
"date": "2019-09-17",
"amount": {"currency": "CHF", "number": "0.1234567891011121314151617"},
"diff_amount": None,
"meta": {},
"tolerance": None,
"account": "Assets:ETrade:Cash",
"type": "Balance",
}
with app.test_request_context():
serialised = loads(dumps(serialise(bal)))
assert serialised == json
json_txn = {
"date": "2017-12-12",
"flag": "*",
"meta": {},
"narration": "asdfasd #tag ^link",
"payee": "Test3",
"type": "Transaction",
"postings": [
{"account": "Assets:ETrade:Cash", "amount": "100 USD"},
{"account": "Assets:ETrade:GLD", "amount": ""},
],
}
with app.test_request_context():
serialised = loads(dumps(serialise(txn)))
assert serialised == json_txn
txn = txn._replace(payee="")
json_txn["payee"] = ""
serialised = loads(dumps(serialise(txn)))
assert serialised == json_txn
txn = txn._replace(payee=None)
serialised = loads(dumps(serialise(txn)))
assert serialised == json_txn
@BABEL.localeselector
def get_locale():
"""Get locale.
Returns:
The locale that should be used for Babel. If not given as an option to
Fava, guess from browser.
"""
if g.ledger.fava_options["language"]:
return g.ledger.fava_options["language"]
return request.accept_languages.best_match(["en"] + LANGUAGES)
for _, function in inspect.getmembers(template_filters, inspect.isfunction):
app.add_template_filter(function)
app.add_template_filter(serialise)
@app.url_defaults
def _inject_filters(endpoint, values):
if "bfile" not in values and app.url_map.is_endpoint_expecting(
endpoint, "bfile"
):
values["bfile"] = g.beancount_file_slug
if endpoint in ["static", "index"]:
return
if "interval" not in values:
values["interval"] = request.args.get("interval")
if "conversion" not in values:
values["conversion"] = request.args.get("conversion")
for filter_name in ["account", "filter", "time"]:
if filter_name not in values:
def extract():
"""Extract entries using the ingest framework."""
entries = g.ledger.ingest.extract(
request.args.get("filename"), request.args.get("importer")
)
return list(map(serialise, entries))
def payee_transaction():
"""Last transaction for the given payee."""
entry = g.ledger.attributes.payee_transaction(request.args.get("payee"))
return serialise(entry)