Skip to content

Commit

Permalink
Finish v15.5
Browse files Browse the repository at this point in the history
  • Loading branch information
SpaceFox committed May 3, 2015
2 parents c2c6ba8 + 524c4cf commit e0d295f
Show file tree
Hide file tree
Showing 147 changed files with 3,060 additions and 7,813 deletions.
12 changes: 8 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,7 @@ python:
- 2.7

env:
- TEST_APP="-e back_mysql zds.tutorial"
CFLAGS="-O0"
- TEST_APP="-e back_mysql zds.article zds.forum zds.member zds.utils zds.gallery zds.mp zds.pages"
CFLAGS="-O0"
- TEST_APP="-e back_mysql"
- TEST_APP="-e front"

notifications:
Expand All @@ -25,6 +22,13 @@ cache:
- apt

before_script:
# configure mysql
- mysql -e "SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES'" # Travis default
# try to avoid mysql has gone away errors
- mysql -e "SET GLOBAL wait_timeout = 36000;"
- mysql -e "SET GLOBAL max_allowed_packet = 134209536;"
- mysql -e "SHOW VARIABLES LIKE 'max_allowed_packet';"
- mysql -e "SHOW VARIABLES LIKE 'wait_timeout';"
# database services
- mysql -e 'create database zds_test;'
- sudo mv zds/settings_test.py zds/settings_prod.py
Expand Down
14 changes: 7 additions & 7 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ Les contributions externes sont les bienvenues !
4. Assurez-vous que l'intégralité des tests passent : `python manage.py test`
5. Assurez-vous que le code suit la [PEP-8](http://legacy.python.org/dev/peps/pep-0008/) : `tox -e flake8`
6. Si vous avez fait des modifications du _front_, jouez les tests associés : `npm test`
7. Si vous modifiez le modèle (les fichiers models.py), n'oubliez pas de créer les fichiers de migration : `python manage.py schemamigration app_name --auto`
7. Si vous modifiez le modèle (les fichiers models.py), n'oubliez pas de créer les fichiers de migration : `python manage.py makemigrations`
8. Si votre travail nécessite des actions spécifiques lors du déploiement, précisez-les dans le fichier [update.md](update.md).
9. Poussez votre travail et faites une _pull request_

# Quelques bonnes pratiques
* Respectez [les conventions de code de Django](https://docs.djangoproject.com/en/1.6/internals/contributing/writing-code/coding-style/), ce qui inclut la [PEP 8 de Python](http://legacy.python.org/dev/peps/pep-0008/)
* Respectez [les conventions de code de Django](https://docs.djangoproject.com/en/1.7/internals/contributing/writing-code/coding-style/), ce qui inclut la [PEP 8 de Python](http://legacy.python.org/dev/peps/pep-0008/)
* Le code et les commentaires sont en anglais
* Le _workflow_ Git utilisé est le [Git flow](http://nvie.com/posts/a-successful-git-branching-model/). En détail :
* Les arrivées fonctionnalités et corrections de gros bugs hors release se font via des PR.
Expand All @@ -42,11 +42,11 @@ Tous les détails sur le workflow se trouvent [sur la page dédiée](http://zds-
* Lors de l'ouverture d'une PR, respectez le template suivant :

```markdown
| Q | R
| ------------------------- | -------------------------------------------
| Correction de bugs ? | [oui|non]
| Nouvelle Fonctionnalité ? | [oui|non]
| Tickets (_issues_) concernés | [Liste de tickets séparés par des virgules]
| Q | R
| ----------------------------- | -------------------------------------------
| Correction de bugs ? | [oui|non]
| Nouvelle Fonctionnalité ? | [oui|non]
| Tickets (_issues_) concernés | [Liste de tickets séparés par des virgules]
```
* Ajoutez des notes de QA (Quality Assurance). Ces notes doivent permettent à un testeur de comprendre ce que vous avez modifié, ce qu'il faut tester en priorité et les pièges auxquels il doit s'attendre et donc sur lesquels porter une attention particulière. Précisez tout particulièrement s'il est nécessaire d'effectuer une action de gestion préalable, comme `python manage.py migrate`, `python manage.py loaddata fixture/*.yaml` ou `npm run gulp -- build`.

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

# Zeste de Savoir

Site internet communautaire codé à l'aide du framework [Django](https://www.djangoproject.com/) 1.6 et de [Python](https://www.python.org/) 2.7.
Site internet communautaire codé à l'aide du framework [Django](https://www.djangoproject.com/) 1.7 et de [Python](https://www.python.org/) 2.7.

[Voir l'instance en ligne](https://zestedesavoir.com).

Expand Down
13 changes: 13 additions & 0 deletions doc/source/back-end-code.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
=====================================
Documentation technique du *back-end*
=====================================

Cette documentation est générée à partir des commentaires laissés dans le `code source de Zeste de Savoir <https://github.com/zestedesavoir/zds-site/>`__ au format *docstring*, et qui sont, pour des raisons d'internationalisation, rédigés en anglais.

Vous pouvez également retrouver la `documentation fonctionnelle des modules ici <back-end.html>`__.

.. toctree::
:maxdepth: 2
:glob:

back-end-code/*
123 changes: 123 additions & 0 deletions doc/source/back-end-code/arborescence-back.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
==========================
Arborescence du *back-end*
==========================

Le *back-end* est divisé en différents modules qui assurent chacun une tâche du site. Ceux-ci sont intégralement localisés dans le dossier ``zds/``.

Arborescence générale de ``zds/``
=================================

On retrouve un dossier pour chaque module du site :

.. sourcecode:: bash

zds/
├── article/ # module des articles
│   └── ...
├── forum/ # module des forums
│   └── ...
├── gallery/ # module des galleries
│   └── ...
├── member/ # module des membres
│   └── ...
├── mp/ # module des messages privés
│   └── ...
├── munin/ # module de Munin, utilisé pour le monitoring
│   └── ...
├── pages/ # module pour les autres pages, telles que la page d'accueil, ...
│   └── ...
├── search/ # module de recherche
│   └── ...
├── tutorial/ # module des tutoriels
│   └── ...
├── utils/ # fonctions utiles à chaque module
│   └── ...
├── middlewares/ # codes provenant de sources externes
│   └── ...

On retrouve également dans ce dossier les quelques fichiers suivants, nécessaires à la configuration et au fonctionnement de Django :

.. sourcecode:: bash

zds/
├── urls.py # définition générale des URLs du site, inclus celle de chacun des modules
├── settings.py # paramètres du site
├── settings_test.py # paramètres spécifiques aux tests
└── wsgi.py

Contenu d'un module
===================

Chacun des modules possède dans son dossier une arborescence fort semblable, et dans laquelle il est possible de trouver:

.. sourcecode:: bash

module/
├── migrations/
│   └── ...
├── api/
│   └── ...
├── tests/
│   ├── tests.py
│   └── ...
├── admin.py
├── commons.py
├── factories.py
├── feeds.py
├── forms.py
├── managers.py
├── models.py
├── search_indexes.py
├── urls.py
└── views.py

Fichiers principaux
-------------------

Django étant basé sur une architecture de type Modèle-Vue-Template, on retrouve les modèles dans le fichier ``models.py`` et les contrôles associés à celles-ci dans ``views.py``. Ces dernières peuvent employer des classes formulaires qui sont définis dans ``forms.py``. Les URLs associées au module et permetant d'accéder aux vues sont définies dans ``urls.py``. On retrouve finalement des vues spécifiques associées aux fils RSS et Atom dans ``feeds.py``.

On retrouve également des validateurs dans le fichier ``commons.py`` (voir à ce sujet `la documentation de Django <https://docs.djangoproject.com/fr/1.7/ref/validators/>`__).

Tests unitaires
---------------

Une partie importante du développement est basée sur les tests unitaires : afin d'éviter qu'un dévellopement futur ne brise une fonctionnalité, une série de test associé à chaque module est écrite dans des fichiers situés dans le dossier ``tests/`` de chaque module. Cette série de test peut être lancée en utilisant la commande suivante :

.. sourcecode:: bash

python manage.py test zds.module

où il est nécéssaire de remplacer ``module`` par le nom du module associé. Ces tests utilisent des données de tests générées par des *factories* (usines) qui sont définies dans ``factories.py``.

Gestion de la base de données
-----------------------------

Le dossier ``migrations/`` permet à Django de consigner les changements effectués à des modèles qui modifient également la structure de la base de donnée. Son contenu ne devrait pas être modifié manuelement, il l'est cependant de manière automatique lorsque la commande suivante est utilisée :

.. sourcecode:: bash

python manage.py makemigrations

Celle-ci doit être utilisée lorsqu'une variable d'un modèle (dans ``models.py``) est modifiée, ajoutée ou supprimée. Si tel est le cas, n'oubliez pas d'inclure le fichier résultant (de la forme ``xxxx_auto_yyy.py``) dans votre prochain *commit* !

Cela permettra aux autres développeurs de répercuter les modifications en utilisant:

.. sourcecode:: bash

python manage.py migrate


API
---

Une description fonctionnelle de l'API est faite `sur la page correspondante <../api.html>`__.

Les fichiers correspondants à une API du module (si elle existe) se situent dans le dossier ``api/``. Dans celui-ci, se trouvent principalement de nouvelles vues (``api/views.py``), URLs (``api/urls.py``) et tests (``api/tests.py``). On retrouve également des *serializers* dans ``api/serializers.py``, nécessaires à la création de l'API (voir à ce sujet `la documentation du REST framework (en) <http://www.django-rest-framework.org/api-guide/serializers/>`__).


Autres
------

Le fichier ``search_index.py`` est utilisé par Django pour générer les *index* de recherche pour `Solr <../install/install-solr.html>`__.

Le fichier ``admin.py`` est quand à lui employé par Django pour la partie administration (accessible en local via ``/admin/``).
19 changes: 19 additions & 0 deletions doc/source/back-end-code/article.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
===========================
Les articles (``article/``)
===========================

Module situé dans ``zds/article/``.

.. contents:: Fichiers documentés :

Modèles (``models.py``)
=======================

.. automodule:: zds.article.models
:members:

Vues (``views.py``)
===================

.. automodule:: zds.article.views
:members:
20 changes: 20 additions & 0 deletions doc/source/back-end-code/forum.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
=======================
Les forums (``forum/``)
=======================

Module situé dans ``zds/forum/``.

.. contents:: Fichiers documentés :


Modèles (``models.py``)
=======================

.. automodule:: zds.forum.models
:members:

Vues (``views.py``)
===================

.. automodule:: zds.forum.views
:members:
20 changes: 20 additions & 0 deletions doc/source/back-end-code/gallery.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
============================
Les galleries (``gallery/``)
============================

Module situé dans ``zds/gallery/``.


.. contents:: Fichiers documentés :

Modèles (``models.py``)
=======================

.. automodule:: zds.gallery.models
:members:

Vues (``views.py``)
===================

.. automodule:: zds.gallery.views
:members:
19 changes: 19 additions & 0 deletions doc/source/back-end-code/member.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
=========================
Les membres (``member/``)
=========================

Module situé dans ``zds/member/``.

.. contents:: Fichiers documentés :

Modèles (``models.py``)
=======================

.. automodule:: zds.member.models
:members:

Vues (``views.py``)
===================

.. automodule:: zds.member.views
:members:
13 changes: 13 additions & 0 deletions doc/source/back-end-code/pages.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
======================
Les pages (``pages/``)
======================

Module situé dans ``zds/pages/``.

.. contents:: Fichiers documentés :

Vues (``views.py``)
===================

.. automodule:: zds.pages.views
:members:
19 changes: 19 additions & 0 deletions doc/source/back-end-code/private-message.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
=============================
Les messages privés (``mp/``)
=============================

Module situé dans ``zds/mp/``.

.. contents:: Fichiers documentés :

Modèles (``models.py``)
=======================

.. automodule:: zds.mp.models
:members:

Vues (``views.py``)
===================

.. automodule:: zds.mp.views
:members:
19 changes: 19 additions & 0 deletions doc/source/back-end-code/tutorial.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
=============================
Les tutoriels (``tutorial/``)
=============================

Module situé dans ``zds/tutorial/``.

.. contents:: Fichiers documentés :

Modèles (``models.py``)
=======================

.. automodule:: zds.tutorial.models
:members:

Vues (``views.py``)
===================

.. automodule:: zds.tutorial.views
:members:
Loading

0 comments on commit e0d295f

Please sign in to comment.