def test_deserialise_note(): json_note = { 'type': 'Note', 'date': '2017-12-12', 'account': 'Assets:ETrade:Cash', 'comment': 'This is some comment or note""', 'meta': {}, } note = Note({}, datetime.date(2017, 12, 12), 'Assets:ETrade:Cash', 'This is some comment or note') assert deserialise(json_note) == note
def note(self, filename, lineno, date, account, comment, kvlist): """Process a note directive. Args: filename: The current filename. lineno: The current line number. date: A datetime object. account: A string, the account to attach the note to. comment: A str, the note's comments contents. kvlist: a list of KeyValue instances. Returns: A new Note object. """ meta = new_metadata(filename, lineno, kvlist) return Note(meta, date, account, comment)
def test_deserialise_note(): json_note = { "type": "Note", "date": "2017-12-12", "account": "Assets:ETrade:Cash", "comment": 'This is some comment or note""', "meta": {}, } note = Note( {}, datetime.date(2017, 12, 12), "Assets:ETrade:Cash", "This is some comment or note", ) assert deserialise(json_note) == note
def deserialise(json_entry: Any) -> Directive: """Parse JSON to a Beancount entry. Args: json_entry: The entry. Raises: KeyError: if one of the required entry fields is missing. FavaAPIException: if the type of the given entry is not supported. """ date = parse_date(json_entry.get("date", ""))[0] if not isinstance(date, datetime.date): raise FavaAPIException("Invalid entry date.") if json_entry["type"] == "Transaction": narration, tags, links = extract_tags_links(json_entry["narration"]) postings = [deserialise_posting(pos) for pos in json_entry["postings"]] return Transaction( json_entry["meta"], date, json_entry.get("flag", ""), json_entry.get("payee", ""), narration or "", tags, links, postings, ) if json_entry["type"] == "Balance": raw_amount = json_entry["amount"] amount = Amount(D(str(raw_amount["number"])), raw_amount["currency"]) return Balance(json_entry["meta"], date, json_entry["account"], amount, None, None) if json_entry["type"] == "Note": comment = json_entry["comment"].replace('"', "") return Note(json_entry["meta"], date, json_entry["account"], comment) raise FavaAPIException("Unsupported entry type.")