Add contributors documentations
parent
a68802b3b5
commit
f8a6c8a415
@ -0,0 +1,69 @@
|
||||
Altering the database
|
||||
=====================
|
||||
|
||||
Alter the model code
|
||||
--------------------
|
||||
|
||||
First alter the model code. Simply edit ``models.py`` and modify all required model classes.
|
||||
Make sure that your changes reflect on related classes as the migration should be consistent from one structure to another.
|
||||
|
||||
Do not commit your changes at that stage.
|
||||
|
||||
Generate the migration script
|
||||
-----------------------------
|
||||
|
||||
After you modify the database models, you need to generate a new schema
|
||||
migration script:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
python manage.py db migrate
|
||||
|
||||
This will generate a new script in ``migrations/versions`` that you must review
|
||||
before adding it for commit.
|
||||
|
||||
Because we use SQLite, make sure that you use batch operation for column changes and deletion. For instance:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
def downgrade():
|
||||
with op.batch_alter_table('fetch') as batch:
|
||||
batch.drop_column('last_check')
|
||||
batch.drop_column('error')
|
||||
|
||||
or
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
def upgrade():
|
||||
# spam_threshold is a X/15 based value, we're converting it to percent.
|
||||
for user in User.query.all():
|
||||
user.spam_threshold = int(100. * float(user.spam_threshold or 0.) / 15.)
|
||||
db.session.commit()
|
||||
|
||||
# set default to 80%
|
||||
with op.batch_alter_table('user') as batch:
|
||||
batch.alter_column('spam_threshold', default=80.)
|
||||
|
||||
Remove unneeded Alembic comments and add a proper description to your migration script.
|
||||
|
||||
Upgrade your local database
|
||||
---------------------------
|
||||
|
||||
At that point, to start working on the changed database structure, you will need to upgrade your local database. Make a backup of your database, then:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
python manage.py db upgrade
|
||||
|
||||
If any error arises, restore the backup, fix the migration script and try again.
|
||||
|
||||
Actually work on your feature or fix
|
||||
------------------------------------
|
||||
|
||||
If your changes to the database are related to a view or template, you may not work on these to reflect the changes and access the proper columns/tables.
|
||||
|
||||
Commit your work
|
||||
----------------
|
||||
|
||||
You may finally commit your work as a whole: database changes and view/template changes. Do not forget to add the migration script.
|
@ -0,0 +1,39 @@
|
||||
Development environment
|
||||
=======================
|
||||
|
||||
Docker containers
|
||||
-----------------
|
||||
|
||||
The development environment is quite similar to the production one. You should always use
|
||||
the ``testing`` version when developping. Simply uncomment the ``build`` directive on
|
||||
containers that you are working on and run:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
docker-compose build
|
||||
|
||||
whenever you want to re-build them.
|
||||
|
||||
Web administration
|
||||
------------------
|
||||
|
||||
The administration Web interface requires a proper dev environment that can easily be setup using ``virtualenv`` (make sure you are using Python 3) :
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
cd admin
|
||||
virtualenv .
|
||||
source bin/activate
|
||||
pip install -r requirements.txt
|
||||
|
||||
You can then export the path to the development database (use four slashes for absolute path):
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
export SQLALCHEMY_DATABASE_URI=sqlite:///path/to/dev.db
|
||||
|
||||
And finally run the server with debug enabled:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
python manage.py runserver
|
@ -0,0 +1,73 @@
|
||||
Development guidelines
|
||||
======================
|
||||
|
||||
Philosophy
|
||||
----------
|
||||
|
||||
The mailserver is designed as a whole, some images are therefore not best
|
||||
suited for reuse outside this project. All images should however follow
|
||||
Docker best practices and be as generic as possible :
|
||||
|
||||
- even if not suited for reuse, they should be simple enough to
|
||||
fit as base images for other projects,
|
||||
- interesting settings should be available as environment variables
|
||||
- base images should be well-trusted (officiel Alpine or Debian for instance).
|
||||
|
||||
Git workflow
|
||||
------------
|
||||
|
||||
Forking vs. committing
|
||||
``````````````````````
|
||||
|
||||
Linus' way of things sounds fine for now: if you find yourself implementing a
|
||||
new feature, either send me an email with a bunch of commits or use Github
|
||||
pull request feature. Maybe if the user base grows too much as well as the need
|
||||
for trust in a specific branch of the project, we can switch to a shared
|
||||
repository and add a couple of trusted committers.
|
||||
|
||||
Commits
|
||||
``````
|
||||
|
||||
This is a community project, thus commits should be readable enough for any of
|
||||
the contributors to guess the content by simply reading the comment or find a
|
||||
proper commit when one knows what he is looking for.
|
||||
|
||||
Usual standards remain: write english comments, single line short comments and
|
||||
additional multiline if required (keep in mind that the most important piece
|
||||
of information should fit in the first line).
|
||||
|
||||
Branches
|
||||
````````
|
||||
|
||||
You are of course free of naming you branches to your taste or even using
|
||||
master directly if you find this appropriate. Still, keep in mind that:
|
||||
|
||||
- a git email or a pull request should address a single feature a bug,
|
||||
so keep your branches as tidy as possible;
|
||||
- this is a small project with a limited number of forks and active threads
|
||||
on Github, so one might want to look at your fork and find the branch you
|
||||
are using to implement a specific feature; to avoid any hassle, we suggest
|
||||
that you use branch names prefixed with ``feat-`` or ``fix-`` and followed
|
||||
either by the name of the Github issue or a short and meaningful name.
|
||||
|
||||
Workflow
|
||||
````````
|
||||
|
||||
All commits will be merged to the main ``master`` branch for testing. New
|
||||
images are built by Docker Hub with the ``testing`` tag for each new commit on
|
||||
the ``master`` branch.
|
||||
|
||||
After some brief testing, urgent fixes will be cherry-picked to the current stable
|
||||
branch and new stable builds will be released.
|
||||
|
||||
At the end of every milestone, a new stable branch will be created from ``master``
|
||||
or any previous commit that matches the completion of the milestone.
|
||||
|
||||
Forked projects
|
||||
---------------
|
||||
|
||||
If you find yourself forking the project for a specific independant purpose
|
||||
(commercial use, different phylosophy or incompatible point of view), we would
|
||||
be glad if you let us know so that we can list interesting known forks and
|
||||
their specific features (and backport some of them if your implementation
|
||||
is free as well).
|
@ -0,0 +1,14 @@
|
||||
I18N and L10N
|
||||
=============
|
||||
|
||||
Using POEditor.com
|
||||
------------------
|
||||
|
||||
We are using integrations with POEditor.com for translating Mailu. If you would like to contribute to the localization process, feel free to ask us to add a language then you can contribute to translations.
|
||||
|
||||
The project : https://poeditor.com/join/project/VszspPuEpn
|
||||
|
||||
Using Poedit
|
||||
------------
|
||||
|
||||
If you prefer to work locally, Poedit is one of the best tools available out there. Feel free to commit on your own fork and pull request your translations.
|
@ -0,0 +1,33 @@
|
||||
Before requesting a pull
|
||||
========================
|
||||
|
||||
Update translations
|
||||
-------------------
|
||||
|
||||
Mailu uses Babel for internationalization and localization. Before any
|
||||
of your work is merged, you must make sure that your strings are internationalized
|
||||
using Babel.
|
||||
|
||||
If you used ``_``, ``{% trans %}`` and other Babel syntaxes in your code, run the
|
||||
following command to update the POT file:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pybabel extract -F babel.cfg -k lazy_gettext -o messages.pot mailu
|
||||
|
||||
The, update the translations:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pybabel update -i messages.pot -d mailu/translations
|
||||
|
||||
Please resolve fuzzy strings to the best of your knowledge.
|
||||
|
||||
Update information files
|
||||
------------------------
|
||||
|
||||
If you added a feature or fixed a bug or committed anything that is worth mentionning
|
||||
for the next upgrade, add it in the ``CHANGELOG.md`` file.
|
||||
|
||||
Also, if you would like to be mentionned by name or add a comment in ``AUTHORS.md``,
|
||||
feel free to do so.
|
Loading…
Reference in New Issue