Commit graph

37 commits

Author SHA1 Message Date
Daniel Atwood
0fd2958865
Populate the demo project with defaults. (#616) 2020-05-24 11:45:34 +02:00
zorun
df6ffc7d86
Improve error handling when sending emails (#595)
In one case, we were not catching a family of possible exceptions
(socket.error), and in the two other cases there was no error handling at
all. Sending emails can easily fail if no email server is configured, so
it is really necessary to handle these errors instead of crashing with a
HTTP 500 error.

Refactor email sending code and add proper error handling.

Show alert messages that tell the user if an email was sent or if there
was an error.

When sending a password reminder email or inviting people by email, we
don't proceed to the next step in case of error, because sending emails is
the whole point of these actions.
2020-05-21 21:13:33 +02:00
Glandos
981edd413a
Improve currencies (#604)
- Rename "No Currency" to ISO4217 "XXX"
- Use Babel to render currency symbols and names in currency lists
- Improve i18n in bill lists

Fix #601
Fix #600
2020-05-07 22:56:17 +02:00
dark0dave
f389c56259
Feature/currencies (#541)
Now each project can have a currency, default to None.
Each bill can use a different currency, and a conversion to project default currency is done on settle.

Fix #512
2020-04-29 22:57:08 +02:00
zorun
c509896b8c
Add support for different categories of "flash alerts" (#594) 2020-04-26 23:17:48 +02:00
zorun
08bb95422b
Fix crash when a localized email template is missing (#592) 2020-04-26 23:12:33 +02:00
zorun
d6d084f26a
Fix translations (#575)
* Fix user-facing string and update translation catalog

In the flash message confirming member creation, change "member had been
added" into the correct form "member has been added".

No translation has been changed.  Some translators seem to have already
spotted the mistake while translating, but I can't tell for all languages.

* Change "Person" to "Participant" in history view

Currently, the main user-facing term is "Participant", as seen for
instance in the "Add participant" form.  "Person" is not used anywhere in
the interface.

See #302 for a more general discussion on choosing the right terminology.

* Fix obsolete translations.

Co-authored-by: Baptiste Jonglez <git@bitsofnetworks.org>
Co-authored-by: Rémy HUBSCHER <hubscher.remy@gmail.com>
2020-04-25 11:55:20 +02:00
Rémy HUBSCHER
7587e292fb
Remove obsolete python code (<3.6). (#571) 2020-04-24 12:32:52 +02:00
Rémy HUBSCHER
299c64a48c
Add isort support. (#561) 2020-04-21 13:59:41 +02:00
Andrew Dickinson
026a072235
Add Project History Page (#553)
Co-Authored-By: Glandos <bugs-github@antipoul.fr>

All project activity can be tracked, using SQLAlchemy-continuum.
IP addresses can optionally be recorded.
2020-04-20 15:30:27 +02:00
eMerzh
03251c090e
merge settings and import to avoid clutter (#550) 2020-04-08 14:00:24 +02:00
Charles Rose
4b79efe18a
updated web.py to make session permanent (#547)
* moved making session permanent to after authentication in web.py

Co-authored-by: Charlie Rose <charlierose@Charlies-MacBook-Pro.local>
2020-04-07 17:09:33 +02:00
zorun
9378694034
Paginate the list of bills (#480)
We display 100 bills on each page.  We only show previous/next buttons (at
the top of the view) and the list of pages (at the bottom) if there are
more than one pages.

This uses built-in pagination support from Flask-SQLAlchemy:

  https://flask-sqlalchemy.palletsprojects.com/en/2.x/api/#flask_sqlalchemy.BaseQuery.paginate
  https://flask-sqlalchemy.palletsprojects.com/en/2.x/api/#flask_sqlalchemy.Pagination
2020-02-20 09:43:00 +01:00
Edwin Smulders
02242f2e12
Initial montly expenses (#526) 2020-02-09 13:03:52 +01:00
Nicolas Vanvyve
9aa7e62d0f Import previously exported json data (#518)
Fix #417 

* New tab upload

* Extract data from JSON

* Add users

* Black format

* Try to add bill

* Import bills

* Add french translation msg

* Black reformat missing

* Deactivated users are supported

* Test import

* Remove temp file in upload_json()

* Incomplete tests

* tests import

* Update ihatemoney/translations/fr/LC_MESSAGES/messages.po

Co-Authored-By: Rémy HUBSCHER <hubscher.remy@gmail.com>

* Remove useless variable and check json format

* Use String.IO and test for wrong json

* Remove coma

Co-authored-by: Rémy HUBSCHER <hubscher.remy@gmail.com>
2020-01-13 21:17:55 +01:00
f260a2c9e7 Use black to refomat the files. 2019-10-14 21:20:38 +02:00
Brice Maron
b82d07c3eb Move translations in template and translate link 2019-09-18 21:27:52 +02:00
Leo Mouyna
fabceefece PR remarks 2019-09-16 21:35:28 +02:00
Leo Mouyna
db98010691 fix: display validation message on password reminder
Create a new route with a new generic page that display a title and a message on a <p> tag. This route will be triggered after succesfully submit password reminder form

See issue #455
2019-09-16 21:35:28 +02:00
Brice Maron
0edf8634a4 Move export form to links 2019-08-26 19:59:55 +00:00
Brice Maron
fd49599cc7 Arrange navbar items by functions 2019-08-18 21:37:20 +00:00
24e0d8348f
Fix double-click when deleting a bill (#349) (#372)
When double-clicking on the delete button, the first click actually
deletes the bill, and the second click does the same action again. But
as the bill is already deleted, it displays a 404 page which can be
misleading.

This fix makes the app trigger a redirect when the bill seem to doesn't
exist, fixing this strange behaviour.
2018-09-03 20:53:37 +02:00
2eafb7260c
Add a favicon.ico route and logo. (#381)
Might fix #255
2018-08-11 00:13:53 +02:00
Glandos
c1b5eb1375 Remove strict_slashes for /
I don't know why, but on my setup (nginx + uwsgi), the `strict_slashes` (default to `True`) was causing an infinite loop.
I think it could be safely removed for this route only.
2018-08-05 14:57:55 +02:00
Jocelyn Delalande
036cd05e57 Move member stats computation to a dedicated method 2018-02-07 00:01:13 +01:00
Jocelyn Delalande
b1a4572e8c Change statistics data structure
Clearer data structure, and simpler template

This commit has a side effect: sidebar now hides disabled members.

IMHO, the disabled members should either be hidden or shown consistently between
sidebar and central table. Previous status was: shown in sidebar (if balance ≠
0) and hidden in central table.
2018-02-07 00:01:13 +01:00
3b2e11ab63 Include all .j2 files in the packaged version.
I've also renamed the templates to *.j2 in order to make things clearer
to others. Having extensions with the name of the locale doesn't seem to
be a good practice, and would need us to add the locales in the MANIFEST
file each time we add one.

Fix #305
2018-01-05 22:06:11 +01:00
0livd
c6f72e112b Use hashed passwords for projects (#286)
- Remove all occurences of clear text project passwords.
- Migrate the database to hash the previously stored passwords.
Closes #232
2017-12-21 13:57:01 +01:00
0livd
8a68ac0d5b Use token based auth in invitation e-mails (#280)
* Use token based auth in invitation e-mails

Invitation e-mails no longer contain the clear
text project password

* Skip invite page after project creation

- Replace ``The project identifier is demo, remember it!``
by ``Invite other people to join this project!``
(linking to the invite page)
- Encourage users to share the project password via other
communication means in the reminder email
2017-12-15 17:10:28 +01:00
Alexandre Avenel
2866c868d5 Fix some typos using codespell (#285) 2017-11-11 18:11:15 +01:00
0livd
b94bad829c Use token based auth to reset passwords (#269)
Send a mail containing a password reset
token link instead of sending a clear text
password.

Ref #232
2017-10-26 19:46:34 +02:00
0livd
293735eca7 Make authentication logic simpler and safer (#270)
* Fixed exposed password in session

The project password was set in clear text
in the session cookie. The cookie payload is
only base64 encoded so it must not be used to
store private information. The password is
simply replaced by a boolean.

* Simplify authentication logic
2017-10-23 23:03:44 +02:00
0livd
efd2b66ac6 Do not import the whole werkzeug pkg (#271) 2017-09-07 11:02:12 +02:00
0livd
7a918c9349 Enhance the dashboard. (#262)
* Update to a more flexible admin authentication
* Admin can now access any project
* Add delete and edit options in the dashboard
* Add a link to the dashboard in the nav bar

This is a rework of the changes proposed by @Olivd, so they can apply on top of
the latest master without trouble. All credit goes to him for the code.
2017-09-04 15:44:20 +02:00
0livd
2ec4fb589f Add a statistics tab (#257) 2017-08-21 23:51:32 +02:00
0livd
ec4a099f18 Protect admin endpoints against brute force attacks (#249)
* Protect admin endpoints against brute force attacks

Add a throttling mechanism to prevent a client brute
forcing the authentication form, based on its ip address
Closes #245

* Reset attempt counters if they get memory hungry
2017-08-20 12:37:12 +02:00
3a4282fd75 Absolute imports & some other improvements (#243)
* Use absolute imports and rename package to ihatemoney
* Add a ihatemoney command
* Factorize application creation logic
* Refactor the tests
* Update the wsgi.py module with the new create_app() function
* Fix some styling thanks to Flake8.
* Automate Flake8 check in the CI.
2017-07-07 00:06:56 +02:00
Renamed from budget/web.py (Browse further)