Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - jat255

Pages: [1] 2
1
Bug Reports / Re: Cannot load budgets due to memory limits
« on: May 05, 2021, 02:48:04 PM »
Yeah, I think I'm actually going to continue to self-host the backend, since I've never been super comfortable with all this info on someone else's server, unencrypted. I trust Alex, but I'd rather have all of this stay on my own servers behind my VPN. As a benefit, I'm understanding how things work a little better under the hood, so maybe I'll find some time to do some playing around. I saw there was at one point an outstanding PR for searching and copy/paste from https://gitlab.com/palidanx/financier/-/commit/763fddcaab73489a1527c75afb55195d04c1b809 that I will try to implement on my fork.

2
Bug Reports / Re: Cannot load budgets due to memory limits
« on: May 05, 2021, 02:15:05 PM »
Like @asromzek suggested, I believe this is due to some sort of database pollution/corruption. I set up my own backend following the method of https://gitlab.com/josh-whitney/financier-backend, and after importing my most recent backup, I'm not having any problems with the machines that were previously crashing (and it's substantially faster since it's all on my local network).

3
Bug Reports / Re: Cannot load budgets due to memory limits
« on: May 03, 2021, 08:09:44 AM »
I have a script that backs up my budget using headless playwright that still works (must not be subject to the same memory limit as desktop Chrome?), so I have recent backups, meaning if I could purge the DB on the remote server and then let my client sync back, that might help, perhaps?

4
Bug Reports / Re: Cannot load budgets due to memory limits
« on: May 03, 2021, 08:05:32 AM »
That could certainly be. What's interesting is the massive memory use doesn't start until after all the network traffic has finished, and the problem occurs even when loading Financier in an incognito tab, so there shouldn't be any cache or anything hanging around. Actually, the only place I can use it is in my daily computer where I have a recent sync. That loads okay, but on any new machine I can't open it.

Our primary budget file's json is 5.8MiB, so fairly large, but I don't understand what's happening that could use 2 GB of RAM...

5
Bug Reports / Cannot load budgets due to memory limits
« on: May 02, 2021, 01:10:55 PM »
I posted a reply to another thread, but this is probably best off as a bug report.

As a regular user of financier for a few years now, my budget file has grown quite large. It takes a long time to sync, but as of the past few days, I actually cannot load my budget at all. During the syncing process, after the network transfers have finished, the "memory footprint" of the Financier tab grows to 2GB+, and then the tab crashes with the "Aw, Snap" message (SIGTRAP). Seemingly no matter how many times I try to load the page, I cannot get it to load. I have a backup of budget json file, but this is really not good.

Any ideas, @Alex ?


6
Just came around to post something similar... From a fresh start, Financier is crashing tabs for me because of memory usage. After downloading all the during the sync, the financier tab starts climbing in memory usage up until about 2.5GB of memory used (as measured by the Chrome task manager). Eventually, the tab crashes with the "Aw, Snap" message.

@Alex, have there been any changes to the app code, or is this just an artifact of a large budget file?

7
Bug Reports / Re: Bug with "undeletable" split transaction
« on: July 25, 2019, 04:50:37 PM »
I didn't originally write it (it's a fork of https://github.com/higoramp/python-financier), but I added some capabilities with regards to splits and transfers. I structure my bi-weekly paycheck as a split transaction with subtractions for all the deductions (healthcare, insurance, etc.) so I have a record of the gross wages. Since that doesn't typically change from week to week, I wrote a method that automates paycheck entry, including two transfers into a retirement account. It is not on the github (since it has private information), but I've been using it for about a year now without issues (until this issue popped up... not sure where it came from...).

Here's a sanitized version of what I'm using (this method goes in pythonfinancier/financier.py):

