Mercurial > louis > ofxstatement-us-hsbc
annotate src/ofxstatement/plugins/us_hsbc/record.py @ 7:829eb62755b0
First cut at an HSBC (USA) plugin
author | Louis Opter <kalessin@kalessin.fr> |
---|---|
date | Thu, 17 Nov 2016 16:25:12 -0800 |
parents | |
children |
rev | line source |
---|---|
7
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1 # Copyright (c) 2016, Louis Opter <louis@opter.org> |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2 # |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
3 # This file is part of ofxstatement-us-hsbc. |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
4 # |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
5 # ofxstatement-us-hsbc is free software: you can redistribute it and/or |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
6 # modify it under the terms of the GNU General Public License as |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
7 # published by the Free Software Foundation, either version 3 of the |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
8 # License, or (at your option) any later version. |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
9 # |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
10 # ofxstatement-us-hsbc is distributed in the hope that it will be |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
11 # useful, but WITHOUT ANY WARRANTY; without even the implied warranty |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
12 # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
13 # GNU General Public License for more details. |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
14 # |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
15 # You should have received a copy of the GNU General Public License |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
16 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
17 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
18 import enum |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
19 import os |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
20 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
21 from typing import List |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
22 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
23 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
24 class CsvIndexes(enum.Enum): |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
25 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
26 STATUS = 0 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
27 DATE = 1 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
28 ORIGINAL_DESCRIPTION = 2 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
29 SPLIT_TYPE = 3 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
30 CATEGORY = 4 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
31 CURRENCY = 5 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
32 AMOUNT = 6 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
33 USER_DESCRIPTION = 7 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
34 MEMO = 8 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
35 CLASSIFICATION = 9 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
36 SIMPLE_DESCRIPTION = 10 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
37 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
38 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
39 class Record: |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
40 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
41 status: str = None |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
42 date: str = None |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
43 original_description: str = None |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
44 split_type: str = None |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
45 category: str = None |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
46 currency: str = None |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
47 amount: str = None |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
48 user_description: str = None |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
49 memo: str = None |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
50 classification: str = None |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
51 account_name: str = None |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
52 simple_description: str = None |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
53 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
54 def __init__(self, line: List[str]) -> None: |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
55 for index in CsvIndexes: |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
56 setattr(self, index.name.lower(), line[index.value].strip()) |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
57 |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
58 def __repr__(self) -> str: |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
59 linesep = "{} ".format(os.linesep) |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
60 return "<{}({}{}) object at 0x{:x}>".format( |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
61 self.__class__.__name__, |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
62 linesep, |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
63 ",{}".format(linesep).join( |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
64 "{}={}".format(attrname, getattr(self, attrname.lower())) |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
65 for attrname in map(lambda idx: idx.name.lower(), CsvIndexes) |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
66 ), |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
67 id(self), |
829eb62755b0
First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
68 ) |