Chrono
======

Chrono provides a set of management interfaces and web services to register
for activities and stuff.


Installation
------------

Chrono can be installed along with its dependencies,

 $ pip install -e /path/to/chrono/sources/repo

It's then required to get the database configured (./manage.py migrate); by
default it will create a postgresqsl DB.

You can then run the Django test server for a quick try (you should refer to
the Django documentation for production deployments).

 $ ./manage.py runserver


Settings
--------

Default settings are loaded from settings.py, they can be overloaded by a
local_settings.py file set in the same directory, or by a file referenced
in the CHRONO_SETTINGS_FILE environment variable.


Code Style
----------

black is used to format the code, using thoses parameters:

    black --target-version py35 --skip-string-normalization --line-length 110

isort is used to format the imports, using those parameters:

    isort --profile black --line-length 110

pyupgrade is used to automatically upgrade syntax, using those parameters:

    pyupgrade --keep-percent-format --py37-plus

django-upgrade is used to automatically upgrade Django syntax, using those parameters:

    django-upgrade --target-version 3.2

djhtml is used to automatically indent html files, using those parameters:

    djhtml --tabwidth 2

There is .pre-commit-config.yaml to use pre-commit to automatically run black,
isort, pyupgrade, django-upgrade and djhtml before commits. (execute
`pre-commit install` to install the git hook.)


Tests
-----

    pip install pytest pytest-django pytest-mock
    DJANGO_SETTINGS_MODULE=welco.settings py.test tests/


Use of Generative AI
--------------------

This project does not allow contributions generated by large languages
models (LLMs) and chatbots. This ban includes tools like ChatGPT,
Claude, Copilot, DeepSeek, and Devin AI. We are taking this step as
precaution due to the potential negative influence of AI generated
content on quality, as well as a general stance against those systems
raising numerous ecological and ethical issues.

This ban of AI generated content applies to all parts of the project,
including, but not limited to, code, documentation, issues, and artworks.


License
-------

This program is free software: you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your option) any
later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
details.

You should have received a copy of the GNU Affero General Public License along
with this program.  If not, see <http://www.gnu.org/licenses/>.
