SpamWeb est un projet communautaire dont les objectifs principaux sont :
- Calculs SpamMistiques (statistiques du Spam).
- Gestion des SpamMembres (membres du Spam).
- Planification des SpamEvents (évènements organisés par et pour le spam).
- Jauge de pinte de chouffe à boire chaque semaine.
- Quantité de tacos ingurgités
- Système de régulation de comptes entre membres (en UDI)
- Partage d'idées avec votes et commentaires
- ...
- Tout ce dont le spam a besoin pour manquer de sérieux en amphi !
Le site est développé grâce à Python3 et au Framework Django.
La base de donnée utilise MySql.
Design basé sur AdminLTE
Avec l'utilisation de Bootstrap, JQuery et JQueryUI
- Video explicative pour l'installation de Python et Django sur Windows : ici.
NB: (Loïc) La partie dans la vidéo concernant les wsgi.so ne semble pas obligatoire. - Tutoriels/TP sur Django : ici.
NB: Ce tutoriel est écrit par le même auteur que le tuto d'openclassroom, mais il est ici plus complet. - Tutoriels sur Python : ici.
- Documentation Française pour Django 1.8 : ici.
- IDE PyCharm Meilleur IDE Python & Django (gratuit :) ): ici.
NB: La version professional est gratuite pour les étudiants, avec le mail INSA ! Pour ça inscrivez vous ici
A la racine du projet :
- Lancer le serveur :
python manage.py runserver PORC
où PORC est le port (ex:8081) de connection au site. Par défaut 8000 si non renseigné.
###Python et Django
- installer python anaconda (python + pas mal de package dont django sont installés) : anaconda
ou bien
- Installer Python3
NB: Pensez a mettre a jour la variable PATH pour lui ajouter les chemins
C:\Python34\Scripts
etC:\Python34
. - Executer ez_setup.py
- Executer
easy_install pip
: pip étant le gestionnaire de packages, à utiliser pour les téléchargements de packages - Obtenir Django avec :
pip install django
- Telecharger le client mysql, qui fournira la DB API driver :
pip install mysqlclient
- Si vous avez des problèmes sous Windaub et mysql : suivre le tuto ici pour pouvoir installer mysql python
###Base de données Vous avez le choix :
- pour MySQL, il suffit d'aller ici : MySQL
- Suivre les instructions
- Créer une base de données (schema en mysql)
Le fichier settings.py
étant versionné, nous devons respecter certaines conditions c'est à dire.
Vous devez créer un fichier SpamWeb/databases.py
dans lequel vous mettrez la configuration de votre base
de données en vous inspirant du fichier databases-example.py
.
Il faut ensuite executer une la commande python manage.py migrate
une première fois. Cela va créer les tables nécessaires aux applications installées par défaut.
-
Utiliser Pip pour installer oauth :
pip install --upgrade oauth2client
oauth2 -
Ensuite installer Google APIs Client Library for Python :
pip install --upgrade google-api-python-client
lien -
/!\ pour python3 : appliquer la correction de ce commit : lien
-
Pour le SpamAlyzer, lxml est nécessaire. Très simple à installer sur les systèmes UNIX. Un peu tricky à installer sur Windows, je conseille de passer sur Anaconda et de ne pas se prendre la tête. Sinon
pip install lxml
.
Pour acceder à l'interface d'administration et se connecter sur le site avec un premier utilisateur, il faut créer un super administrateur :
Grâce à la commande : python manage.py createsuperuser
- super-user spamadmin pour accéder au spammusic :)
- Modifiez les modèles (dans
models.py
). - Exécutez
python manage.py makemigrations
pour créer des migrations correspondant à ces changements. - Exécutez
python manage.py migrate
pour appliquer ces modifications à la base de données.
Pour vous aider a créer un nouvelle application (monApp) sur le site voici quelques conseils :
- Créer l'application avec
python manage.py startapp monApp
- Mettre monApp dans la variable
INSTALLED_APPS
pour l'ajouter au site dans le fichier SpamWeb/setting.py - Ajouter une route de base du type
url(r'^maroute/', include('monApp.urls', namespace='monApp'))
dans SpamWeb/urls.py auteur = models.ForeignKey(User, related_name='idees') - Développer monApp
-
Pour les modèles :
-
Vous pouvez établir des relations avec les utilisateurs en définissant une clé étrangère sur la classe
User
, importés comme ceci :from django.contrib.auth.models import User
-
Pour établir cette relation penser à nommer la relation inverse c'est plus pratique, comme ceci :
Class Pouce(models.Model):
puisuser = models.ForeignKey(User, related_name='pouces')
-
Pour les vues (contrôleurs) :
- Penser à ajouter le décorateur
@login_required
au dessus de vos actions, les utilisateurs déconnectés seront directement redirigés vers la page de connexion - Ajouter une route vers votre action et nommez la dans monApp/urls.py (créez le fichier si besoin) comme ceci :
urlpatterns = [ url(r'^', views.index, name='index'),]
- Penser à ajouter le décorateur
-
Pour les templates :
- Copier le fichier LTE/templates/LTE/starter.html, et le renommer en layout.html dans monApp/templates/monApp/
- Adapter et redéfinir tout les blocks du layout.html pour monApp
- Ce fichier layout.html sera la base de votre application, toutes vos pages seront basées dessus
- Créer maintenant un nouveau template basé sur le fichier LTE/templates/LTE/page.html
- Faire donc hériter le nouveau template de monApp/templates/monApp/layout.html
- Modifier le contenu de ce fichier pour qu'il corresponde à votre page
- C'est bon ! Le templating en 3 couches (Base / Layout / Page) est terminé !
- Si vous utilisez de l'AJAX passez par l'app ajax qui centralise ces requetes. Un jeton csrf est obligatoire même en ajax ! Infos ici.