Fix#803
On some systems, there is no configured local timezone, so LOCALTZ is
a fallback object, that don't fit use case for flask-babel.
Detect this and use 'UTC' instead
By formatting datetime on the server, we get nice localized datetime
strings that are adapted to the currently-selected language. Example:
- English: "Apr 26, 2020, 3:58:54 PM"
- French: "26 avr. 2020 à 15:58:54"
- German: "26.04.2020, 15:58:54"
- Spanish: "26 abr. 2020 15:58:54"
- Indonesian: "26 Apr 2020 15.58.54"
- Chinese: "2020年4月26日 下午3:58:54"
However, there is a downside: time is not adapted to the user timezone.
The solution is to define a timezone on the server: we use the server OS
timezone by default, and it can be customized through the
BABEL_DEFAULT_TIMEZONE setting. It's still not ideal, because it assumes
that all users are in the same timezone (the one configured on the server).
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
* Added support for multiple API versions
Note that no changes were made to the api, the code was refactored to allow for new versions of the api to be created down the road.
Here's what this would look like:
+-- api/
+-- v1/
+-- __init__.py
+-- resources.py
+-- v1_1/
+-- __init__.py
+-- resources.py
+-- v2/
+-- __init__.py
+-- resources.py
+-- __init__.py
+-- common.py
* reformatted using black
/Users/drthrash/PycharmProjects/ihatemoney/ihatemoney/api/v1/resources.py
reformatted /Users/drthrash/PycharmProjects/ihatemoney/ihatemoney/api/common.py
All done! ✨🍰✨
* Applying fix for unused import in init.py
https://stackoverflow.com/questions/31079047/python-pep8-class-in-init-imported-but-not-used
* Formatting changes recommended by black
All done! ✨🍰✨
1 file reformatted, 22 files left unchanged.
* 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
* 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.