aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md74
-rw-r--r--templates/contact.html9
-rw-r--r--templates/flatpages/about.html6
-rw-r--r--templates/flatpages/default.html8
-rw-r--r--templates/index.html2
-rw-r--r--templatetags/email.py24
-rw-r--r--urls.py4
-rw-r--r--views.py7
8 files changed, 69 insertions, 65 deletions
diff --git a/README.md b/README.md
index 82e6053..20a2cbd 100644
--- a/README.md
+++ b/README.md
@@ -1,29 +1,29 @@
# celcatsanitizer
celcatsanitizer est un système qui permet de récupérer des emplois du temps Celcat au format XML pour les afficher correctement.
-## Pourquoi ?
+## Pourquoi ?
Parce que les emplois du temps Celcat sont peu lisibles et peuvent facilement faire planter un navigateur, à cause du surplus d’informations affichées.
-## Comment faire tourner celcatsanitizer chez moi ?
-celcatsanitizer est écrit en Python 3. Il dépend des bibliothèques suivantes :
+## Comment faire tourner celcatsanitizer chez moi ?
+celcatsanitizer est écrit en Python 3. Il dépend des bibliothèques suivantes :
* Django 1.11
* requests
* BeautifulSoup4
* icalendar
-Pour installer celcatsanitizer, il est possible d'utiliser git.
+Pour installer celcatsanitizer, il est possible d’utiliser git.
-Pour tester celcatsanitizer, il est recommandé d'utiliser SQLite ou PostgreSQL.
+Pour tester celcatsanitizer, il est recommandé d’utiliser SQLite ou PostgreSQL.
-Pour la production, il est recommandé d'utiliser PostgreSQL (avec le driver psycopg2) et de mettre le tout dans un environnement virtuel.
+Pour la production, il est recommandé d’utiliser PostgreSQL (avec le driver psycopg2) et de mettre le tout dans un environnement virtuel.
-Aucun autre SGBD n'a été testé, mais depuis la version 0.8.0, celcatsanitizer n'utilise plus de fonctions SQL brutes spécifiques. Tous les SGBD supportés par Django devraient fonctionner sans poser de problèmes.
+Aucun autre SGBD n’a été testé, mais depuis la version 0.8.0, celcatsanitizer n’utilise plus de fonctions SQL brutes spécifiques. Tous les SGBD supportés par Django devraient fonctionner sans poser de problèmes.
### Installation
-Il est préférable d'utiliser un environnement virtuel, mais ce n'est pas obligatoire. Si vous ne souhaitez pas utiliser un environnement virtuel, passez directement à l'installation des dépendances.
+Il est préférable d’utiliser un environnement virtuel, mais ce n’est pas obligatoire. Si vous ne souhaitez pas utiliser un environnement virtuel, passez directement à l’installation des dépendances.
-#### Création de l'environnement virtuel
-Déplacez-vous dans le répertoire souhaité, installez l'environnement virtuel, et activez-le :
+#### Création de l’environnement virtuel
+Déplacez-vous dans le répertoire souhaité, installez l’environnement virtuel, et activez-le :
> $ virtualenv -p python3 celcatsanitizer
@@ -31,21 +31,19 @@ Déplacez-vous dans le répertoire souhaité, installez l'environnement virtuel,
> $ source bin/activate
-Il est possible que votre version de pip soit ancienne. Si vous le souhaitez, mettez ce programme à jour :
+Il est possible que votre version de pip soit ancienne. Si vous le souhaitez, mettez ce programme à jour :
> $ pip install --upgrade pip
-Notez que cette étape n'est pas obligatoire
-
#### Installation des dépendances
> $ pip install requests django beautifulsoup4 icalendar
-Si vous utilisez PostgreSQL, vous allez avoir besoin du driver psycopg2 :
+Si vous utilisez PostgreSQL, vous allez avoir besoin du driver psycopg2 :
> $ pip install psycopg2
-SQLite n'a pas besoin de driver.
+SQLite n’a pas besoin de driver.
#### Création du répertoire Django
@@ -57,7 +55,7 @@ SQLite n'a pas besoin de driver.
> $ git clone https://git.pa1ch.fr/alban/celcatsanitizer.git edt
-Pour la production, il est recommandé d'utiliser une version stable, accessibles à travers les tags git.
+Pour la production, il est recommandé d’utiliser une version stable, accessibles à travers les tags git.
#### Configuration de Django
Dans le fichier celcatsanitizer/settings.py, vous devrez renseigner plusieurs informations.
@@ -67,8 +65,8 @@ Dans le fichier celcatsanitizer/settings.py, vous devrez renseigner plusieurs in
Cette variable est obligatoire.
-##### Configuration de l'internationalisation
-Ce passage n'est pas obligatoire. [Vous pouvez retrouver la documentation de l'internationalisation sur le site de Django.](https://docs.djangoproject.com/fr/1.11/topics/i18n/)
+##### Configuration de l’internationalisation
+Ce passage n’est pas obligatoire. [Vous pouvez retrouver la documentation de l’internationalisation sur le site de Django.](https://docs.djangoproject.com/fr/1.11/topics/i18n/)
##### Configuration de la base de données
[Vous pouvez retrouver la documentation de la base de données sur le site de Django.](https://docs.djangoproject.com/fr/1.11/ref/settings/#databases)
@@ -76,30 +74,54 @@ Ce passage n'est pas obligatoire. [Vous pouvez retrouver la documentation de l'i
##### Configuration du mode de Django
Si jamais vous utiliser Django en production, vous **devez** mettre la variable DEBUG à False.
-##### Configuration personnalisée nécessaire à celcatsanitizer
-celcatsanitizer a besoin d'une variable DEFAULT_DOMAIN qui contient l'URL de base de l'instance.
-
##### Ajout de celcatsanitizer dans la liste des applications Django
-Ajoutez la chaine de caractère "edt" à la fin de la liste INSTALLED_APPS
+Ajoutez la chaine de caractère « edt » à la fin de la liste INSTALLED_APPS.
+
+##### Configuration des flatpages
+celcatsanitizer utilise les flatpages pour rendre les pages « contact » et « à propos ». Vous pouvez retrouver le guide d’installation sur [le site de Django](https://docs.djangoproject.com/fr/1.11/ref/contrib/flatpages/#installation). Effectuez uniquement les deux premières étapes, celcatsanitizer enregistre déjà une route pour les pages statiques, et la commande de l’étape 4 sera effectuée plus loin.
+
+##### Ajout du processeur de contexte de celcatsanitizer
+Cette étape est fortement recommandée, mais pas obligatoire.
+
+Rajoutez la chaine de caractères 'edt.views.ctx_processor' à la liste 'context_processors' dans la variable « TEMPLATES ».
##### Ajout des URLs de celcatsanitizer
Dans le fichier celcatsanitizer/urls.py, importez la fonction django.conf.urls.include, et ajoutez url(r'^', include("edt.urls")) à la **fin** de la liste urlspatterns.
##### Génération de la base de données
-Vous avez besoin de générer les migrations de celcatsanitizer, puis appliquez-les :
+Générer les migrations de celcatsanitizer, puis appliquez-les :
> $ ./manage.py makemigrations edt
> $ ./manage.py migrate
##### Gestion des fichiers statiques
-Si vous êtes en production, vous devez renseigner l'emplacement de vos fichiers statiques dans la variable [STATIC_ROOT](https://docs.djangoproject.com/fr/1.11/ref/settings/#std:setting-STATIC_ROOT) de la configuration de Django, puis exécuter la commande suivante :
+Si vous êtes en production, vous devez renseigner l’emplacement de vos fichiers statiques dans la variable [STATIC_ROOT](https://docs.djangoproject.com/fr/1.11/ref/settings/#std:setting-STATIC_ROOT) de la configuration de Django, puis exécuter la commande suivante :
> $ ./manage.py collectstatic
+Cette étape est inutile si vous êtes en mode de déboguage.
+
### Lancement de celcatsanitizer
-Si vous êtes en mode de débuggage, lancez le serveur de cette manière :
+Si vous êtes en mode de déboguage, lancez le serveur de cette manière :
> $ ./manage.py runserver
-Si vous êtes en production, il n'est pas recommandé d'utiliser ce serveur. Exécutez Django avec le module mod_wsgi d'Apache, ou avec un serveur [gunicorn](http://gunicorn.org/) derrière nginx.
+Si vous êtes en production, il n’est pas recommandé d’utiliser ce serveur. Exécutez Django avec le module mod_wsgi d’Apache, ou avec un serveur [gunicorn](http://gunicorn.org/) derrière nginx.
+
+### Configuration de celcatsanitizer
+#### Administrateur
+Pour avoir accès à l’interface d’administration, vous devez créer un utilisateur avec les droits administrateur. Pour cela, exécutez la commande suivante :
+
+> $ ./manage.py createsuperuser
+
+Renseignez ensuite votre nom d’utilisateur, mot de passe et adresse email au fur et à mesure.
+
+#### Pages statiques
+Comme indiqué plus haut, celcatsanitizer utilise l’application flatpages de Django.
+
+Si vous êtes en production, vous devez changer le site de base (« example.com ») par le site de celcatsanitizer.
+
+Vous devez ensuite rajouter les pages /a-propos/ et /contact/.
+
+Vous pouvez effectuer tout ça à partir de l’interface d’administration de Django.
diff --git a/templates/contact.html b/templates/contact.html
deleted file mode 100644
index 1359a16..0000000
--- a/templates/contact.html
+++ /dev/null
@@ -1,9 +0,0 @@
-{% extends "index.html" %}
-{% load email %}
-
-{% block title %}Contacter – {% endblock %}
-
-{% block body %}
- <h3>Contacter</h3>
- <p>Pour contacter l’administrateur du service, envoyez un mail à l’adresse suivante :<br/>{{ email|format_email }}.</p>
-{% endblock %}
diff --git a/templates/flatpages/about.html b/templates/flatpages/about.html
new file mode 100644
index 0000000..3df7c53
--- /dev/null
+++ b/templates/flatpages/about.html
@@ -0,0 +1,6 @@
+{% extends "flatpages/default.html" %}
+
+{% block body %}
+ <h3>{{ flatpage.title }} &ndash; celcatsanitizer {{ celcatsanitizer_version }}</h3>
+ {{ flatpage.content }}
+{% endblock %}
diff --git a/templates/flatpages/default.html b/templates/flatpages/default.html
new file mode 100644
index 0000000..913cda9
--- /dev/null
+++ b/templates/flatpages/default.html
@@ -0,0 +1,8 @@
+{% extends "index.html" %}
+
+{% block title %}{{ flatpage.title }} &ndash; {% endblock %}
+
+{% block body %}
+ <h3>{{ flatpage.title }}</h3>
+ {{ flatpage.content }}
+{% endblock %}
diff --git a/templates/index.html b/templates/index.html
index 005fd5b..71665bc 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -24,7 +24,7 @@
{% endblock %}
</div>
<footer>
- <p>(c) 2017 &ndash; Alban Gruin &ndash; <a href="{% url "contact" %}">contacter</a><br />
+ <p>(c) 2017 &ndash; Alban Gruin &ndash; <a href="{% url "django.contrib.flatpages.views.flatpage" url="contact/" %}">contacter</a> &ndash; celcatsanitizer {{ celcatsanitizer_version }} &ndash; <a href="{% url "django.contrib.flatpages.views.flatpage" url="a-propos/" %}">à propos</a><br />
Design inspiré par <a href="https://bestmotherfucking.website/">https://bestmotherfucking.website/</a></p>
</footer>
</body>
diff --git a/templatetags/email.py b/templatetags/email.py
deleted file mode 100644
index 68dbd84..0000000
--- a/templatetags/email.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright (C) 2017 Alban Gruin
-#
-# celcatsanitizer is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published
-# by the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# celcatsanitizer is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with celcatsanitizer. If not, see <http://www.gnu.org/licenses/>.
-
-from django import template
-
-register = template.Library()
-
-@register.filter
-def format_email(address):
- return address.replace("+", " [plus] ") \
- .replace("@", " [arobase] ") \
- .replace(".", " [point] ")
diff --git a/urls.py b/urls.py
index c84ac75..487994e 100644
--- a/urls.py
+++ b/urls.py
@@ -13,12 +13,12 @@
# You should have received a copy of the GNU Affero General Public License
# along with celcatsanitizer. If not, see <http://www.gnu.org/licenses/>.
-from django.conf.urls import url
+from django.conf.urls import include, url
from . import feeds, views
urlpatterns = [
url(r"^$", views.index, name="index"),
- url(r"^contact$", views.contact, name="contact"),
+ url(r"^pages/", include("django.contrib.flatpages.urls")),
url(r"^(?P<year_slug>[-\w]+)/$", views.mention_list, name="mentions"),
url(r"^(?P<year_slug>[-\w]+)/(?P<timetable_slug>[-\w]+)/$", views.group_list, name="groups"),
url(r"^(?P<year_slug>[-\w]+)/(?P<timetable_slug>[-\w]+)/(?P<group_slug>[-\w]+)/$", views.timetable, name="timetable"),
diff --git a/views.py b/views.py
index 7c19840..c0c63cb 100644
--- a/views.py
+++ b/views.py
@@ -15,7 +15,6 @@
import datetime
-from django.conf import settings
from django.db.models import Max
from django.db.models.functions import Length
from django.http import Http404
@@ -24,6 +23,8 @@ from django.shortcuts import get_object_or_404, render
from .models import Timetable, Group, Course, Year
from .utils import get_current_week, get_current_or_next_week, get_week, group_courses
+import edt
+
def index(request):
years = Year.objects.order_by("name")
return render(request, "index.html", {"elements": years})
@@ -104,5 +105,5 @@ def calendars(request, year_slug, timetable_slug, group_slug):
return render(request, "calendars.html", {"group": group, "groups": groups})
-def contact(request):
- return render(request, "contact.html", {"email": settings.ADMINS[0][1]})
+def ctx_processor(request):
+ return {"celcatsanitizer_version": edt.VERSION}