====== WebNeL ======
WebNeL est une application web développée en Python/Django dont le but est, dans le futur, de remplacer intégralement l'héritage PHP de Ryzom Core. Cette application utilise Django 2 et Python 3.
2017-10-06 21:29:53 @YannK Donc on peut créer un dépôt WebNeL et y développer le site Django\\
2017-10-06 21:30:17 @YannK On fera un commit de type rm -Rf * à un moment sur le web hérité de RCD en php à ce moment :)\\
2017-10-06 21:30:21 TychoBrahe pourquoi garder NeL dans le nom ? :o\\
2017-10-06 21:30:40 * YannK aime bien le nom NeL, car cela fait référence au moteur de jeu
===== Développement =====
Le code source de WebNeL est disponible sur le [[gitlab>Tycho/WebNeL|dépôt GitLab]]. Ce développement s'effectue en quatre grandes étapes.
TITLE: Modélisation de la base de données
PRIORITY: 1
PROGRESS: 20%
DESCRIPTION: Cette étape consiste à créer les modèles Django de manière à ce que ces derniers utilisent directement la base de données déjà présente.
Chaque base de données utilise une app Django séparé. Pour créer une app à partir de la base de donnée, il faut :
- Créer l'app : ''python manage.py startapp nom_de_la_db''.
- Générer le modèle de base : ''python manage.py inspectdb --database nom_de_la_db >nom_de_la_db/models.py''.
- Nettoyer le modèle précédemment généré :
- Vérifier la présence d'une clé primaire pour chaque modèle et que cette dernière soit cohérente.
- Vérifier que les champs vides ou nuls disposent bien de ''blank=True'' et, si nécessaire, ''null=True''.
- Spécifier des valeurs par défaut lorsque nécessaire.
- Modifier les noms de champs de manière à avoir quelque chose de propre et cohérent.
- Identifier les clé étrangères et autres relations puis modifier les champs en conséquence.
- Vérifier la clause ''ON DELETE'' de chaque relation.
- Identifier et intégrer les choix multiples.
- Corriger les fautes d'orthographe de grammaire.
- Ordonner les modèles.
- Remplacer les commentaires par défaut par de vrais commentaires.
TITLE: Création des applications
PRIORITY: 2
PROGRESS: 0%
DESCRIPTION: Lors de cette étape, les modèles précédemment créés sont utilisés pour véritablement créer l'application web. Les fonctionnalités doivent êtres exactement les mêmes que celles de l'application PHP. Les composants utilisant ces applications seront clairement identifiés dans les commentaires de chaque vues.
TITLE: La mise en production
PRIORITY: 3
PROGRESS: 0%
DESCRIPTION: WebNeL est alors mis en production simultanément avec l'application PHP. Les URL sont progressivement mises à jour de manière à ce qu'à terme seul WebNeL soit utilisé. Une veille des journaux d'erreurs et d'accès est faite de manière à détecter tout problème.
TITLE: Restructuration, nettoyage
PRIORITY: 4
PROGRESS: 0%
DESCRIPTION: L'application PHP est enlevée de la production et supprimée du dépôt. WebNeL est modifié de manière à activer les migrations Django et à ce que ce dernier prenne la main sur la base de données au lieux de simplement l'utiliser. Les modèles peuvent alors être modifiés de manière à assainir la base et ajouter de nouvelles fonctionnalités.
===== Documentation =====
* [[fr:nel_mysql|La base de donnée du serveur de jeu]] ;
> Glorf | nel.users -> pour la connexion en jeu
> Glorf | ams_users -> pour la connexion à l'AMS, les comptes ne sont pas nécessairemment les mêmes (par ex un joueur lambda n'a en théorie pas le droit de se co à l'administration des différents comptes)
> Glorf | neltool -> c'est le très très très vén,érable outil en PHP pour gérer les shard sans se co au serveur
> Glorf | localiser un user, voir l'état des différents services, etc
> Shepeng | d'après deed la base kring est utile
> Shepeng | créée pourle ring, mais unepartie des fonctionnalitées ayant été intégrées dans le serveur de base, elle est devenue nécessaire si j'ai bien compris
===== Dates par défaut =====
MySQL a la mauvaise idée d'utiliser la valeur 0000-00-00 par défaut lorsqu’une date n'est pas renseignée. Ceci pose des problèmes avec Python/Django. Ce problème est à étudier afin d'en tirer la meilleur solution possible.
* https://code.djangoproject.com/ticket/443
* https://code.djangoproject.com/ticket/2763
* https://code.djangoproject.com/ticket/2369
* https://code.djangoproject.com/ticket/2763
* https://docs.python.org/3/library/datetime.html
{{tag>Serveur Web}}