Skip to content

Commit

Permalink
Merge branch 'dev' into bugfix-6186-notifications-forum-inaccessible
Browse files Browse the repository at this point in the history
  • Loading branch information
philippemilink authored Dec 28, 2021
2 parents f0762f1 + 44a96f4 commit 3e0d688
Show file tree
Hide file tree
Showing 36 changed files with 837 additions and 198 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ env:
PYTHON_VERSION: "3.7"
MARIADB_VERSION: "10.4.10"
COVERALLS_VERSION: "2.2.0"
BLACK_VERSION: "21.8b0" # needs to be also updated in requirements-dev.txt and .pre-commit-config.yaml
BLACK_VERSION: "21.12b0" # needs to be also updated in requirements-dev.txt and .pre-commit-config.yaml

# As GitHub Action does not allow environment variables
# to be used in services definitions, these are only for
Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ repos:
- id: pyupgrade
args: [--py36-plus]
- repo: https://github.com/psf/black
rev: 21.8b0 # needs to be also updated in requirements-dev.txt and .github/workflows/ci.yml
rev: 21.12b0 # needs to be also updated in requirements-dev.txt and .github/workflows/ci.yml
hooks:
- id: black
language_version: python3
2 changes: 1 addition & 1 deletion Gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ function spriteImages() {

// Prepares files for zmarkdown
function prepareZmd() {
return gulp.src(['node_modules/katex/dist/{katex.min.css,fonts/*}'])
return gulp.src(['zmd/node_modules/katex/dist/{katex.min.css,fonts/*}'])
.pipe(gulp.dest('dist/css/'))
}

Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ install-back-with-prod:
pip install --upgrade -r requirements-dev.txt -r requirements-prod.txt

run-back: zmd-check ## Run the backend server
python manage.py runserver --nostatic
python manage.py runserver --nostatic 0.0.0.0:8000

run-back-fast: zmd-check ## Run the backend server in fast mode (no debug toolbar & full browser cache)
python manage.py runserver --settings zds.settings.dev_fast
python manage.py runserver --settings zds.settings.dev_fast 0.0.0.0:8000

lint-back: ## Lint Python code
black . --check
Expand Down
12 changes: 6 additions & 6 deletions doc/source/back-end/gallery.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Il est ensuite possible d'uploader des images via le menu de gauche :

Liens permettant d'uploader des images

Via celui-ci, on peut importer des archives contenant des images (au format ZIP) ou des images seules. Dans ce dernier cas, le formulaire d'*upload* est le suivant :
Via celui-ci, on peut importer des archives (au format ZIP) contenant des images ou des images seules. Dans ce dernier cas, le formulaire d'*upload* est le suivant :

.. figure:: ../images/gallery/nouvelle-image.png
:align: center
Expand All @@ -33,21 +33,21 @@ Via celui-ci, on peut importer des archives contenant des images (au format ZIP)

Comme on peut le voir, chaque image doit posséder au minimum un titre et peut posséder une légende, qui sera employée par la suite. Il est donc conseillé de remplir également ce second champ, bien que ce ne soit pas obligatoire. Quant à l'image elle-même, sa taille ne peut pas excéder 1024 Kio.

.. attention::
Le titre de l'image n'entre pas en compte dans le nommage de l'image une fois cette dernière téléchargée. Afin de réduire le risque de rencontrer des conflits de noms de fichiers, ces derniers sont hashés.

Une fois l'image uploadée, il est possible d'y effectuer différentes actions sur la page qui lui est spécifique :

.. figure:: ../images/gallery/gestion-image.png
:align: center

Gestion d'une image

Autrement dit,
Autrement dit :

+ En modifier le titre, la légende ou encore l'image en elle-même. À noter que le titre et la légende peuvent être modifiés **sans qu'il ne soit nécessaire** d'uploader une nouvelle image.
+ En modifier le titre, la légende ou encore l'image en elle-même. À noter que le titre et la légende peuvent être modifiés **sans qu'il ne soit nécessaire** d'uploader une nouvelle image. Si une nouvelle version de l'image est uploadée, l'ancienne version de l'image n'est pas supprimée du serveur et reste accessible depuis son URL ; un nouvel identifiant (et donc une nouvelle URL) sera attribué à la nouvelle version de l'image. Cela signifie notamment que mettre à jour une image ne changera pas l'image là où elle a déjà été utilisée (tutoriel, article, message, ...). Ce comportement permet d'éviter que les images utilisées dans des contenus validés soient changées sans repasser par une validation.
+ Obtenir le code à insérer dans un champ de texte acceptant le Markdown pour l'image en elle-même, sa miniature ou encore la miniature accompagnée du lien vers l'image en taille réelle.

.. attention::
Le titre de l'image n'entre pas en compte dans le nommage de l'image une fois cette dernière téléchargée. Afin de réduire le risque de rencontrer des conflits de noms de fichiers, ces derniers sont hashés.

Les utilisateurs et leurs droits
--------------------------------

Expand Down
9 changes: 4 additions & 5 deletions doc/source/contributing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,10 @@ 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 vos tests passent en utilisant la commande ``python manage.py test`` (`voir la documentation <https://docs.djangoproject.com/fr/1.10/topics/testing/overview/#running-tests>`_). Lancer la commande sur tous les tests du site risque de prendre un certain temps et n'est pas nécessaire : les tests seront de toute manière lancés de manière automatisée sur votre *pull request*.
5. Si vous avez fait des modifications du _frontend_, jouez les tests associés : ``yarn test``.
6. Si vous modifiez les modèles (les fichiers ``models.py``), n'oubliez pas de créer les fichiers de migration : ``python manage.py makemigrations``.
7. Poussez votre travail et faites une *pull request*.
8. Si votre travail nécessite des actions spécifiques lors du déploiement, précisez-les dans le corps de votre *pull request*. Elles seront ajoutées au *changelog* par le mainteneur qui effectuera le *merge*.
4. Assurez-vous que vos tests passent en utilisant la commande ``make test-back`` (voyez la `page dédiée <./guides/backend-tests.html>`_ pour plus de détails). Lancer la commande sur tous les tests du site risque de prendre un certain temps et n'est pas nécessaire : les tests seront de toute manière lancés de manière automatisée sur votre *pull request*.
5. Si vous avez modifié les modèles (les fichiers ``models.py``), n'oubliez pas de créer les fichiers de migration : ``python manage.py makemigrations``.
6. Poussez votre travail et faites une *pull request*.
7. Si votre travail nécessite des actions spécifiques lors du déploiement, précisez-les dans le corps de votre *pull request*. Elles seront ajoutées au *changelog* par le mainteneur qui effectuera le *merge*.

Quelques bonnes pratiques
-------------------------
Expand Down
2 changes: 1 addition & 1 deletion doc/source/install.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Si vous souhaitez terminer d'installer puis démarrer une instance locale de ZdS

install/install-*

Les détails concernant la contribution au code du site peuvent être trouvé `ici <./contributing.html>`_.
Les détails concernant la contribution au code du site peuvent être trouvés `ici <./contributing.html>`_.

Quelques informations supplémentaires:

Expand Down
51 changes: 51 additions & 0 deletions doc/source/install/install-docker.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
========================
Installation dans Docker
========================


.. note::

Par manque de développeurs utilisant Docker au sein de l'équipe de
développement de ZdS, cette section n'est guère fournie. Les instructions
données ici ne le sont qu'à titre indicatif. N'hésitez pas à signaler tout
problème ou proposer des améliorations !

L'installation de l'environnement de développement dans Docker se base sur `l'installation sous Linux <install-linux.html>`_.

Lancez un shell interactif dans un conteneur basé sur Debian :

.. sourcecode:: bash

docker run -it -p 8000:8000 debian:buster


Une fois dans le conteneur, saisissez les commandes suivantes :

.. sourcecode:: bash

# On se place dans le $HOME
cd

# Permet d'utiliser correctement apt
DEBIAN_FRONTEND=noninteractive

# Installez les paquets minimaux requis
apt update
apt install sudo make vim git

# Clonez le dépôt de ZdS
git clone https://github.com/<votre login>/zds-site.git
cd zds-site/

# Installez ZdS
make install-linux

# Nécessaire pour avoir nvm dans le PATH
source ../.bashrc

# À partir de maintenant, les commandes ne sont plus spécifiques à l'utilisation de Docker.

# Lancement de ZdS
source zdsenv/bin/activate
make zmd-start
make run-back
19 changes: 17 additions & 2 deletions doc/source/install/install-linux.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ Pour installer une version locale de ZdS sur GNU/Linux, veuillez suivre les inst
- Si malgré tout vous ne parvenez pas à installer ZdS, n'hésitez pas à ouvrir `un sujet sur le forum <https://zestedesavoir.com/forums/sujet/nouveau/?forum=2>`_


Après avoir cloné, installer ZdS sous Linux est relativement simple. En effet, il suffit de lancer la commande suivante (qui se chargera d'installer ce qui est nécessaire, plus d'infos ci-dessous):
Pour installer ZdS, vous aurez besoin d'abord des programmes ``make`` et ``sudo``. S'ils ne sont pas déjà installés sur votre système, ils sont généralement disponibles dans les gestionnaires de paquets sous le même nom.


Après avoir cloné le dépôt du code source, installer ZdS sous Linux est relativement simple. En effet, il suffit de lancer la commande suivante (qui se chargera d'installer ce qui est nécessaire, plus d'infos ci-dessous):

.. sourcecode:: bash

Expand All @@ -35,11 +38,23 @@ Une fois que c'est fait, vous pouvez directement lancer votre instance à l'aide
make zmd-start # démarrer zmarkdown
make run-back # démarer le serveur django


Stoppez le serveur à l'aide de ctrl+c. Pour sortir de votre environnement, tapez ``deactivate``.

Vous pouvez également `indiquer à Git de ne pas effectuer de commit s'il y a des erreurs de formatage dans le code <../utils/git-pre-hook.html>`__.

Si vous utilisez un shell autre que bash, et que vous avez l’erreur suivante quand vous activez ``zdsenv`` :

.. sourcecode:: bash

…/zds-site/zdsenv/bin/activate:67: command not found: nvm

Alors c’est très probablement dû au script d’installation de nvm qui ne gère que Bash. Pour corriger ce problème, ouvrez votre fichier ``.bashrc`` et copiez les lignes concernant nvm dans le fichier de configuration de votre shell. Ces fichiers se trouvent dans votre répertoire utilisateur, par exemple :

.. sourcecode:: bash

~/.bashrc
~/.zshrc

Plus d'informations
-------------------

Expand Down
1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"gulp-terser-js": "5.1.2",
"gulp.spritesmith": "6.12.1",
"jquery": "3.6.0",
"katex": "0.11.1",
"moment": "2.29.1",
"normalize.css": "8.0.1",
"postcss": "8.3.0"
Expand Down
16 changes: 8 additions & 8 deletions requirements-dev.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
-r requirements.txt

black==21.8b0 # needs to be also updated in .github/workflows/ci.yml and .pre-commit-config.yaml
colorlog==6.4.1
django-debug-toolbar==3.2.2
django-extensions==3.1.3
Faker==8.12.1
pre-commit==2.15.0
PyYAML==5.4.1
black==21.12b0 # needs to be also updated in .github/workflows/ci.yml and .pre-commit-config.yaml
colorlog==6.6.0
django-debug-toolbar==3.2.4
django-extensions==3.1.5
Faker==10.0.0
pre-commit==2.16.0
PyYAML==6.0
selenium==3.141.0
Sphinx==4.2.0
Sphinx==4.3.2
sphinx_rtd_theme==1.0.0
6 changes: 3 additions & 3 deletions requirements-prod.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
-r requirements.txt

gunicorn==20.1.0
mysqlclient==2.0.3
sentry-sdk==1.3.1
ujson==4.1.0
mysqlclient==2.1.0
sentry-sdk==1.5.1
ujson==5.1.0
24 changes: 12 additions & 12 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,28 @@ social-auth-app-django==5.0.0

# Explicit dependencies (references in code)
beautifulsoup4==4.10.0
django-crispy-forms==1.12.0
django-model-utils==4.1.1
django-crispy-forms==1.13.0
django-model-utils==4.2.0
django-munin==0.2.1
django-recaptcha==2.0.6
Django==2.2.24
easy-thumbnails==2.8rc0
factory-boy==3.2.0
geoip2==4.2.0
GitPython==3.1.14
Django==2.2.25
easy-thumbnails==2.8.0
factory-boy==3.2.1
geoip2==4.5.0
GitPython==3.1.24
homoglyphs==2.0.4
lxml==4.6.3
Pillow==8.3.2
lxml==4.7.1
Pillow==8.4.0
python-memcached==1.59
requests==2.26.0
toml==0.10.2

# Api dependencies
django-cors-headers==3.8.0
django-filter==2.4.0
django-cors-headers==3.10.1
django-filter==21.1
django-oauth-toolkit==1.5.0
djangorestframework-xml==2.0.0
djangorestframework==3.12.4
djangorestframework==3.13.1
drf-extensions==0.7.1
dry-rest-permissions==0.1.10
drf_yasg==1.20.0
Expand Down
37 changes: 23 additions & 14 deletions scripts/install_zds.sh
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,16 @@ if ! $(_in "--force-skip-activating" $@) && [[ ( $VIRTUAL_ENV == "" || $(realpat
echo " - If you don't have other choice, use \`--force-skip-activating\`."
exit 1
fi
else

# Some dependencies (like rust ones) require a recent pip:
print_info "* upgrading pip"
pip install --upgrade pip; exVal=$?

if [[ $exVal != 0 ]]; then
print_error "!! Failed to upgrade pip"
exit 1
fi

print_info "!! Add \`$(realpath $ZDS_VENV)\` in your PATH."

if [ ! -d $ZDS_VENV ]; then
Expand Down Expand Up @@ -434,6 +443,19 @@ if ! $(_in "-back" $@) && ( $(_in "+back" $@) || $(_in "+base" $@) || $(_in "+f
fi


# zmd (zmd has to be installed before the build the front)
if ! $(_in "-zmd" $@) && ( $(_in "+zmd" $@) || $(_in "+base" $@) || $(_in "+full" $@) ); then
print_info "* [+zmd] install zmarkdown dependencies" --bold

make zmd-install; exVal=$?

if [[ $exVal != 0 ]]; then
print_error "!! Cannot install zmd (use \`-zmd\` to skip)"
exit 1
fi
fi


# install front
if ! $(_in "-front" $@) && ( $(_in "+front" $@) || $(_in "+base" $@) || $(_in "+full" $@) ); then
print_info "* [+front] install front dependencies & build front" --bold
Expand All @@ -458,19 +480,6 @@ if ! $(_in "-front" $@) && ( $(_in "+front" $@) || $(_in "+base" $@) || $(_in "
fi


# zmd
if ! $(_in "-zmd" $@) && ( $(_in "+zmd" $@) || $(_in "+base" $@) || $(_in "+full" $@) ); then
print_info "* [+zmd] install zmarkdown dependencies" --bold

make zmd-install; exVal=$?

if [[ $exVal != 0 ]]; then
print_error "!! Cannot install zmd (use \`-zmd\` to skip)"
exit 1
fi
fi


# fixtures
if ! $(_in "-data" $@) && ( $(_in "+data" $@) || $(_in "+base" $@) || $(_in "+full" $@) ); then
print_info "* [+data] fixtures" --bold
Expand Down
2 changes: 1 addition & 1 deletion templates/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
{% block canonical %}{% endblock %}

{# Webfont async loading #}
<link href='//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700|Source+Code+Pro:400,700|Merriweather:400,700' rel='stylesheet' type='text/css'>
<link href='//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700|Source+Code+Pro:400,700|Merriweather:400,400italic,700,700italic' rel='stylesheet' type='text/css'>


{% block extra_css %}
Expand Down
23 changes: 22 additions & 1 deletion templates/member/admin/memberip.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
{% block content %}
<p>
{% blocktrans %}
Liste des membres dont la dernière IP connue est {{ ip }}
Liste des membres dont la dernière IP connue est <code>{{ ip }}</code>
{% endblocktrans %}
</p>

Expand All @@ -37,4 +37,25 @@
{% endfor %}
</ul>
</div>

{# Checks if it's an IPV6 to show the members from the same IPV6 network #}
{% if ":" in ip %}
<p>
{% blocktrans %}
Liste des membres dont la dernière IP connue fait partie du bloc <code>{{ network_ip }}</code>
{% endblocktrans %}
</p>

<div class="members">
<ul>
{% for member in network_members %}
<li>{% include "misc/member_item.part.html" with member=member info=member.last_visit|format_date:True avatar=True %}</li>
{% endfor %}
</ul>
</div>

<p>
En IPv6, les adresses sont attribuées par bloc d'IP. Un bot de spam peut donc facilement changer d'adresse IP au sein de ce bloc. Sont affichés ici tous les membres dont l'IPv6 fait partie du même bloc que l'IP demandée.
</p>
{% endif %}
{% endblock %}
8 changes: 0 additions & 8 deletions templates/member/profile.html
Original file line number Diff line number Diff line change
Expand Up @@ -119,14 +119,6 @@ <h1>
{% endfor %}

<div class="aside">
<form action="{% url 'search:query' %}" id="search-member-form" class="search" method="get">
{% csrf_token %}
<label for="id_q" class="control-label">{% trans 'Recherche' %}</label>
<input id="id_q" maxlength="150" name="q" required="required" type="search" placeholder="dans l'activité du membre (prochainement)" readonly>
<input type="hidden" name="models" value="content">
<button class="btn ico-after ico-search" type="submit" title="{% trans 'Rechercher' %}"><span>{% trans 'Rechercher' %}</span></button>
</form>

<aside class="under-search">
<ul class="presence-statistics-in-banner" aria-hidden="true">
{{ presence_statistics }}
Expand Down
Loading

0 comments on commit 3e0d688

Please sign in to comment.