From d100163397e7a78bbc2c96f6c4b068ab13b49596 Mon Sep 17 00:00:00 2001 From: Adrien Chardon Date: Sun, 26 Oct 2014 18:06:45 +0100 Subject: [PATCH] apropos + cookies + errors pages 403 404 500 + maintenance --- assets/sass/_settings.scss | 4 +- cdc.md | 29 +++++---- iTeam/pages/urls.py | 3 +- iTeam/pages/views.py | 6 +- prod/deploy.sh | 50 +++++++++++++++ prod/gunicorn_start.sh | 10 +-- prod/nginx-maintenance.conf | 51 +++++++++++++++ prod/nginx.conf | 24 +++---- prod/settings_prod.py | 4 +- prod/supervisor.conf | 6 +- templates/403.html | 21 ++++++- templates/404.html | 39 ++++++++++++ templates/base.html | 16 +---- templates/footer.html | 5 ++ templates/maintenance.html | 111 ++++++++++++++++++++++++++++++++ templates/pages/apropos.html | 89 ++++++++++++++++++-------- templates/pages/base.html | 2 +- templates/pages/cookies.html | 118 ++++++++--------------------------- templates/pages/index.html | 28 +++++++++ 19 files changed, 440 insertions(+), 176 deletions(-) create mode 100644 prod/deploy.sh create mode 100644 prod/nginx-maintenance.conf create mode 100644 templates/404.html create mode 100644 templates/footer.html create mode 100644 templates/maintenance.html create mode 100644 templates/pages/index.html diff --git a/assets/sass/_settings.scss b/assets/sass/_settings.scss index 8c5c68c..b6a14e3 100644 --- a/assets/sass/_settings.scss +++ b/assets/sass/_settings.scss @@ -187,8 +187,8 @@ $portrait: "only screen and (orientation: portrait)"; // $h1-font-size: em-calc(44); // $h2-font-size: em-calc(37); // $h3-font-size: em-calc(27); -// $h4-font-size: em-calc(23); -// $h5-font-size: em-calc(18); +$h4-font-size: em-calc(20); /* default : 23 */ +$h5-font-size: em-calc(15); /* default : 18 */ // $h6-font-size: 1em; // Control how subheaders are styled. diff --git a/cdc.md b/cdc.md index c92e21b..5bb4292 100644 --- a/cdc.md +++ b/cdc.md @@ -2,28 +2,27 @@ ------------------------------------------------------------ todo long run --> dump iteam.org --> tests --> use pk not id --> no style in html template -> css --> : alt --> button radius --> flake8 compliant (pep8 + other stuff) +- dump iteam.org +- tests +- use pk not id +- no style in html template -> css +- : alt +- button radius +- flake8 compliant (pep8 + other stuff) to do now -- 403, 404 and 500 templates (500 template should be raw html) - https://docs.djangoproject.com/en/dev/ref/contrib/sitemaps/ - robots.txt + htaccess (index follow) -- a propos / l'iteam + cookies - publication slug -> user-friendly url +to do quickly - previsualisation des posts - news / tuto / articles : export pdf (pandoc) - syndication (rss + atom) : https://docs.djangoproject.com/en/dev/ref/contrib/syndication/ -- noscript : menu, (logout ok) -- media sociaux (syncro fb, twitter, google) -osef ? +to do maybe +- noscript : menu, (logout ok) +- media sociaux (syncro fb, twitter, google) -> https://github.com/foxmask/django-th - calendar : list (prochain, passés, ...) - publications : tags, multi-page - better member (mail, citation, bio, ... osef ?) @@ -107,9 +106,9 @@ un script (par site google + facebook + twitter) qui permet de poster sur nos di **Contient** autant de scripts que nécessaire. --> https://developers.facebook.com/docs/graph-api/reference/v2.0/user/feed - --> ifttt +- https://developers.facebook.com/docs/graph-api/reference/v2.0/user/feed +- ifttt +- https://github.com/foxmask/django-th ---------------- ## Users tests diff --git a/iTeam/pages/urls.py b/iTeam/pages/urls.py index 4e90e35..7635010 100644 --- a/iTeam/pages/urls.py +++ b/iTeam/pages/urls.py @@ -3,7 +3,7 @@ # @Author: Adrien Chardon # @Date: 2014-08-19 18:35:27 # @Last Modified by: Adrien Chardon -# @Last Modified time: 2014-08-22 17:02:41 +# @Last Modified time: 2014-10-26 16:24:58 # This file is part of iTeam.org. # Copyright (C) 2014 Adrien Chardon (Nodraak). @@ -28,6 +28,7 @@ urlpatterns = patterns( '', + url(r'^$', views.index, name='index'), url(r'^apropos/$', views.apropos, name='apropos'), url(r'^hallOfFame/$', views.hallOfFame, name='hallOfFame'), url(r'^cookies/$', views.cookies, name='cookies'), diff --git a/iTeam/pages/views.py b/iTeam/pages/views.py index 7b3c0a9..a52303d 100644 --- a/iTeam/pages/views.py +++ b/iTeam/pages/views.py @@ -3,7 +3,7 @@ # @Author: Adrien Chardon # @Date: 2014-08-19 18:35:38 # @Last Modified by: Adrien Chardon -# @Last Modified time: 2014-09-01 17:55:37 +# @Last Modified time: 2014-10-26 16:28:12 # This file is part of iTeam.org. # Copyright (C) 2014 Adrien Chardon (Nodraak). @@ -29,6 +29,10 @@ from iTeam.events.models import Event +def index(request): + return render(request, 'pages/index.html') + + def home(request): publications_list = Publication.objects.all().filter(pub_date__lte=timezone.now(), is_draft=False). \ order_by('-pub_date')[:5] diff --git a/prod/deploy.sh b/prod/deploy.sh new file mode 100644 index 0000000..7d300ca --- /dev/null +++ b/prod/deploy.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# +# iTeam deployment script +# +# Deploys specified version of Zeste de Savoir +# +# Usage: +# - This script has exactly 1 parameter : the tag name to deploy + +if [ "$#" -ne 1 ]; then + echo "Usage: $0 " >&2 + exit 1 +fi + +cd /opt/iteam-env/iteam-site/ + +# Maintenance mode +sudo rm /etc/nginx/sites-enabled/iteam +sudo ln -s /etc/nginx/sites-available/iteam-maintenance /etc/nginx/sites-enabled/iteam-maintenance +sudo service nginx reload + +# Delete old branch if exists +git checkout prod +git branch -D $1 +# Switch to new tag +git fetch --tags +# Server has git < 1.9, git fetch --tags doesn't retrieve commits... +git fetch +# Checkout the tag +git checkout $1 +# Create a branch with the same name - required to have version data in footer +git checkout -b $1 + +# Update application data +source ../bin/activate +pip install --upgrade -r requirements.txt +python manage.py migrate +deactivate + +# Restart iteam +sudo supervisorctl restart iteam + +# Exit maintenance mode +sudo rm /etc/nginx/sites-enabled/iteam-maintenance +sudo ln -s /etc/nginx/sites-available/iteam /etc/nginx/sites-enabled/iteam +sudo service nginx reload + +# Display current branch and commit +git status +echo "Commit deployé : `git rev-parse HEAD`" diff --git a/prod/gunicorn_start.sh b/prod/gunicorn_start.sh index 9928d88..c690e14 100644 --- a/prod/gunicorn_start.sh +++ b/prod/gunicorn_start.sh @@ -1,14 +1,14 @@ #!/bin/bash set -e # Exit immediately if a command exits with a non-zero status. -WORKINGDIR=/home/nodraak/Telechargements/iteam.org/ +WORKINGDIR=/opt/iteam-env/iteam-site/ -LOGFILE=$WORKINGDIR/gunicorn.log -ERRFILE=$WORKINGDIR/gunicorn_err.log +LOGFILE=$WORKINGDIR/../log/gunicorn.log +ERRFILE=$WORKINGDIR/../log/gunicorn_err.log LOGDIR=$(dirname $LOGFILE) NUM_WORKERS=3 # how many worker processes : should be nb_cpu*2+1 -USER=nodraak -GROUP=nodraak +USER=iteam +GROUP=iteam cd $WORKINGDIR exec ../bin/gunicorn iTeam.wsgi:application \ diff --git a/prod/nginx-maintenance.conf b/prod/nginx-maintenance.conf new file mode 100644 index 0000000..d8575a7 --- /dev/null +++ b/prod/nginx-maintenance.conf @@ -0,0 +1,51 @@ + +# Redirect www.domain.tld to domain.tld +#server { +# listen 80; +# server_name www.example.com; +# +# return 301 http://example.com$request_uri; +#} + +server { + listen 80; + server_name beta.iteam.org; + + access_log /opt/iteam-env/log/nginx-access.log; + error_log /opt/iteam-env/log/nginx-error.log; + + + # media and static files + + location /static/ { + alias /opt/iteam-env/iteam_static/; + expires 1d; + add_header Pragma public; + add_header Cache-Control "public, must-revalidate, proxy-revalidate"; + } + + location /media/ { + alias /opt/iteam-env/media/; + expires 1d; + add_header Pragma public; + add_header Cache-Control "public, must-revalidate, proxy-revalidate"; + } + + + # default : redirect to gunicorn (which will redirect to django) + + location / { + client_max_body_size 100M; + + return 503 //opt/iteam-env/iteam-site/templates/maintenance.html; + } + + + # Error pages + + error_page 500 501 502 503 504 /500.html; + location = /500.html { + root //opt/iteam-env/iteam-site/templates/; + } +} + diff --git a/prod/nginx.conf b/prod/nginx.conf index cd246c6..c9a3dc0 100644 --- a/prod/nginx.conf +++ b/prod/nginx.conf @@ -4,32 +4,32 @@ # Redirect www.domain.tld to domain.tld -server { - listen 80; - server_name www.example.com; - - return 301 http://example.com$request_uri; -} +#server { +# listen 80; +# server_name www.iteam.org; +# +# return 301 http://iteam.org$request_uri; +#} server { listen 80; - server_name famillechardon.fr; + server_name beta.iteam.org; - access_log /home/nodraak/Telechargements/iteam.org/nginx-access.log; - error_log /home/nodraak/Telechargements/iteam.org/nginx-error.log; + access_log /opt/iteam-env/log/nginx-access.log; + error_log /opt/iteam-env/log/nginx-error.log; # media and static files location /static/ { - alias /home/nodraak/Telechargements/iteam_static/; + alias /opt/iteam-env/static/; expires 1d; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } location /media/ { - alias /home/nodraak/Telechargements/iteam_media/; + alias /opt/iteam-env/media/; expires 1d; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; @@ -61,7 +61,7 @@ server { error_page 500 501 502 503 504 /500.html; location = /500.html { - root /home/nodraak/Telechargements/iteam.org/templates/; + root /opt/iteam-env/iteam-site/templates/; } } diff --git a/prod/settings_prod.py b/prod/settings_prod.py index 266251a..4506b29 100644 --- a/prod/settings_prod.py +++ b/prod/settings_prod.py @@ -10,9 +10,7 @@ SERVE = False -ALLOWED_HOSTS = ['.famillechardon.fr', '192.168.0.100', 'localhost'] -# since every request pass by nginx then gunicorn, and gunicorn proxy all via -# localhost, should we only have localhost ? +ALLOWED_HOSTS = ['localhost'] # Make this unique, and don't share it with anybody. # SECURITY WARNING: keep the secret key used in production secret! diff --git a/prod/supervisor.conf b/prod/supervisor.conf index 05a6629..34ec7cc 100644 --- a/prod/supervisor.conf +++ b/prod/supervisor.conf @@ -1,8 +1,8 @@ [program:iteam] -command = /opt/zdsenv/unicorn_start.sh ; +command = /opt/iteam-env/iteam-site/gunicorn_start.sh ; user = nodraak ; -stdout_logfile = /opt/zdsenv/logs/supervisor_stdout.log ; -stderr_logfile = /opt/zdsenv/logs/supervisor_stderr.log ; +stdout_logfile = /opt/iteam-env/log/supervisor_stdout.log ; +stderr_logfile = /opt/iteam-env/log/supervisor_stderr.log ; redirect_stderr = true ; autorestart = true ; autostart = true ; diff --git a/templates/403.html b/templates/403.html index 906e05a..e4bece5 100644 --- a/templates/403.html +++ b/templates/403.html @@ -15,9 +15,24 @@
-

