1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/ihatemoney_ynh.git synced 2024-09-03 19:26:15 +02:00
Commit graph

41 commits

Author SHA1 Message Date
Baptiste Jonglez
8e5ac8ae98 Optimise SQL queries when computing balance
This avoids creating thousands of small SQL queries when computing the
balance of users.  This significantly improves the performance of
displaying the main page of a project, since the balance of users is
displayed there:

    Before this commit: 4004 SQL queries, 19793 ms elapsed time, 19753 ms CPU time, 2094 ms SQL time
    After this commit:    12 SQL queries,  3688 ms elapsed time,  3753 ms CPU time,   50 ms SQL time
    Measured request:   display the sidebar with the balance of all users for the project (without displaying the list of bills)

This commit also greatly improves the performance of the "settle bills" page:

    Before this commit: 8006 SQL queries, 39167 ms elapsed time, 39600 ms CPU time, 4141 ms SQL time
    After this commit:    22 SQL queries,  7144 ms elapsed time,  7283 ms CPU time,   96 ms SQL time
    Measured request:   display the "Settle bills" page

Test setup to measure performance improvement:

- 5 users with various weights
- 1000 bills, each paid by a random user, each involving all 5 users
- laptop with Celeron N2830@2.16 GHz, SSD Samsung 850 EVO
- sqlite database on SSD, using sqlite 3.15.2
- python 2.7.13
- Flask-DebugToolbar 0.10.0 (to count SQL queries and loading time)

Performance measurements (using Flask-DebugToolbar on the second request,
to avoid measuring cold-cache performance):

- number of SQL queries
- elapsed time (from request to response)
- total CPU time consumed by the server handling the request
- total time spent on SQL queries (as reported by SQLAlchemy)
2017-01-02 13:09:26 +01:00
Jocelyn Delande
7a630b78ea Hide the member weights in members list if all weights are "1". 2016-06-16 15:52:24 +02:00
Jocelyn Delande
06f10d0508 Added member weights support to API 2016-06-15 10:20:37 +02:00
Jocelyn Delande
2b071a1a3b Add members weight in models and budget backend refs #94 2016-06-15 10:20:37 +02:00
Alexandre Avenel
b9458db08e Bugfix rounding settle algorithm
In some cases, settle algorithm failed to deliver optimal solution due to a rounding bug.
2015-07-05 22:16:38 +02:00
Jocelyn Delande
2b598477b7 specified sizes for string columns for MySQL 2015-05-01 18:28:40 +02:00
Alexandre Avenel
79f24b7cb8 Format numbers in templates 2014-07-22 20:19:35 +02:00
Alexandre Avenel
9236c13213 Fix rounding error in balances 2014-07-21 22:23:30 +02:00
A.Avenel
6f9fe3c159 bugfix #104 : ZeroDivisionError
- test if self.owers is null before returning value
2013-10-12 17:28:15 +02:00
Alexis Metaireau
a71d249e6c Merge pull request #96 from aavenel/master
New feature : Settle the bill
2013-05-09 18:32:55 -07:00
A.Avenel
ff9ead2203 Optimization 2013-05-09 23:23:23 +02:00
A.Avenel
4d329a76ae Bugfix#92 : error when deleting an user 2013-04-08 11:29:31 +02:00
A.Avenel
0d7c82b122 More code cleanup for "settle bills" 2013-04-07 22:14:32 +02:00
A.Avenel
1fa0cff180 use "member.id" instead of "member" 2013-04-07 20:25:25 +02:00
A.Avenel
b410e48851 Merge branch 'flask0.9' of github.com:aavenel/ihatemoney 2013-02-19 15:36:37 +01:00
A.Avenel
bfea4e436f update for flask 0.9 2013-02-18 19:18:49 +01:00
A.Avenel
2b51131aa4 Merge git://github.com/Lastpixl/ihatemoney into HEAD
Conflicts:
	budget/templates/layout.html
	budget/templates/list_bills.html
2012-11-03 17:34:05 +01:00
Alexis Metaireau
599895cac3 Switched to the new naming scheme for extensions 2012-05-19 15:09:57 +02:00
Frédéric Sureau
c343bf96ea Merge branch 'master' of git://github.com/spiral-project/ihatemoney 2012-03-28 17:02:02 +02:00
Xavier Mehrenberger
cb13fbb782 Split bills function and basic template. 2012-03-12 01:35:28 +01:00
Feth AREZKI
9583fe3cbe code reread: noop, and pep8 <3 2012-03-06 20:37:32 +01:00
Frédéric Sureau
caf9b6fcc2 Correct bug in members model. The has_bills method did not worked as expected. Fix #73. 2012-01-28 12:40:10 +01:00
A.Avenel
1a5abcfbf2 Fix for a bug introduced in last commit : crash of dashboard view when there is no bill. 2011-12-03 22:25:19 +01:00
Arnaud Bos
f3972db96a Add a way to delete a project. Fix #63 2011-11-02 12:16:01 +01:00
Alexis Metaireau
6f4f04b117 Document the API. Fix #46 2011-10-18 23:26:13 +02:00
Alexis Metaireau
6e3834048b Use the relation table for "has_bills".
This fixes a bug related to the way we made joins to query q postgresql db.
I found that we didn't needed at all any join, so a simple lookup in the m2m relation table allows to speed up things.

Fix #44
2011-10-18 17:48:23 +02:00
Alexis Metaireau
f61d1432c7 Translate the application using Flask-babel.
The only translation so far is french, but more can be added. The browser language
is used thanks to the HTTP languages headers.

There are still some problems with the translation of some strings, I don't know
why this is. See #12
2011-10-15 01:19:19 +02:00
Alexis Metaireau
97132ce88a Fix some problems related to postgresql and models 2011-10-13 21:27:56 +02:00
Alexis Metaireau
7d9fde0460 Round the balance. Fix #1 2011-10-08 16:43:46 +02:00
Alexis Metaireau
48bc551853 Complete the REST API + Tests. Fix #27 2011-10-08 13:27:30 +02:00
Alexis Metaireau
b0d41291af API: Create and Update support 2011-09-13 22:58:53 +02:00
Alexis Metaireau
e13ceaf351 REST API is now able to list stuff \o/ 2011-09-13 18:15:07 +02:00
Alexis Metaireau
d2e2260e52 Add a serialization mechanism 2011-09-13 11:27:36 +02:00
Alexis Metaireau
45dc6edacb Move some logic to the models and add comments. 2011-09-09 19:57:28 +02:00
Alexis Metaireau
801802836a Start working on archive management 2011-09-09 19:14:19 +02:00
Alexis Metaireau
822058b251 Add some more tests about membership. (#14)
Fixes #15 as invalid: deactivated users are not listed on the bill form or on the balance.
2011-08-10 17:49:35 +02:00
Frédéric Sureau
0e5bab13af Users are deleted when no bill is assigned to them. Fixes #5 2011-08-09 19:34:46 +02:00
Alexis Metaireau
769bcbf3f1 Makes the computation working. 2011-07-31 23:55:18 +02:00
Alexis Metaireau
2df6e11f05 Adding a bill is now working properly 2011-07-31 00:41:28 +02:00
Alexis Metaireau
a3b49a231f Manage users creation 2011-07-23 20:36:13 +02:00
Alexis Metaireau
5e63a5034b Split the logic into different python modules:
* web.py contains the controllers (also called views) + url definitions
* models.py contains the models
* forms.py contains the forms
* utils.py contains a set of utility fonctions to ease the dev. process
2011-07-23 18:45:40 +02:00