Code: [Select]
    def add_paycheck(self, account_name):
            """
            Add an instance of a paycheck to an account.

            Parameters
            ----------
            account_name : str
                Name of the account to use

            Returns
            -------
                JSON response of the database upon inserting the transaction
            """
            from datetime import datetime

            this_id = str(uuid.uuid4())
            memo = "2019 pay period ## paycheck"
            date = datetime.now().strftime('%Y-%m-%d')
            this_retire1_uuid = str(uuid.uuid4())
            this_retire2_uuid = str(uuid.uuid4())

            other_retire1_uuid = str(uuid.uuid4())
            other_retire2_uuid = str(uuid.uuid4())

            # getting account from either map or database
            account_id = self.find_account(account_name)['_id']
            retire_name = 'retirement account name'

            # getting payee or creating a new one
            payee_id = self.get_or_create_payee("my workplace")['_id']

            id_transaction = self.get_id_transaction(this_id)
            tr = self.get_transaction(id_transaction)

            net_value = 9999.99 * 100
            retire1_val = 888.88 * 100
            retire2_val = 777.77 * 100

            transactions = [{'value': -111.11 * 100,
                             'payee_name': '',
                             'category_name': 'incomeNextMonth',
                             'memo': '#split1',
                             'id': str(uuid.uuid4())},
                            {'value': -1 * retire1_val,
                             'payee_name': '',
                             'category_name': 'incomeNextMonth',
                             'memo': '#split2',
                             'transfer': other_retire1_uuid,
                             'id': this_retire1_uuid},
                            {'value': -1 * retire2_val,
                             'payee_name': '',
                             'category_name': 'incomeNextMonth',
                             'transfer': other_retire2_uuid,
                             'memo': '#split3',
                             'id': this_retire2_uuid},
                            {'value': -111.11 * 100,
                             'payee_name': '',
                             'category_name': 'incomeNextMonth',
                             'memo': '#split4',
                             'id': str(uuid.uuid4())},
                            {'value': -111.11 * 100,
                             'payee_name': '',
                             'category_name': 'incomeNextMonth',
                             'memo': '#split5',
                             'id': str(uuid.uuid4())},
                            {'value': -111.11 * 100,
                             'payee_name': '',
                             'category_name': 'incomeNextMonth',
                             'memo': '#split6',
                             'id': str(uuid.uuid4())},
                            {'value': -11.11 * 100,
                             'payee_name': '',
                             'category_name': 'incomeNextMonth',
                             'memo': '#split7',
                             'id': str(uuid.uuid4())},
                            {'value': -11.11 * 100,
                             'payee_name': '',
                             'category_name': 'incomeNextMonth',
                             'memo': '#split8',
                             'id': str(uuid.uuid4())},
                            {'value': -11.11 * 100,
                             'payee_name': '',
                             'category_name': 'incomeNextMonth',
                             'memo': '#split9',
                             'id': str(uuid.uuid4())},
                            {'value': -11.11 * 100,
                             'payee_name': '',
                             'category_name': 'incomeNextMonth',
                             'memo': '#split10',
                             'id': str(uuid.uuid4())},
                            {'value': 99999 * 100,
                             'payee_name': '',
                             'category_name': 'incomeNextMonth',
                             'memo': '#gross_wages',
                             'id': str(uuid.uuid4())}]

            for i, t in enumerate(transactions):
                t['category'] = self.find_category(t.pop('category_name'))['_id']
                if t['payee_name'] is not '':
                    t['payee'] = self.get_or_create_payee(t.pop('payee_name'))['_id']
                else:
                    # null payee
                    pass
                transactions\[i\] = t

            if not tr or '_id' not in tr:
                # category is "split"
                doc = {'_id': id_transaction, 'value': value,
                       'account': account_id,
                       'payee': payee_id, 'date': date,
                       'category': 'split', 'memo': memo,
                       'splits': transactions}
                self.logger.debug('Adding', doc)

                if '_rev' in tr:
                    doc['_rev'] = tr['_rev']
                self.logger.debug(
                    'importing transaction {0}'.format(doc['_id']))

                added_doc =  self.cdb.save(self.user_db, doc)

                inserted = self.find_transaction(memo=memo, date=date)[0][
                    'splits']

                self.save_transaction(account_name=retire_name,
                                      category_name=None,
                                      value=retire1_val,
                                      date=date,
                                      payee_name=None,
                                      memo='#retirement',
                                      id=other_retire1_uuid,
                                      transfer_id=this_retire1_uuid)

                self.save_transaction(account_name=retire_name,
                                      category_name=None,
                                      value=retire2_val,
                                      date=date,
                                      payee_name=None,
                                      memo='#retirement2',
                                      id=other_retire2_uuid,
                                      transfer_id=this_retire2_uuid)

                return added_doc
            else:
                self.logger.warning(
                    'transaction {0} has already been imported '.format(
                        tr['_id']))