- Vous n'avez pas le droit d'effectuer cette action. -

+ {# title #} +
+
+
+

+ Erreur 403 +

+
+
+
+ {# content #} +
+
+

+ Vous n'avez pas le droit d'effectuer cette action. +

+
+
diff --git a/templates/404.html b/templates/404.html new file mode 100644 index 0000000..e43d2f8 --- /dev/null +++ b/templates/404.html @@ -0,0 +1,39 @@ +{% extends "base.html" %} + +{% load staticfiles %} + +{% block title_app %} + Erreur 404 +{% endblock %} + +{% block breadcrumb_page %} +
  • Erreur 404
  • +{% endblock %} + + +{% block content %} + +
    +
    + {# title #} +
    +
    +
    +

    + Erreur 404 +

    +
    +
    +
    + {# content #} +
    +
    +

    + La page demandée n'a pas été trouvée. +

    +
    +
    +
    +
    + +{% endblock %} diff --git a/templates/base.html b/templates/base.html index 2d0f435..be68f8f 100644 --- a/templates/base.html +++ b/templates/base.html @@ -128,27 +128,17 @@ diff --git a/templates/footer.html b/templates/footer.html new file mode 100644 index 0000000..89f00a9 --- /dev/null +++ b/templates/footer.html @@ -0,0 +1,5 @@ +
  • À propos
  • +
  • IRC
  • +
  • ECE
  • +
  • Plus
  • +
  • diff --git a/templates/maintenance.html b/templates/maintenance.html new file mode 100644 index 0000000..2ad7f65 --- /dev/null +++ b/templates/maintenance.html @@ -0,0 +1,111 @@ + + + + + + + + Maintenance · iTeam.org + + + + + + + + + + + + + + + + + +
    + + + +
    + Votre javascript semble désactivé. Ce site l'utilise avec parcimonie et + nous vous conseillons de le réactiver. +
    + + + + + +
    +
    +

    + Maintenance en cours ... +

    +

    + Le site est actuellement en cours de maintenance et devrait repasser en ligne dans quelques minutes.@ +

    +
    +
    + + +
    + + + + diff --git a/templates/pages/apropos.html b/templates/pages/apropos.html index 48c754b..2eb10d5 100644 --- a/templates/pages/apropos.html +++ b/templates/pages/apropos.html @@ -20,32 +20,29 @@

    -
    +

    - L'iTeam + L'association

    - L’iTeam est une des plus anciennes associations de l’ECE, qui a pour - but de promouvoir les logiciels et les systèmes d’exploitation - libres tels que le navigateur Firefox, la suite OpenOffice ou le - système Linux et qui fait également de la prévention en matière de - sécurité informatique. + L’iTeam est une des plus anciennes associations de l’ECE. Elle a + pour but la promotion des logiciels libres tels que le navigateur + Firefox, la suite LibreOffice ou le système d'exploitation Linux.

    Nous offrons de plus en plus de formations ouvertes à tous ceux qui - ont envie d’apprendre ou de se perfectionner dans un domaine. Nous + ont envie d’apprendre ou de se perfectionner dans un domaine. + Nous proposons entre autres des formations à propos de la programmation + (PHP, MySQL, HTML/CSS), du graphisme (The Gimp & Inkscape), + des réseaux (TCP/IP, wifi, sécurité), Linux, etc. Des intervenants extérieurs + peuvent également venir pour parler d’une technologie particulière + comme Mozilla pour Firefox. +

    + Nous organisons également divers évènements liés au monde du libre tel que des conférences avec le GTUG (Google Technologies User Group) et le PAUG (Paris Android User Group). Ces évènements sont souvent - suivie d'un pot, une occassion en or pour rencontrer des + suivis d'un pot, une occassion en or pour rencontrer des professionels de ces millieux dans une ambiance plus conviviale. -

    - Nous proposons entre autres des formations sur PHP/MySQL, HTML/CSS, - graphisme (The Gimp & Inkscape), Social Engineering, Linux, la - cryptographie, les réseaux (TCP/IP, wifi, sécurité), - introduction aux logiciels libres, etc. Des intervenants extérieurs - peuvent également venir pour parler d’une technologie particulière - tel que Mozilla pour Firefox. -

    Vous pourrez nous retrouver comme chaque année au salon Solutions Linux à Paris. C’est une belle opportunité de rencontrer les grandes entreprises du libre et peut être de futurs recruteurs. @@ -53,23 +50,63 @@

    En plus du support logiciel et matériel que nous offrons aux étudiants, de nombreux autres projets sont en cours et n’attendent que vous : refonte du réseau, traduction, article pour des blogs tel - que FrAndroid, module de vote pour les formations, développer le - service de gestion de versions SVN, installer des VM pour tester différentes distributions, - mise en place d'un framework de suivie de projet, se former et - s’amuser sans risque, et bien plus encore pour les plus motivés. -

    - L'iTeam c'est aussi 15 ans d'histoire, de rires, de sorties, de - blagues, bref de souvenirs, que nous serions ravie de partager avec vous ! + que FrAndroid, module de vote pour les formations, développement d'un + service de gestion de versions SVN, installation de VM pour tester + différentes distributions, mise en place d'un framework de suivi + de projet, et bien plus encore pour les plus motivés.

    Venez découvrir ou redécouvrir l'iTeam !

    +

    +

    - Le site + Ce site

    - Serveur + django + ... + Si vous vous intéressez à tout cela, vous devriez songer à contribuer au développement du site !

    + +
    +
    + +

    + Le Back-end est propulsé par les outils suivants : +

    +
    Langage et framework
    + +
    HTTP(S) et WSGI
    + +
    Base de données
    + +
    + +
    + +

    + Le Front-end utilise les outils suivants : +

    +
    Feuilles de style
    + +
    Javascript
    + +
    +
    diff --git a/templates/pages/base.html b/templates/pages/base.html index 4a782da..2db58b6 100644 --- a/templates/pages/base.html +++ b/templates/pages/base.html @@ -5,5 +5,5 @@ {% endblock %} {% block breadcrumb_app %} -
  • Pages
  • +
  • Pages
  • {% endblock %} diff --git a/templates/pages/cookies.html b/templates/pages/cookies.html index 74849ac..30890f8 100644 --- a/templates/pages/cookies.html +++ b/templates/pages/cookies.html @@ -15,6 +15,10 @@

    Cookies +
    + + Crédits : Zeste de Savoir / CC BY 4.0 +

    @@ -27,7 +31,9 @@

    Qu'est-ce qu'un cookie ?

    Les cookies ne sont ni des logiciels espions ni des virus, puisqu'ils ne sont en réalité que de simples fichiers textes et ne peuvent en aucun cas être exécutés.
    - Pour plus de détails sur ce qu'est un cookie, voyez le site de la CNIL ou Wikipédia. + Pour plus de détails sur ce qu'est un cookie, voyez + le site de la CNIL ou + Wikipédia.

    À quoi servent les cookies ?

    @@ -43,96 +49,39 @@

    Cookies techniques

    Certaines fonctionnalités du site nécessitent des cookies pour pouvoir être opérationnelles. L'exemple typique est la connexion aux parties privées de - Zeste de Savoir. + iteam.org.
    - La liste complète des cookies techniques utilisés sur Zeste de Savoir et leur + La liste complète des cookies techniques utilisés sur iteam.org et leur utilité est détaillée un peu plus bas.
    Ces cookies, purement techniques, sont indispensables au fonctionnement de - Zeste de Savoir. Si vous les refusez, les éléments qui en dépendent ne + iteam.org. Si vous les refusez, les éléments qui en dépendent ne fonctionneront tout simplement pas !

    - -

    Cookies d'analyse d'audience

    -

    - Zeste de Savoir analyse son audience. Que signifie ce terme barbare ? Tout - simplement que nous étudions la manière dont le site est utilisé : -

    -

    - À quoi cela peut-il bien servir, allez-vous me demander avec sagacité. -

    -

    - Tout simplement à améliorer l'expérience utilisateur du site. Les développeurs, - aussi ingénieux soient-ils, ne peuvent jamais deviner l'utilisation réelle qui - sera faite du site. Telle ou telle fonctionnalité qui leur paraîtra mineure - sera en fait utilisée par une grande majorité, ou telle autre qui leur paraissait - cruciale sera ignorée. -
    - Le seul moyen fiable de savoir ce qui est réellement utilisé - et donc ce - qu'il faut travailler - est d'analyser l'audience réelle. -
    - Ceci implique de suivre les utilisateurs à travers le site, ce qui se fait - grâce à un cookie dédié; -
    - C'est cette analyse qui peut être désactivée, puisqu'elle n'est pas strictement - indispensable au bon fonctionnement du site. -

    -

    Les cookies sur ce site

    -

    - Pour être tout à fait précis, Zeste de Savoir utilise les cookies suivants : -

    +

    Comment refuser les cookies tiers

    -

    Cookies techniques

    - - Comment refuser les cookies tiers -

    +

    Refus pur et simple des cookies tiers dans le navigateur

    - Refus pur et simple des cookies tiers dans le navigateur + Vous pouvez bloquer purement et simplement les cookies tiers dans votre navigateur, en suivant la procédure décrite sur le site de la CNIL dans le Conseil 1.

    - Vous pouvez bloquer purement et simplement les cookies tiers dans votre navigateur, en suivant la procédure décrite sur le site de la CNIL dans le Conseil 1. -

    -

    - Cette manœuvre n'empêchera pas Zeste de Savoir de fonctionner, puisque les cookies techniques ne sont pas des cookies tiers. + Cette manœuvre n'empêchera pas iteam.org de fonctionner, puisque les cookies techniques ne sont pas des cookies tiers.

    Toutefois, devant le manque de finesse de contrôle d'une telle solution, vous pourriez préférer utiliser une solution présentée au paragraphe suivant.

    -

    - Utilisation d'un logiciel "anti-espions" -

    -

    - Il existe différents logiciels "anti-espions", qui empêchent l'installation des cookies d'analyse d'audience, et bien d'autres encore. -

    -

    - La CNIL indique quelles solutions sont disponibles avec votre navigateur, dans son Conseil 2. -

    -

    Licence de cette page

    +

    Utilisation d'un logiciel "anti-espions"

    - Licence Creative Commons À propos des cookies de Zeste de Savoir est mis à disposition selon les termes de la licence Creative Commons Attribution 4.0 International. + Il existe différents logiciels "anti-espions", qui empêchent l'installation des cookies d'analyse d'audience, et bien d'autres encore.

    - N'oubliez pas d'adapter les cookies réellement utilisés à votre cas si vous reprenez cette page ! + La CNIL indique quelles solutions sont disponibles avec votre navigateur, dans son Conseil 2.


    @@ -156,9 +105,7 @@

    Ingrédients

  • 1 sachet de levure
  • - Préparation : 10 minutes -

    -

    + Préparation : 10 minutes
    Cuisson : 10 minutes

    @@ -189,24 +136,13 @@

    Conseils divers

  • On peut faire des cookies à beaucoup de parfums, mais le must reste le cookie au chocolat.
  • -
    -
    -
    - Crédits : - - À propos des cookies - - ( - - Zeste de Savoir - - ) / - - CC BY 4.0 - -
    -
    -
    +
    + +

    Licence de cette page

    +

    + Licence Creative Commons + À propos des cookies de Zeste de Savoir est mis à disposition selon les termes de la licence Creative Commons Attribution 4.0 International. +

    diff --git a/templates/pages/index.html b/templates/pages/index.html new file mode 100644 index 0000000..ceaefec --- /dev/null +++ b/templates/pages/index.html @@ -0,0 +1,28 @@ +{% extends "pages/base.html" %} + +{% block breadcrumb_page %} +
  • Liste des pages
  • +{% endblock %} + +{% block content %} + +
    +
    +
    +

    + Pages +

    +
    + +
    + +
    +
    +
    + +{% endblock %} +