Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/release-v24' into HEAD
Browse files Browse the repository at this point in the history
  • Loading branch information
vhf committed Aug 5, 2017
2 parents a384bd8 + ddb9dd9 commit f951949
Show file tree
Hide file tree
Showing 139 changed files with 3,386 additions and 1,619 deletions.
12 changes: 4 additions & 8 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
| Q | R
| ----------------------------------- | -------------------------------------------
| Type de modification | correction de bug / nouvelle fonctionnalité / évolution
| Ticket(s) (_issue(s)_) concerné(s) | (ex #1337)
| Ticket(s) (_issue(s)_) concerné(s) | (ex : #1337)

### QA

- Instruction 1 (ex : lancez `python manage.py migrate` et `npm run gulp build`)
- Instruction 1 (exemple : lancez `python manage.py migrate` et `npm run gulp build`)
- Instruction 2
- etc

<!-- À cocher une fois la QA faite. Vous pouvez le faire sur votre pull request si un testeur confirme avoir vérifié le bon fonctionnement de votre PR et avoir relu le code. -->

- [ ] Ça fonctionne !
- [ ] Code relu et approuvé !
- ...
- Code review
12 changes: 7 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,12 @@ env:
- TEST_APP="-e front"

notifications:
irc:
channels:
- irc.smoothirc.net#zds-dev
skip_join: true
webhooks:
urls:
- "https://scalar.vector.im/api/neb/services/hooks/dHJhdmlzLWNpLyU0MHNhbmRob3NlJTNBc2FuZGhvc2UuZnIvJTIxd2dlbkt2dHpNY3NYREtiZEhZJTNBbWF0cml4Lm9yZw"
on_success: change
on_failure: always
on_start: never

services:
- memcached
Expand Down Expand Up @@ -107,7 +109,7 @@ after_success:
if [[ "$TEST_APP" == *"front"* ]] && [[ "$TRAVIS_PULL_REQUEST" == false ]] && [[ ! -z "$TRAVIS_TAG" ]] && [[ ! "$TRAVIS_TAG" == *"-build" ]]
then
# Adding GitHub OAuth token to login
echo "machine github.com login $GITHUB_TOKEN password x-oauth-basic" > $HOME/.netrc
echo -e "machine github.com login $BOT_LOGIN\n password $BOT_PASSWORD" > $HOME/.netrc
git config --global url."https://".insteadOf git://
git config --global user.name "Build bot"
git config --global user.email "[email protected]"
Expand Down
54 changes: 29 additions & 25 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,44 +1,47 @@
Les contributions externes sont les bienvenues !

# Avant de réaliser...
1. Vérifiez que vous avez [un compte Github](https://github.com/signup/free)
2. Créez votre _issue_ si elle n'existe pas
* Vérifiez que vous avez la dernière version du code
* Décrivez clairement votre problème, avec toutes les étapes pour le reproduire

1. Vérifiez que vous avez [un compte Github](https://github.com/signup/free).
2. Créez votre _issue_ si elle n'existe pas.
* Vérifiez que vous avez la dernière version du code.
* Décrivez clairement votre problème, avec toutes les étapes pour le reproduire.
3. **Attribuez-vous** votre _issue_. C'est important pour éviter de se marcher dessus. Si vous n'êtes pas dans l'organisation et donc que vous ne pouvez pas vous attribuer directement l'_issue_, il vous suffit d'ajouter un commentaire clair dans celle-ci (comme _"Je prends"_), et elle sera marquée comme "en cours").
4. _Forkez_ le dépôt
5. Installez l'environnement. Tout est dans le fichier README.md
4. _Forkez_ le dépôt.
5. Installez l'environnement. Tout est dans le fichier [README.md](README.md).

# Contribuer à Zeste De Savoir
1. Créez une branche pour contenir votre travail
2. Faites vos modifications
3. Ajoutez un test pour votre modification. Seules les modifications de documentation et les réusinages n'ont pas besoin de nouveaux tests
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 makemigrations`

1. Créez une branche pour contenir votre travail.
2. Faites vos modifications.
3. Ajoutez un test pour votre modification. Seules les modifications de documentation et les réusinages n'ont pas besoin de nouveaux tests.
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 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_
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.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

* Respectez [les conventions de code de Django](https://docs.djangoproject.com/en/1.10/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.
* Ces PR sont unitaires. Aucune PR qui corrige plusieurs problèmes ou apporte plusieurs fonctionnalité ne sera accepté ; la règle est : une fonctionnalité ou une correction = une PR.
* Ces PR sont mergées dans la branche `dev` (appelée `develop` dans le git flow standard), après une QA légère.
* Pensez à préfixer vos branches selon l'objet de votre PR : `hotfix-XXX`, `feature-XXX`, etc.
* La branche `prod` (appelée `master` dans le git flow standard) contient exclusivement le code en production, pas la peine d'essayer de faire le moindre _commit_ dessus !

Tous les détails sur le workflow se trouvent [sur la page dédiée](http://zds-site.readthedocs.org/fr/latest/workflow.html).

* Votre test doit échouer sans votre modification, et réussir avec
* Faites des messages de _commit_ clairs et en français
* Il n'y a aucune chance que votre _pull request_ soit acceptée sans son test associé
* Votre test doit échouer sans votre modification, et réussir avec.
* Faites des messages de _commit_ clairs et en français.
* Il n'y a aucune chance que votre _pull request_ soit acceptée sans son test associé.

# Les bonnes pratiques pour les PR et les commits
## Les Pull-Requests

* Lors de l'ouverture d'une PR, respectez le template suivant :

```markdown
Expand All @@ -51,12 +54,13 @@ Tous les détails sur le workflow se trouvent [sur la page dédiée](http://zds-
* 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 --fake-initial`, `python manage.py loaddata fixture/*.yaml` ou `npm run gulp -- build`.

## Les commits

* Pour les commits, nous suivons le même ordre d'idée des standards Git, à savoir :
* La première ligne du commit ne doit pas faire plus de 50 caractères
* Si besoin, complétez votre commit via des commentaires, en respectant une limite de 70 caractères par ligne
* Bien que le code soit en anglais, le commit doit être de préférence en français
* Vous pouvez également (c'est d'ailleurs conseillé) de référencer l'_issue_ que vous fixez
* Un commit doit être atomique ; il fixe / implémente **une** chose et le fait **bien**
* La première ligne du commit ne doit pas faire plus de 50 caractères.
* Si besoin, complétez votre commit via des commentaires, en respectant une limite de 70 caractères par ligne.
* Bien que le code soit en anglais, le commit doit être de préférence en français.
* Vous pouvez également (c'est d'ailleurs conseillé) de référencer l'_issue_ que vous fixez.
* Un commit doit être atomique ; il fixe / implémente **une** chose et le fait **bien**.

* Essayez d'éviter les commits dits inutiles (`fix previous commit`, ...). Si vous en avez dans votre pull-request,
on vous demandera probablement de faire un `squash` de vos commits.
Expand Down
1 change: 1 addition & 0 deletions Gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ gulp.task('js', () =>
'assets/js/spoiler.js',
'assets/js/submit-dbclick.js',
'assets/js/tab-modalize.js',
'assets/js/topic-suggest.js',
'assets/js/tribune-pick.js',
'assets/js/zen-mode.js',
], { base: '.' })
Expand Down
33 changes: 16 additions & 17 deletions 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.8 et de [Python](https://www.python.org/) 2.7.
Site internet communautaire codé à l'aide du framework [Django](https://www.djangoproject.com/) 1.10 et de [Python](https://www.python.org/) 2.7.

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

Expand Down Expand Up @@ -72,22 +72,21 @@ python .\manage.py load_factory_data .\fixtures\advanced\aide_tuto_media.yaml
Cela va créer plusieurs entitées :

* 8 utilisateurs (utilisateur/mot de passe) :
* user/user : Utilisateur normal
* staff/staff : Utilisateur avec les droits d'un staff
* admin/admin : Utilisateur avec les droits d'un staff et d'un admin
* anonymous/anonymous : Utilisateur qui permet l'anonymisation des messages sur les forums
* Auteur externe/external : Utilisateur qui permet de récupérer les tutoriels d'anciens membres et/ou de publier des tutoriels externes.
* ïtrema/ïtrema : Utilisateur de test supplémentaire sans droit
* decal/decal : le compte qui possède un identifiant ``Profile`` différent de l'identifiant ``user`` pour permettre de tester des cas ou ces id sont différents
* dev/dev : Utilisateur dans le groupe des développeurs.

* 3 catégories
* 11 forums
* 3 sujets avec une réponse
* 1 message privé (MP) avec 3 participants
* 3 catégories et 2 sous-catégories
* 4 aides pour l'écriture des tutoriels
* 5 unes mises en avant sur la page d'accueil
* user/user : Utilisateur normal ;
* staff/staff : Utilisateur avec les droits d'un staff ;
* admin/admin : Utilisateur avec les droits d'un staff et d'un admin ;
* anonymous/anonymous : Utilisateur qui permet l'anonymisation des messages sur les forums ;
* Auteur externe/external : Utilisateur qui permet de récupérer les tutoriels d'anciens membres et/ou de publier des tutoriels externes ;
* ïtrema/ïtrema : Utilisateur de test supplémentaire sans droit ;
* decal/decal : le compte qui possède un identifiant ``Profile`` différent de l'identifiant ``user`` pour permettre de tester des cas ou ces id sont différents ;
* dev/dev : Utilisateur dans le groupe des développeurs ;
* 3 catégories ;
* 11 forums ;
* 3 sujets avec une réponse ;
* 1 message privé (MP) avec 3 participants ;
* 3 catégories et 2 sous-catégories ;
* 4 aides pour l'écriture des tutoriels ;
* 5 unes mises en avant sur la page d'accueil.

Pour en savoir plus sur cette commande, [consulter la documentation](http://zds-site.readthedocs.org/fr/latest/utils/fixture_loaders.html).

Expand Down
18 changes: 10 additions & 8 deletions assets/js/markdown-help.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
"Pour écrire un bout de code au milieu d’une phrase, utilisez la syntaxe <code>`un bout de code`</code>.",
"Le langage d’un bloc de code peut être spécifié après les <code>```</code> ouvrants. La liste des langages supportés <a href=\"" + linkToPygments + "\">est disponible ici</a>.",
"Vous pouvez <a href=\"" + linkToMathsTutorial + "\">écrire des formules mathématiques</a> en encadrant ces dernières du signe dollar <code>$</code>."
];
];

function addDocMD($elem){
$elem.each(function(){
Expand All @@ -38,12 +38,14 @@


$(document).ready(function(){
addDocMD($(".md-editor"));
$("#content").on("DOMNodeInserted", ".md-editor", function(e){
var $editor = $(e.target);
if($editor.next().hasClass("markdown-help") === false) {
addDocMD($editor);
}
});
if ($("body").data("show-markdown-help")) {
addDocMD($(".md-editor"));
$("#content").on("DOMNodeInserted", ".md-editor", function(e){
var $editor = $(e.target);
if($editor.next().hasClass("markdown-help") === false) {
addDocMD($editor);
}
});
}
});
})(document, jQuery);
69 changes: 69 additions & 0 deletions assets/js/topic-suggest.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/* ===== Zeste de Savoir ====================================================
Suggest Topic when user makes topic
---------------------------------
Author: A-312, AmarOk
========================================================================== */

(function($, undefined) {
"use strict";

if (!$("#topic-suggest")[0])
return;

var timeoutCall = 0;
var timeoutHidden = 0;

var myHandler = function() {
var titleURI = encodeURIComponent($(this).val());
if (titleURI.length < 3) return;
var $container = $("#topic-result-container");
var suggestTopicsUrl = $("#topic-suggest").attr("url");

if ($container.data("ajax-load") !== true) {
$.getJSON(suggestTopicsUrl + "?q=" + titleURI, function(json) {
var $ul = $("<ul></ul>");
var $title = null;
var count = 0;

// clearTimeout
clearTimeout(timeoutHidden);
clearTimeout(timeoutCall);

$.each(json.results, function(index, topic) {
$title = $("<a></a>").attr("target", "_blank");
$title.text(topic.title).attr("href", topic.url).attr("title", topic.subtitle);
var $topicDate = new Date(topic.pubdate).toLocaleDateString();
var $forumLink = $("<a></a>").text(topic.forumTitle).attr("href", topic.forumUrl);
$("<li></li>").text(" dans le forum ").append($forumLink).append(" le " + $topicDate).prepend($title).appendTo($ul);
count++;
if (count === 5) return;
});

if (!count) {
$("<li></li>").addClass("neither").text($container.data("neither")).appendTo($ul);
timeoutHidden = setTimeout(function () {
$("#topic-suggest").hide(800);
}, 6000);
}
$container.html("").append($ul);

$container.data("ajax-load", false);
$("#topic-suggest").show(800);
});

$container.data("ajax-load", true);
}
};

$("#id_title").on("blur", myHandler);

$("#id_title").on("keypress", function() {
var that = this;
var length = $(this).val().length;

clearTimeout(timeoutCall);
timeoutCall = setTimeout(function () {
myHandler.call(that);
}, (length < 5) ? (12 - length * 2) * 200 : 2000); // ANTI-FLOOD
});
})(jQuery);
2 changes: 2 additions & 0 deletions assets/js/tribune-pick.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
(function ($, undefined) {
var $opinions = $(".opinion");
var $opinionCount = $("#opinion-count");
$opinions.on("click", ".unpick-action", function () {
var $button = $(this);
var $row = $button.parent().parent();
Expand All @@ -19,6 +20,7 @@
var $stateCol = $row.find(".state");
$stateCol.text($stateCol.data("toggle"));
}
$opinionCount.text(parseInt($opinionCount.text(), 10)-1);
});
});
})(jQuery);
2 changes: 1 addition & 1 deletion assets/scss/components/_header-dropdown.scss
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@
padding: 0;

.dropdown-list {
max-height: 330px;
max-height: 360px;
overflow-x: hidden;
overflow-y: auto;

Expand Down
1 change: 1 addition & 0 deletions assets/scss/components/_mobile-menu.scss
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,7 @@
float: left;
height: 50px;
width: 50px;
cursor: pointer;

&:after {
display: block;
Expand Down
4 changes: 4 additions & 0 deletions assets/scss/components/_topic-message.scss
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,10 @@
font-style: italic;
color: #999;

& > a {
color: #999;
}

&:after {
opacity: .5;
}
Expand Down
28 changes: 28 additions & 0 deletions assets/scss/components/_topic-new.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#topic-result-container {
background-color: white;
border: 1px solid #d2d5d6;

ul {
list-style: none;
font-size: 12px;
padding: 0;
margin: 0;

li {
padding: 1px 10px;
border-bottom: solid 1px #CCC;

&.active, &:hover {
background-color: #d7d7d7;

&.neither {
background-color: transparent;
}
}

&:last-child {
border-bottom: none;
}
}
}
}
3 changes: 3 additions & 0 deletions assets/scss/layout/_header.scss
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,9 @@
.logbox .dropdown.my-account-dropdown ul li {
height: 30px;
line-height: 30px;
button {
cursor: pointer;
}
}

.lt-ie9 .dropdown {
Expand Down
1 change: 1 addition & 0 deletions assets/scss/main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
@import "components/topic-list";
@import "components/notification-list";
@import "components/topic-message";
@import "components/topic-new";
@import "components/user-profile";

/*------------------------
Expand Down
2 changes: 1 addition & 1 deletion doc/source/front-end.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Le terme *front-end* désigne la partie du code associée à l'affichage des don

Il s'agit donc de la partie du code définissant le design et l'affichage, mais aussi de l'ergonomie, la réactivité et l'expérience utilisateur. Sa mise en place est basée sur trois langages :

+ Le HTML, aidé du `langage de gabarit de Django <https://docs.djangoproject.com/fr/1.8/topics/templates/>`__ ;
+ Le HTML, aidé du `langage de gabarit de Django <https://docs.djangoproject.com/fr/1.10/topics/templates/>`__ ;
+ `SASS (en) <http://sass-lang.com/>`__ pour les feuilles de style ;
+ JavaScript pour les interactions.

Expand Down
2 changes: 1 addition & 1 deletion doc/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Documentation de Zeste De Savoir
================================

Zeste de Savoir est un site internet communautaire codé à l'aide du framework Django 1.8 et de Python 2.7
Zeste de Savoir est un site internet communautaire codé à l'aide du framework Django 1.10 et de Python 2.7

`Voir l'instance en ligne <https://zestedesavoir.com>`_

Expand Down
Loading

0 comments on commit f951949

Please sign in to comment.