So I suppose it's mostly manual still, but it would not be too much work to write a small extension to take the output of a ofx file or something and batch upload transactions.

8
Bug Reports / Re: Bug with "undeletable" split transaction
« on: July 25, 2019, 04:13:57 PM »
It worked! My savior :)

9
Bug Reports / Re: Bug with "undeletable" split transaction
« on: July 25, 2019, 04:07:21 PM »
I think it came about as a result of some code that I have to automatically enter my paychecks that I added using https://github.com/jat255/python-financier/

Using GET requests, I can see that there are no splits defined for that transaction, but I'm wondering if some other deleted transaction is referencing it and that's why the front-end is getting messed up. I can use PUTs to change the memo and set the value to 0, but I'm getting a 409 conflict response when I try to issue a DELETE on the document.

10
Bug Reports / Bug with "undeletable" split transaction
« on: July 25, 2019, 03:05:54 PM »
I think I've come across a bug in my budget...

I do split transactions for my paychecks. One of these splits is a transfer to an off-budget retirement account. I have two transactions in the retirement account that are listed as transfers to my checking account, but neither one has a matching split in the checking account. I cannot delete these transactions from my retirement account because it says "Cannot delete transfer of split transaction. This transfer is from a split transaction. To remove it, modify the split transaction this transfer originates from."

Is there a "super delete" option? I'm not sure how I ended up in this state.

11
Feature Requests / Re: Virtual Accounts or Categories
« on: April 20, 2018, 02:35:17 PM »
This could be a great addition to the "reports" section, or perhaps as a section with the "On/Off accounts" and "Closed accounts".

A dashboard of these different values on the reports page would be pretty cool (like a bunch of little tiles showing the balance, maybe with a sparkline view of the past X months or something). Then clicking on one of the tiles would open up that calculation as a graph of it's value over time.

Sounds like a great feature. Want to code it @Billy_McSkintos:P

12
Off-topic / Re: Where did Financier get it's name?
« on: February 22, 2018, 10:40:57 AM »
I would assume it has something to do with the cake, but I could be mistaken: https://en.wikipedia.org/wiki/Financier_(cake)

/s


Seriously, my guess is that it was a clever play on the title of a Financier, which is someone who controls lots of money (like the Monopoly man). As an aside, my wife and I pronounce it with a "long A" sound at the end (is in French) because it sounds fancier :)

13
Feature Requests / Re: A Place to keep notes....
« on: February 09, 2018, 04:40:30 PM »
That also looks like a great spot for a calendar, in case you wanted to use it for something related to scheduled transactions.

14
Announcements / Re: CouchDB maintenance & backups
« on: January 12, 2018, 04:29:38 PM »
... run the function after a complete pouchdb sync would be all you need @jat255.

Sadly, with my total lack of js knowledge, the easiest thing for me to do is write a selenium script with python to go get the backup, lol

15
Announcements / Re: CouchDB maintenance & backups
« on: January 12, 2018, 04:07:28 PM »
Gotcha. crypto-pouch would be a cool option. It could be disabled by default, but users could enable it with a big warning and clear understanding that no password = no data (even for the budget overlord).

Pages: [1] 2