1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2024-11-27 02:43:01 +00:00

Clean spaces

Pierre-antoine Comby 2020-03-21 23:31:24 +01:00
parent d8242e262b
commit 8236d9f225
3 changed files with 57 additions and 48 deletions

48
Apps.md Normal file

@ -0,0 +1,48 @@
# Applications de la NoteKfet2020
La NoteKfet est un projet Django, décomposé en applications.
Certaines Applications sont développées uniquement pour ce projet, et sont indispensables, d'autre sont packagé et sont installées comme dépendances.
Enfin Des fonctionnalités annexes ont été rajouté, mais ne sont pas essentiel au déploiement de la NoteKfet; leur usage est cependant recommandé.
Le front utilise le framework Bootstrap4 et quelques morceaux de javascript custom.
### Applications indispensables:
* `note_kfet`:
Application "projet" de django, c'est ici que la config de la note est gérée.
* `member`:
Gestion des profils d'utilisateurs, des clubs et de leur membres.
* `note`:
Les notes associés a des utilisateurs ou des clubs.
* `activity`:
La gestion des Activités (créations, gestion, entrée...)
* `rights`:
Backend de droits, limites les pouvoirs des utilisateurs
* `api`:
API REST de la note, est notamment utilisée pour rendre la note dynamique
(notamment la page de conso)
### Applications packagées
* `polymorphic`
Utiliser pour la création de models polymorphiques (`Note` et `Transaction` notamment) cf [Note](Note).
L'utilisation des models polymorphiques est détaillé sur la documentation du package:
[https://django-polymorphic.readthedocs.io/en/stable/](https://django-polymorphic.readthedocs.io/en/stable/)
* `crispy_forms`
Utiliser pour générer des forms avec bootstrap4
* `django_tables2`
utiliser pour afficher des tables de données et les formater, en python plutot qu'en HTML.
* `restframework`
Base de l'api.
### Applications facultatives
* `logs`
Enregistre toute les modifications effectuées en base de donnée.
* `cas-server`
Serveur central d'authenfication, permet d'utiliser son compte de la NoteKfet2020 pour se connecter à d'autre application ayant intégrer un client.
* `cas`
Client d'authenfication centralisé. permet de se connecter à la note via le CAS.
* `scripts`
Ensemble de commande `./manage.py` pour la gestion de la note: import de données, verification d'intégrité, etc...

@ -1,8 +1,14 @@
Chaque modification effectuée sur un modèle est enregistrée dans la base dans données.
Dès qu'un modèle veut être sauvegardé, deux signaux sont envoyés dans `logs.signals` : un avant et un après la sauvegarde. En pré-sauvegarde, on récupère l'ancienne version du modèle, si elle existe. En post-sauvegarde, on récupère l'utilisateur et l'IP courants (voir ci-dessous), on convertit les modèles en JSON et on enregistre une entrée `Changelog` dans la base de données.
Dès qu'un modèle veut être sauvegardé, deux signaux sont envoyés dans `logs.signals` : un avant et un après la sauvegarde.
En pré-sauvegarde, on récupère l'ancienne version du modèle, si elle existe.
En post-sauvegarde, on récupère l'utilisateur et l'IP courants (voir ci-dessous), on convertit les modèles en JSON et on enregistre une entrée `Changelog` dans la base de données.
Pour récupérer l'utilisateur et son IP, le middleware `logs.middlewares.LogsMiddlewares` récupère à chaque requête l'utilisateur et l'adresse IP, et les stocke dans le processus courant, afin qu'ils puissent être récupérés par les signaux. Si jamais la modification ne provient pas d'une requête Web, on suppose qu'elle vient d'une instruction lancée avec `manage.py`. On récupère alors le nom de l'utilisateur dans l'interface de commandes, et si une note est associée à cet alias, alors on considère que c'est le détenteur de la note qui a effectué cette modification, sur l'adresse IP `127.0.0.1`. Sinon, le champ est laissé à `None`.
Pour récupérer l'utilisateur et son IP, le middleware `logs.middlewares.LogsMiddlewares` récupère à chaque requête l'utilisateur et l'adresse IP, et les stocke dans le processus courant, afin qu'ils puissent être récupérés par les signaux.
Si jamais la modification ne provient pas d'une requête Web, on suppose qu'elle vient d'une instruction lancée avec `manage.py`.
On récupère alors le nom de l'utilisateur dans l'interface de commandes, et si une note est associée à cet alias, alors on considère que c'est le détenteur de la note qui a effectué cette modification, sur l'adresse IP `127.0.0.1`.
Sinon, le champ est laissé à `None`.
Une entrée de `Changelog` contient les informations suivantes :
@ -31,4 +37,4 @@ Exemple de Changelog, pour la création d'une transaction de 42424242 centimes d
}
```
S'il est préférable de passer en console Postgresql pour parcourir les logs, ils sont trouvables via l'API dans `/api/logs`, sous réserve d'avoir les droits suffisants (ie. être respo info).
S'il est préférable de passer en console Postgresql pour parcourir les logs, ils sont trouvables via l'API dans `/api/logs`, sous réserve d'avoir les droits suffisants (ie. être respo info).

45
home.md

@ -2,48 +2,3 @@ Bienvenu sur le Wiki de la NoteKfet2020. Ce wiki est plutot orienté vers un pub
Des informations complémentaires sont également disponibles sur le [Wiki Crans](https://wiki.crans.org/NoteKfet/NoteKfet2020/)
## Structure de la NoteKfet
La NoteKfet est un projet Django, décomposé en applications. Certaines Applications sont développé uniquement pour ce projet, et sont indispensables, d'autre sont packagé et sont installées comme dépendances. Enfin Des fonctionnalités annexes ont été rajouté, mais ne sont pas essentiel au déploiement de la NoteKfet; leur usage est cependant recommandé.
Le front utilise le framework Bootstrap4 et quelques morceaux de javascript custom.
### Applications indispensables:
* `note_kfet`:
Application "projet" de django, c'est ici que la config de la note est gérée.
* `member`:
Gestion des profils d'utilisateurs, des clubs et de leur membres.
* `note`:
Les notes associés a des utilisateurs ou des clubs.
* `activity`:
La gestion des Activités (créations, gestion, entrée...)
* `rights`:
Backend de droits, limites les pouvoirs des utilisateurs
* `api`:
API REST de la note, est notamment utiliser pour rendre la note dynamique (notamment la page de conso)
### Applications packagées
* `polymorphic`
Utiliser pour la création de models polymorphiques (`Note` et `Transaction` notamment) cf [Note](Note).
L'utilisation des models polymorphiques est détaillé sur la documentation du package: [https://django-polymorphic.readthedocs.io/en/stable/](https://django-polymorphic.readthedocs.io/en/stable/)
* `crispy_forms`
Utiliser pour générer des forms avec bootstrap4
* `django_tables2`
utiliser pour afficher des tables de données et les formater, en python plutot qu'en HTML.
* `restframework`
Base de l'api.
### Applications facultatives
* `logs`
Enregistre toute les modifications effectuées en base de donnée.
* `cas-server`
Serveur central d'authenfication, permet d'utiliser son compte de la NoteKfet2020 pour se connecter à d'autre application ayant intégrer un client.
* `cas`
Client d'authenfication centralisé. permet de se connecter à la note via le CAS.
* `scripts`
Ensemble de commande `./manage.py` pour la gestion de la note: import de données, verification d'intégrité, etc...