Exemplo n.º 1
0
class NetworthHandle:
    def __init__(self, dbName):
        self.dbHandle = DbHandle(dbName)

        # Provides a daily gapless networth time series,
        # for a user, over a given date range based on individual account balances

    def getNetWorths(self, startdate, enddate):

        start_date = datetime.strptime(startdate, "%Y-%m-%d")
        end_date = datetime.strptime(enddate, "%Y-%m-%d")

        output = []
        for single_date in self._daterange(start_date, end_date):
            output.append({"date": single_date.strftime("%Y-%m-%d"), "net-worth": self._calculateNetWorth(single_date)})

        return json.dumps(output)

    def _daterange(self, start_date, end_date):
        for n in range(int((end_date - start_date).days + 1)):
            yield start_date + timedelta(n)

    def _calculateNetWorth(self, date):
        dateFmted = date.strftime("%m/%d/%Y")

        # Get list of asset accounts and liability accounts
        assets = self.dbHandle.getAccounts("asset", date)
        liabilities = self.dbHandle.getAccounts("liability", date)

        assetTotal = 0
        liabilityTotal = 0

        for asset in assets:
            assetTotal += self.dbHandle.getBalanceOnClosestDate(asset, date)

        for liability in liabilities:
            liabilityTotal += self.dbHandle.getBalanceOnClosestDate(liability, date)

        networth = assetTotal - liabilityTotal

        return networth
Exemplo n.º 2
0
 def __init__(self, dbName):
     self.dbHandle = DbHandle(dbName)