Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
86c5b91697 | |||
9168840e64 | |||
21b9cfa8b8 | |||
b0b3b3acb1 |
75
README.rst
75
README.rst
@ -17,46 +17,7 @@ accounting reports:
|
||||
In addition, *Mia! Accounting* tracks offsets for unpaid payables and
|
||||
receivables.
|
||||
|
||||
You may try the `Mia! Accounting live demonstration`_.
|
||||
|
||||
|
||||
History
|
||||
=======
|
||||
|
||||
I created my own private accounting application in Perl_/mod_perl_ in
|
||||
2007, as part of my personal website. The first revision was made
|
||||
using Perl/Mojolicious_ in 2019, with the aim of making it
|
||||
mobile-friendly using Bootstrap_, and with modern back-end and
|
||||
front-end technologies such as jQuery.
|
||||
|
||||
The second revision was done in Python_/Django_ in 2020, as I was
|
||||
looking to change my career from PHP_/Laravel_ to Python, but lacked
|
||||
experience with large Python projects. I wanted to add something new
|
||||
to my portfolio and decided to work on the somewhat outdated
|
||||
Mojolicious project.
|
||||
|
||||
Despite having no prior experience with Django, I spent two months
|
||||
working late nights to create the `Mia! Account Django application`_.
|
||||
It took me another 1.5 months to make it an independent module, which
|
||||
I later released as an open source project.
|
||||
|
||||
The application worked nicely for my household bookkeeping for two
|
||||
years. However, new demands arose over time, especially with tracking
|
||||
payables and receivables, which became difficult with credit card
|
||||
payments. This was critical `during the pandemic`_ as more payments
|
||||
were made online with credit cards.
|
||||
|
||||
The biggest issue I encountered was with Django's MVT framework. Due
|
||||
to my lack of experience with Django during development, I ended up
|
||||
with mixed function-based view controllers and class-based views. It
|
||||
became very difficult to track whether problems originated from my
|
||||
overridden methods or not-overridden methods, or from the Django base
|
||||
views themselves. I did not fully understand how everything worked.
|
||||
|
||||
Therefore, I decided to turn to microframeworks like Flask. After
|
||||
working with modularized Flask and FastAPI_ applications for two
|
||||
years, I returned to the project and wrote its third revision using
|
||||
Flask in 2023.
|
||||
You may try the `live demonstration`_.
|
||||
|
||||
|
||||
Installation
|
||||
@ -91,7 +52,7 @@ Configuration
|
||||
=============
|
||||
|
||||
You need to pass the Flask *app* and an implementation of
|
||||
``UserUtilityInterface`` to the ``init_app`` function.
|
||||
`UserUtilityInterface`_ to the `init_app`_ function.
|
||||
``UserUtilityInterface`` contains everything *Mia! Accounting* needs.
|
||||
|
||||
The following is an example configuration for *Mia! Accounting*.
|
||||
@ -109,7 +70,7 @@ The following is an example configuration for *Mia! Accounting*.
|
||||
|
||||
import accounting
|
||||
|
||||
class UserUtilities(accounting.UserUtilityInterface[User]):
|
||||
class UserUtils(accounting.UserUtilityInterface[User]):
|
||||
|
||||
def can_view(self) -> bool:
|
||||
return True
|
||||
@ -161,8 +122,8 @@ database tables that *Mia! Accounting* uses.
|
||||
* ``accounting-init-accounts``
|
||||
* ``accounting-init-currencies``
|
||||
|
||||
You need to run ``accounting-init-base`` first, and then the other
|
||||
two commands.
|
||||
After database tables are created, run
|
||||
``accounting-init-base`` first, and then the other two commands.
|
||||
|
||||
::
|
||||
|
||||
@ -242,29 +203,19 @@ Authors
|
||||
|
||||
.. _Flask: https://flask.palletsprojects.com
|
||||
.. _double-entry bookkeeping: https://en.wikipedia.org/wiki/Double-entry_bookkeeping
|
||||
.. _Mia! Accounting live demonstration: https://accounting.imacat.idv.tw/
|
||||
.. _Perl: https://www.perl.org
|
||||
.. _mod_perl: https://perl.apache.org
|
||||
.. _Mojolicious: https://mojolicious.org
|
||||
.. _Bootstrap: https://getbootstrap.com
|
||||
.. _jQuery: https://jquery.com
|
||||
.. _Python: https://www.python.org
|
||||
.. _Django: https://www.djangoproject.com
|
||||
.. _PHP: https://www.php.net
|
||||
.. _Laravel: https://laravel.com
|
||||
.. _Mia! Account Django application: https://github.com/imacat/mia-accounting-django
|
||||
.. _during the pandemic: https://en.wikipedia.org/wiki/COVID-19_pandemic
|
||||
.. _FastAPI: https://fastapi.tiangolo.com
|
||||
.. _FontAwesome: https://fontawesome.com
|
||||
.. _Decimal.js: https://mikemcl.github.io/decimal.js
|
||||
.. _Tempus-Dominus: https://getdatepicker.com
|
||||
.. _CDN: https://en.wikipedia.org/wiki/Content_delivery_network
|
||||
.. _live demonstration: https://accounting.imacat.idv.tw
|
||||
.. _PyPI project page: https://pypi.org/project/mia-accounting
|
||||
.. _release page: https://github.com/imacat/mia-accounting/releases
|
||||
.. _Git repository: https://github.com/imacat/mia-accounting
|
||||
.. _CDN: https://en.wikipedia.org/wiki/Content_delivery_network
|
||||
.. _Bootstrap: https://getbootstrap.com
|
||||
.. _FontAwesome: https://fontawesome.com
|
||||
.. _Decimal.js: https://mikemcl.github.io/decimal.js
|
||||
.. _Tempus-Dominus: https://getdatepicker.com
|
||||
.. _UserUtilityInterface: https://mia-accounting.readthedocs.io/en/latest/accounting.utils.html#accounting.utils.user.UserUtilityInterface
|
||||
.. _init_app: https://mia-accounting.readthedocs.io/en/latest/accounting.html#accounting.init_app
|
||||
.. _flask_sqlalchemy.SQLAlchemy.create_all: https://flask-sqlalchemy.palletsprojects.com/en/3.0.x/api/#flask_sqlalchemy.SQLAlchemy.create_all
|
||||
.. _Bootstrap navigation bar: https://getbootstrap.com/docs/5.3/components/navbar/
|
||||
.. _test site: https://github.com/imacat/mia-accounting/tree/main/tests/test_site
|
||||
.. _source distribution: https://pypi.org/project/mia-accounting/#files
|
||||
.. _live demonstration: https://accounting.imacat.idv.tw
|
||||
.. _documentation on Read the Docs: https://mia-accounting.readthedocs.io
|
||||
|
@ -13,7 +13,7 @@ sys.path.insert(0, os.path.abspath('../../src/'))
|
||||
project = 'Mia! Accounting'
|
||||
copyright = '2023, imacat'
|
||||
author = 'imacat'
|
||||
release = '1.0.0'
|
||||
release = '1.0.1'
|
||||
|
||||
# -- General configuration ---------------------------------------------------
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
|
||||
|
@ -22,7 +22,7 @@ The following is an example configuration for *Mia! Accounting*.
|
||||
|
||||
import accounting
|
||||
|
||||
class UserUtilities(accounting.UserUtilityInterface[User]):
|
||||
class UserUtils(accounting.UserUtilityInterface[User]):
|
||||
|
||||
def can_view(self) -> bool:
|
||||
return True
|
||||
|
57
docs/source/history.rst
Normal file
57
docs/source/history.rst
Normal file
@ -0,0 +1,57 @@
|
||||
History
|
||||
=======
|
||||
|
||||
I created my own private accounting application in Perl_/mod_perl_ in
|
||||
2007, as part of my personal website. The first revision was made
|
||||
using Perl/Mojolicious_ in 2019, with the aim of making it
|
||||
mobile-friendly using Bootstrap_, and with modern back-end and
|
||||
front-end technologies such as jQuery.
|
||||
|
||||
The second revision was done in Python_/Django_ in 2020, as I was
|
||||
looking to change my career from PHP_/Laravel_ to Python, but lacked
|
||||
experience with large Python projects. I needed something in my
|
||||
portfolio and decided to work on the somewhat outdated Mojolicious
|
||||
project.
|
||||
|
||||
Despite having no prior experience with Django, I spent two months
|
||||
working late nights to create the `Mia! Accounting Django`_
|
||||
application. It took me another 1.5 months to make it an independent
|
||||
module, which I later released as an open source project on PyPI.
|
||||
|
||||
The application worked nicely for my household bookkeeping for two
|
||||
years. However, new demands arose over time, especially with tracking
|
||||
payables and receivables. This was critical `during the pandemic`_ as
|
||||
more payments were made online with credit cards.
|
||||
|
||||
The biggest issue I encountered was with
|
||||
`Django's MTV architectural pattern`_. Django takes over the control
|
||||
flow. I had to override several parts of the `class-based views`_ for
|
||||
different but yet simple control flow logic. In the end, it became
|
||||
very difficult to track whether things went wrong because I overrode
|
||||
something or because it just wouldn't work with the basic assumption
|
||||
of the class-based views. By the time I realized it, it was too late
|
||||
for me to drop Django's MTV and rewrite everything from class-based
|
||||
views to function-based views.
|
||||
|
||||
Therefore, I decided to turn to microframeworks_ like Flask_. After
|
||||
working with modularized Flask and FastAPI_ applications for two
|
||||
years, I returned to the project and wrote its third revision using
|
||||
Flask in 2023.
|
||||
|
||||
|
||||
.. _Perl: https://www.perl.org
|
||||
.. _mod_perl: https://perl.apache.org
|
||||
.. _Mojolicious: https://mojolicious.org
|
||||
.. _Bootstrap: https://getbootstrap.com
|
||||
.. _jQuery: https://jquery.com
|
||||
.. _Python: https://www.python.org
|
||||
.. _Django: https://www.djangoproject.com
|
||||
.. _PHP: https://www.php.net
|
||||
.. _Laravel: https://laravel.com
|
||||
.. _Mia! Accounting Django: https://github.com/imacat/mia-accounting-django
|
||||
.. _during the pandemic: https://en.wikipedia.org/wiki/COVID-19_pandemic
|
||||
.. _FastAPI: https://fastapi.tiangolo.com
|
||||
.. _Django's MTV architectural pattern: https://docs.djangoproject.com/en/dev/faq/general/#django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names
|
||||
.. _class-based views: https://docs.djangoproject.com/en/4.2/topics/class-based-views/
|
||||
.. _microframeworks: https://en.wikipedia.org/wiki/Microframework
|
||||
.. _Flask: https://flask.palletsprojects.com
|
@ -13,6 +13,7 @@ Welcome to Mia! Accounting's documentation!
|
||||
intro
|
||||
accounting
|
||||
examples
|
||||
history
|
||||
|
||||
|
||||
|
||||
|
@ -12,46 +12,7 @@ accounting reports:
|
||||
In addition, *Mia! Accounting* tracks offsets for unpaid payables and
|
||||
receivables.
|
||||
|
||||
You may try the `Mia! Accounting live demonstration`_.
|
||||
|
||||
|
||||
History
|
||||
-------
|
||||
|
||||
I created my own private accounting application in Perl_/mod_perl_ in
|
||||
2007, as part of my personal website. The first revision was made
|
||||
using Perl/Mojolicious_ in 2019, with the aim of making it
|
||||
mobile-friendly using Bootstrap_, and with modern back-end and
|
||||
front-end technologies such as jQuery.
|
||||
|
||||
The second revision was done in Python_/Django_ in 2020, as I was
|
||||
looking to change my career from PHP_/Laravel_ to Python, but lacked
|
||||
experience with large Python projects. I wanted to add something new
|
||||
to my portfolio and decided to work on the somewhat outdated
|
||||
Mojolicious project.
|
||||
|
||||
Despite having no prior experience with Django, I spent two months
|
||||
working late nights to create the `Mia! Account Django application`_.
|
||||
It took me another 1.5 months to make it an independent module, which
|
||||
I later released as an open source project.
|
||||
|
||||
The application worked nicely for my household bookkeeping for two
|
||||
years. However, new demands arose over time, especially with tracking
|
||||
payables and receivables, which became difficult with credit card
|
||||
payments. This was critical `during the pandemic`_ as more payments
|
||||
were made online with credit cards.
|
||||
|
||||
The biggest issue I encountered was with Django's MVT framework. Due
|
||||
to my lack of experience with Django during development, I ended up
|
||||
with mixed function-based view controllers and class-based views. It
|
||||
became very difficult to track whether problems originated from my
|
||||
overridden methods or not-overridden methods, or from the Django base
|
||||
views themselves. I did not fully understand how everything worked.
|
||||
|
||||
Therefore, I decided to turn to microframeworks like Flask. After
|
||||
working with modularized Flask and FastAPI_ applications for two
|
||||
years, I returned to the project and wrote its third revision using
|
||||
Flask in 2023.
|
||||
You may try the `live demonstration`_.
|
||||
|
||||
|
||||
Installation
|
||||
@ -97,7 +58,7 @@ Database Initialization
|
||||
-----------------------
|
||||
|
||||
After the configuration, you need to run
|
||||
:py:meth:`flask_sqlalchemy.SQLAlchemy.create_all` to create the
|
||||
`flask_sqlalchemy.SQLAlchemy.create_all`_ to create the
|
||||
database tables that *Mia! Accounting* uses.
|
||||
|
||||
*Mia! Accounting* adds three console commands:
|
||||
@ -106,8 +67,8 @@ database tables that *Mia! Accounting* uses.
|
||||
* ``accounting-init-accounts``
|
||||
* ``accounting-init-currencies``
|
||||
|
||||
You need to run ``accounting-init-base`` first, and then the other
|
||||
two commands.
|
||||
After database tables are created, run
|
||||
``accounting-init-base`` first, and then the other two commands.
|
||||
|
||||
::
|
||||
|
||||
@ -161,28 +122,17 @@ Refer to the `documentation on Read the Docs`_.
|
||||
|
||||
.. _Flask: https://flask.palletsprojects.com
|
||||
.. _double-entry bookkeeping: https://en.wikipedia.org/wiki/Double-entry_bookkeeping
|
||||
.. _Mia! Accounting live demonstration: https://accounting.imacat.idv.tw/
|
||||
.. _Perl: https://www.perl.org
|
||||
.. _mod_perl: https://perl.apache.org
|
||||
.. _Mojolicious: https://mojolicious.org
|
||||
.. _Bootstrap: https://getbootstrap.com
|
||||
.. _jQuery: https://jquery.com
|
||||
.. _Python: https://www.python.org
|
||||
.. _Django: https://www.djangoproject.com
|
||||
.. _PHP: https://www.php.net
|
||||
.. _Laravel: https://laravel.com
|
||||
.. _Mia! Account Django application: https://github.com/imacat/mia-accounting-django
|
||||
.. _during the pandemic: https://en.wikipedia.org/wiki/COVID-19_pandemic
|
||||
.. _FastAPI: https://fastapi.tiangolo.com
|
||||
.. _FontAwesome: https://fontawesome.com
|
||||
.. _Decimal.js: https://mikemcl.github.io/decimal.js
|
||||
.. _Tempus-Dominus: https://getdatepicker.com
|
||||
.. _CDN: https://en.wikipedia.org/wiki/Content_delivery_network
|
||||
.. _live demonstration: https://accounting.imacat.idv.tw
|
||||
.. _PyPI project page: https://pypi.org/project/mia-accounting
|
||||
.. _release page: https://github.com/imacat/mia-accounting/releases
|
||||
.. _Git repository: https://github.com/imacat/mia-accounting
|
||||
.. _CDN: https://en.wikipedia.org/wiki/Content_delivery_network
|
||||
.. _Bootstrap: https://getbootstrap.com
|
||||
.. _FontAwesome: https://fontawesome.com
|
||||
.. _Decimal.js: https://mikemcl.github.io/decimal.js
|
||||
.. _Tempus-Dominus: https://getdatepicker.com
|
||||
.. _flask_sqlalchemy.SQLAlchemy.create_all: https://flask-sqlalchemy.palletsprojects.com/en/3.0.x/api/#flask_sqlalchemy.SQLAlchemy.create_all
|
||||
.. _Bootstrap navigation bar: https://getbootstrap.com/docs/5.3/components/navbar/
|
||||
.. _test site: https://github.com/imacat/mia-accounting/tree/main/tests/test_site
|
||||
.. _source distribution: https://pypi.org/project/mia-accounting/#files
|
||||
.. _live demonstration: https://accounting.imacat.idv.tw
|
||||
.. _documentation on Read the Docs: https://mia-accounting.readthedocs.io
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
[project]
|
||||
name = "mia-accounting"
|
||||
version = "1.0.0"
|
||||
version = "1.0.1"
|
||||
description = "A Flask accounting module."
|
||||
readme = "README.rst"
|
||||
requires-python = ">=3.11"
|
||||
|
Reference in New Issue
Block a user