diff options
Diffstat (limited to 'python/trade_dataclasses.py')
| -rw-r--r-- | python/trade_dataclasses.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/python/trade_dataclasses.py b/python/trade_dataclasses.py index 6310dc40..a33bfd52 100644 --- a/python/trade_dataclasses.py +++ b/python/trade_dataclasses.py @@ -2,6 +2,7 @@ from dataclasses import dataclass, field, fields from typing import ClassVar from decimal import Decimal from typing import Literal +import csv import datetime from enum import Enum from psycopg2.extensions import register_adapter, AsIs @@ -238,6 +239,14 @@ class BbgDeal: cls._bbg_insert_queue.clear() cls._insert_queue.clear() + @classmethod + def process(cls, file_handle, index): + for row in csv.DictReader(file_handle): + line = {"bbg_ticket_id": index, **row} + trade = cls.from_bbg_line(line) + trade.stage() + cls.commit() + @dataclass class CDSDeal( @@ -315,8 +324,7 @@ class CDSDeal( @classmethod def from_bbg_line(cls, line: dict): - values = list(line.values()) - cls._bbg_insert_queue.append(values) + cls._bbg_insert_queue.append(list(line.values())) return cls( fund=_funds[line["Account"]], folder="*", @@ -358,8 +366,7 @@ class BondDeal(BbgDeal, Deal, deal_type=DealType.Bond, table_name="bonds"): @classmethod def from_bbg_line(cls, line: dict): - values = list(line.values()) - cls._bbg_insert_queue.append(values) + cls._bbg_insert_queue.append(list(line(values))) return cls( faceamount=Decimal(line["Quantity"]), price=Decimal(line["Price (Dec)"]), |
