Responsive Flask/SQLAlchemy personal finance app, specifically for biweekly budgeting.
AGPL-3.0 License
Bot releases are hidden (Show)
Published by jantman over 6 years ago
budget_id
attribute and budget
relationship of the Transaction model has been removed, as that information is now in the related BudgetTransactions.planned_budget_id
attribute (and planned_budget
relationship) has been added to the Transaction model. For Transactions that were created from ScheduledTransactions, this attribute/relationship stores the original planned budget (distinct from the actual budget now stored in BudgetTransactions).budget_transactions
back-populated property, containing a list of all associated BudgetTransactions.set_budget_amounts()
method which takes a single dict mapping either integer Budget IDs or Budget objects, to the Decimal amount of the Transaction allocated to that Budget. While the underlying API supports an arbitrary number of budgets, the UI and codebase currently only supports one.budget_amounts
keyword argument that passes its value through to set_budget_amounts()
, for ease of creating Transactions in one call.Transaction.actual_amount
is no longer an attribute stored in the database, but now a hybrid property (read-only) generated from the sum of amounts of all related BudgetTransactions.migrations
tox environment that automatically tests all database migrations (forward and reverse) and also validates that the database schema created from the migrations matches the one created from the models.BIWEEKLYBUDGET_LOG_FILE
environment variable to cause Flask application logs to go to a file in addition to STDOUT.SQL_POOL_PRE_PING
environment variable to enable SQLAlchemy pool_pre_ping
feature (see Disconnect Handling - Pessimistic) for resource-constrained systems.SQL_QUERY_PROFILE
environment variable.flask rundev
, append the number of milliseconds taken to serve the request to the werkzeug access log./help
view, and change /help
view to show Version containing git commit hash for pre-release/development Docker builds.Account
model's re_
fields in preparation for actually using them.Account
model's re_fee
field with separate re_late_fee
and re_other_fee
fields.is_*
fields according to Account re_*
fields.re_*
fields, that triggers OFXTransaction.update_is_fields()
to recalculate using the new regex.OFXTransaction.unreconciled
to filter out OFXTransactions with any of the is_*
set to True./budgets
view where "Spending By Budget, Per Calendar Month" chart was showing only inactive budgets instead of only active budgets.versionfinder
requirement version to 0.1.3 to work with pip 9.0.2.flask rundev
logging.biweeklybudget.screenscraper.ScreenScraper
- Save webdriver and browser logs on failure, and set Chrome to capture all logs.biweeklybudget.screenscraper.ScreenScraper
- Add option to explicitly set a User-Agent on Chrome or PhantomJS.is_
fields weren't set on OFXTransactions when created via ofxgetter remote API.ofxgetter
- add support to list all accounts at the Institution of one accountofxgetter
- add ability to specify how many days of data to retrievePublished by jantman almost 7 years ago
python:3.6.3-alpine3.4
to python:3.6.4-alpine3.7
.sudo: false
) to VM (sudo: enabled
) infrastructure.Published by jantman almost 7 years ago
This version has a remote OFX upload incompatibility. See below.
screenscraper.py
.pluggy
transient dependency from requirements.txt; was breaking builds.FUEL_VOLUME_UNIT
, FUEL_VOLUME_ABBREVIATION
, DISTANCE_UNIT
, DISTANCE_UNIT_ABBREVIATION
and FUEL_ECO_ABBREVIATION
.ofxparse
package now that my PR #127 has been merged and released on PyPI. Important note: The version of ofxparse is changed in this release. If you are using ofxgetter -r
(remote API mode), the versions of ofxparse (and therefore biweeklybudget/ofxgetter) must match between the client and server.wishlist
package now that my PR #8 has been merged and released on PyPI.SETTINGS_MODULE
was still required even if running remotely.Published by jantman almost 7 years ago
CURRENCY_CODE
and LOCALE_NAME
configuration settings to control the currency symbol and formatting used in the user interface and logs.python:3.6.1
(Debian) to python:3.6.3-alpine3.4
(Alpine Linux); drops final image size from 876MB to 274MB. (Note: Alpine linux does not have /bin/bash
.)docker
tox environment / tests/docker_build.py
.dev/release.py
script to handle GitHub releases.Published by jantman almost 7 years ago
This release includes database migrations.
Issue #118 - PR to fix bugs in the wishlist dependency package, and vendor that patched version in under biweeklybudget.vendored.wishlist
.
Issue #113 - vendor in other git requirements (ofxclient and ofxparse) that seem unmaintained or inactive, so we can install via pip
.
Issue #115 - In Transactions view, add ability to filter by budget.
Change BiweeklyPayPeriod
class to never convert to floats (always use decimal.Decimal types).
Issue #124 - Major changes to the ofxgetter
and ofxbackfiller
console scripts; centralize all database access in them to the new biweeklybudget.ofxapi.local.OfxApiLocal
class and allow these scripts to function remotely, interacting with the ReST API instead of requiring direct database access.
Issue #123 - Modify the Credit Payoffs view to allow removal of Increase and Onetime Payment settings lines.
Issue #131 - Add better example data for screenshots.
Issue #117 and #133 - Implement and then revert out a failed attempt at automatic balancing of budgets in the previous pay period.
transfer_id
field and transfer
relationship to Transaction model, to link the halves of budget transfer transactions in the database. The alembic migration for this release iterates all Transactions in the database, and populates these links based on inferences of the description, date, account_id and notes fields of sequential pairs of Transactions. (Note: this migration would likely miss some links if two transfers were created simultaneously, and ended up with the Transaction IDs interleaved).Issue #133 - Change BiweeklyPayPeriod model to only use actual spent amount when creating remaining amount on payperiods in the past. Previously, all pay periods calculated the overall “remaining” amount as income minus the greater of allocated
or spent
; this resulted in pay periods in the past still including allocated-but-not-spent amounts counted against “remaining”.
Published by jantman almost 7 years ago
ofxgetter
enable ofxclient logging when running at DEBUG level (-vv
)./projects
view.Published by jantman over 7 years ago
/pay_period_for
redirect to be a 302 instead of 301, add redirect logging, remove some old debug logging from that view./
view when an account has a None ledger balance.Published by jantman over 7 years ago
biweeklybudget/tests/docker_build.py
ofxgetter
in the Docker container./payperiod/YYYY-mm-dd
view; add 6 more future pay periods to the /payperiods
table.date
field to actually be just a date; previously, Transactions with date
left as default would attempt to put a full datetime into a date column, and throw a data truncation warning.__repr__
to not throw exception on un-persisted objects.actual_amount
of a Transaction against a Standing Budget, update the current_balance
of the budget./pay_period_for
view to redirect to current pay period when called with no query parameters; add bookmarkable link to current pay period to Pay Periods view.Published by jantman over 7 years ago
DOCKER_TEST_TAG
.Published by jantman over 7 years ago
Initial release.