Files
@ 8e59d3d66159
Branch filter:
Location: NPO-Accounting/experimental-accounting-api/accounting/storage/sql/models.py - annotation
8e59d3d66159
1.3 KiB
text/x-python
[sql] Late init_app of SQLAlchemy
in order to be able to run sql/models.py alone (e.g. sphinx autodoc)
in order to be able to run sql/models.py alone (e.g. sphinx autodoc)
124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 124bd1706d79 | import json
from . import db
class Transaction(db.Model):
id = db.Column(db.Integer(), primary_key=True)
uuid = db.Column(db.String, unique=True, nullable=False)
date = db.Column(db.DateTime)
payee = db.Column(db.String())
meta = db.Column(db.String())
def as_dict(self):
return dict(
id=self.uuid,
date=self.date,
payee=self.payee,
postings=[p.as_dict() for p in self.postings],
metadata=json.loads(self.meta)
)
class Posting(db.Model):
id = db.Column(db.Integer(), primary_key=True)
transaction_uuid = db.Column(db.String, db.ForeignKey('transaction.uuid'))
transaction = db.relationship('Transaction', backref='postings')
account = db.Column(db.String, nullable=False)
amount_id = db.Column(db.Integer, db.ForeignKey('amount.id'))
amount = db.relationship('Amount')
meta = db.Column(db.String)
def as_dict(self):
return dict(
account=self.account,
amount=self.amount.as_dict(),
metadata=json.loads(self.meta)
)
class Amount(db.Model):
id = db.Column(db.Integer, primary_key=True)
symbol = db.Column(db.String)
amount = db.Column(db.Numeric)
def as_dict(self):
return dict(
symbol=self.symbol,
amount=self.amount
)
|