aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 7dc9d5cf369d6c6d79fec916dff09878cd32b382 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# 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 ?
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 :
 * [Django 1.11](https://www.djangoproject.com/)
 * [requests](http://docs.python-requests.org/en/master/)
 * [BeautifulSoup4](https://www.crummy.com/software/BeautifulSoup/bs4/doc/)
 * [icalendar](https://icalendar.readthedocs.io/en/latest/)

Pour installer celcatsanitizer, il est possible d’utiliser
[git](https://git-scm.com/).

Pour tester celcatsanitizer, il est recommandé d’utiliser
[SQLite](https://www.sqlite.org/) ou
[PostgreSQL](https://www.postgresql.org/?&).

Pour la production, il est recommandé d’utiliser PostgreSQL (avec le
driver
[psycopg2](http://initd.org/psycopg/docs/install.html#binary-install-from-pypi))
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.

### 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.

#### Création de l’environnement virtuel
Déplacez-vous dans le répertoire souhaité, installez l’environnement
virtuel, et activez-le :

```bash
$ virtualenv -p python3 celcatsanitizer
$ cd celcatsanitizer
$ source bin/activate
```

Il est possible que votre version de pip soit ancienne. Si vous le
souhaitez, mettez ce programme à jour :

```bash
$ pip install --upgrade pip
```

#### Installation des dépendances

```bash
$ pip install requests django beautifulsoup4 icalendar
```

Si vous utilisez PostgreSQL, vous allez avoir besoin du driver
psycopg2 :

```bash
$ pip install psycopg2
```

SQLite n’a pas besoin de driver.

#### Création du répertoire Django

```bash
$ django-admin startproject celcatsanitizer
$ cd celcatsanitizer
```

#### Récupération des sources de celcatsanitizer

```bash
$ 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.

#### Configuration de Django
Dans le fichier celcatsanitizer/settings.py, vous devrez renseigner
plusieurs informations.

##### Configuration des administrateurs
[Vous pouvez retrouver la documentation de la variable ADMIN sur le
site de
Django.](https://docs.djangoproject.com/fr/1.11/ref/settings/#admins)

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 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)

##### Configuration du mode de Django
Si jamais vous utiliser Django en production, vous **devez** mettre la
variable DEBUG à False.

##### Ajout de celcatsanitizer dans la liste des applications Django
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
Générer les migrations de celcatsanitizer, puis appliquez-les :

```bash
$ ./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 :

```bash
$ ./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éboguage, lancez le serveur de cette
manière :

```bash
$ ./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.

### 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 :

```bash
$ ./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.