Skip to content
Snippets Groups Projects
Commit 715914a6 authored by Romain Degez's avatar Romain Degez
Browse files

report : add information save notes

parent cf159d9e
No related branches found
No related tags found
No related merge requests found
......@@ -4,6 +4,10 @@ title: Compte rendu analyse du ticket 830
[TOC]
## Préambule
Le dépot Git utilisé lors de cet exercice est disponible à [cette adresse](https://gitlab.univ-lille.fr/armand.sady.etu/scodoc_r6a06).
Il a été réalisé par Armand SADY et Romain DEGEZ.
## 1 - Le ticket
......@@ -127,7 +131,7 @@ L'idée serait de reproduire ce que l'on retrouve sur la page `Bas de cas de jur
Ce ticket nous demande une implémentation en front-end et en back-end, en effet il faut afficher les notes des évaluations pour chaque modules sur la fiche étudiante, mais également permettre l'ajout et la modification de ces notes.
### 2.2.1 - Implémentation graphique
#### 2.2.1 - Implémentation graphique
Nous avons plusieurs problèmes qu'il faut palier afin d'implémenter l'interface comme nous le souhaitons. Premièrement il faut récupérer les infos qui composent notre liste.
......@@ -176,35 +180,41 @@ Nous observons dans le code qu'un ModuleImpl à un attribut "evaluations" qui es
Avec ces éléments, nous serions déjà capable d'obtenir et d'afficher les notes des étudiants. Ce qui poserait maintenant problème est l'affichage dans un champ de saisie dans lequel nous aurions les notes déjà présentes modifiables et un champ vide quand la méthode "get_etud_note()" nous renvois None, en cas de manque de note pour l'évaluation courante.
### 2.2.2 - Implémenter la phase mise à jour des notes
#### 2.2.2 - Implémenter la phase mise à jour des notes
Une fois que les notes sont affichées, l'utilisateur doit pouvoir les modifier et elles doivent être sauvegardées en direct à chaque modification.
Une fois que les notes sont affichées, l'utilisateur doit pouvoir les modifier, et elles doivent être sauvegardées en direct à chaque modification.
Tout d'abord, nous recherchons si cette fonctionnalité est déjà implémentée quelque part. Logiquement, une page permettant de saisir les notes des étudiants pour une évaluation doit exister.
Nous avons trouvé un endroit où les notes sont mises à jour comme supposé (page Semestre > Ressource > Action "Saisir notes").
![Saisie de notes](./images/saisie_notes.png )
En ouvrant les devtools pour inspecter un élément note, on retrouve ceci
En ouvrant les devtools pour inspecter un élément note, on retrouve ceci :
```
<input type="text" name="note_14514" size="5" id="formnotes_note_14514" class="note" data-last-saved-value="8.5" data-orig-value="8.5" data-etudid="14514" onkeypress="return enter_focus_next(this, event);" value="8.5">
```
Bonne nouvelle, cette page sauvegarde les notes à chaque modification comme ce que nous voulons.
Bonne nouvelle, cette page sauvegarde les notes à chaque modification, comme nous le souhaitons.
Comme précédemment, nous recherchons cette page dans le code. En utilisant la chaîne de caractères `Mettre les notes manquantes à`, que l'on voit sur la page, nous avons pu identifier le fichier responsable de la mise à jour des notes : `/app/scodoc/sco_saisie_notes.py`.
Nous repérons plusieurs parties qui nous sont utiles : la création du formulaire et la mise à jour des notes.
Nous constatons que la méthode `_record_note` permet de modifier les notes dans la base de données. Pour ce faire, elle se connecte à la BDD et exécute des requêtes SQL via un `cursor.execute()`.
Cette méthode est utilisée dans `notes_add` avec d'autres méthodes afin de vérifier que tout est correct.
Nous pouvons donc utiliser la méthode `notes_add` pour ajouter ou modifier des notes à chaque fois qu'un input est modifié, en lui fournissant l'`evaluation_id` ainsi qu'une liste contenant des tuples `(etudid, value)`.
exemple d'input pour la saisie
```
<input type="text" name="note_14514" size="5" id="formnotes_note_14514" class="note" data-last-saved-value="8.5" data-orig-value="8.5" data-etudid="14514" onkeypress="return enter_focus_next(this, event);" value="8.5">
```
Un deuxième point important est qu'il faut sauvegarder l'historique des saisies de notes. Or, c'est précisément ce que fait déjà la méthode `notes_add`. Cette méthode est donc particulièrement intéressante.
en cherchant dans le code la chaine de caractere `Mettre les notes manquantes à` on a pu trouver dans quelle fichier est géré la mise a jour des notes `/app/scodoc/sco_saisie_notes.py`
Cependant, un inconvénient subsiste : le ticket demande d'utiliser l'API note pour sauvegarder les notes, et donc de ne pas modifier directement la base de données, comme le fait la méthode `notes_add`.
on repere plusieurs partie qui nous osnt requiss, creer le foprulaire, update les ,notes
on constate que la methode `_record_note` permet de modifier les notes dans la base de données, pour ce faire elle se connecte a la bdd et modfie en executant des requelte sql avec un `cursor.execute()`
cette methode est utilise dans `notes_add` avec des verifications
il seraitent interessant d'utiliser ses methodes pour faire toutes les verifcations requises, ou alors de créer les notres pour simplement modifier la base de données pour ce que jous avons besoins sans toutes les vérifications.
Ainsi, pour enregistrer les changements de notes, il faudrait effectuer une requête POST à l'API à l'adresse suivante :
`/evaluation/evaluation_id/notes/set`
(en remplaçant `evaluation_id` par l'ID de l'évaluation) et en envoyant comme données une liste de notes ainsi qu'un commentaire, sous la forme suivante :
```json
{
"notes": [[1, 17], [2, "SUPR"]],
"comment": "sample test"
}
```
## 3 - Problème rencontré
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment