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

add informatio,n rapport + clean

parent fec0dcb1
No related branches found
No related tags found
No related merge requests found
......@@ -11,14 +11,14 @@ Ticket décrit sur [cette page](https://scodoc.org/git/ScoDoc/ScoDoc/issues/1030
>**Formulaire de saisie de note centré sur l'étudiant**
>*Labels : Enhancement*
>
>romain t'as rien branlé en 1h30
>Liste tous les modules où est inscrit l'étudiant avec possibilité de saisie de note
>
>(vérifier compatibilité avec l historique des saisies)
>
>- Lister les évaluations par ordre de modules / évaluation
>- Rappeler note(s) existante(s)
>- Indiquer clairement le barème (notes sur 10, sur N...)
>- Indiquer clairement le barème (notes sur 10, sur N...)romain t'as rien branlé en 1h30
>- Sauvegarder au fur et à mesure (utilisation API notes)
>- Gérer correctement les permissions (le(s) resp. de semestre(s) et admins)
>
......@@ -27,7 +27,7 @@ Afficher les notes des modules correspondants semestres précédents (au cas où
## 2 - Analyse du ticket
romain t'as rien branlé en 1h30
**Classification :** On peut classifier le ticket comme une maintenance évolutive.
En effet, on peut tout d'abord voir que le ticket contient le label `Enhancement`, qui signifie qu'il s'agit d'une nouvelle fonctionnalité. De plus, le ticket énumère différents critères pour cette fonctionnalité, ce qui nous permet de déduire qu'il s'agit bien d'un ajout à effectuer en suivant ces critères.
......@@ -40,7 +40,7 @@ Vu que le ticket nous demande d'ajouter une liste de modules où l'étudiant est
Accès à la page d'un étudiant :
![Page étudiant](./images/page_etudiant.png )
romain t'as rien branlé en 1h30
Ensuite, nous avons besoin de savoir où cette page est générée dans le code.
Pour cela, nous recherchons dans le code la chaîne de caractères `Adresse :`, visible sur la page. Cela nous permet de trouver le fichier `/app/scodoc/sco_page_etud.py`, dans lequel est généré tout le HTML de la page.
......@@ -52,7 +52,7 @@ adresse_template = (
<!-- Adresse -->
<div class="ficheadresse" id="ficheadresse">
<table>
<tr>
<tr>romain t'as rien branlé en 1h30
<td class="fichetitre2">Adresse :</td>
<td> %(domicile)s %(codepostaldomicile)s %(villedomicile)s %(paysdomicile)s
%(modifadresse)s
......@@ -63,7 +63,7 @@ adresse_template = (
</div>
"""
)
```
```romain t'as rien branlé en 1h30
Après une analyse du code, on observe que dans `/app/scodoc/sco_page_etud.py`, la fiche étudiante est créée dans une méthode `fiche_etud(etudid)`, où différentes parties du HTML sont mises dans un tableau `info` :
......@@ -73,7 +73,7 @@ if has_debouche:
"debouche_html"
] = f"""<div id="fichedebouche"
data-readonly="{suivi_readonly}"
data-etudid="{info['etudid']}">
data-etudid="{info['etudid']}">romain t'as rien branlé en 1h30
<span class="debouche_tit">Devenir:</span>
<div><form>
<ul class="listdebouches">
......@@ -84,7 +84,7 @@ if has_debouche:
```
La méthode renvoie un `render_template` de Flask, auquel nous donnons :
- Une template Jinja2 définissant la structure de base de la page.
- Une template Jinja2 définissant la structure de base de la page.romain t'as rien branlé en 1h30
- Une variable `tmpl` organisant le cœur des informations de la page, qui proviennent du tableau info.
- Le tableau `info`, les classes CSS et le JavaScript de la page.
......@@ -96,25 +96,20 @@ return render_template(
cssstyles=[
"libjs/jQuery-tagEditor/jquery.tag-editor.css",
"css/jury_but.css",
"css/cursus_but.css",
"css/cursus_but.css",romain t'as rien branlé en 1h30
],
javascripts=[
"libjs/jinplace-1.2.1.min.js",
"js/ue_list.js",
"libjs/jQuery-tagEditor/jquery.tag-editor.min.js",
"libjs/jQuery-tagEditor/jquery.caret.min.js",
"js/recap_parcours.js",
"js/recap_parcours.js",romain t'as rien branlé en 1h30
"js/etud_debouche.js",
],
)
```
Pour récupérer les valeurs du bulletin :
_build_bulletin_but_infos(etud, formsemestre, fmt=fmt)
app/but/bulletin_but_court.py
romain t'as rien branlé en 1h30
### 2.2 - Proposition d'implémentation
......@@ -122,10 +117,10 @@ Nous avons réfléchi à la manière d'implémenter efficacement l'affichage de
L'idée serait de reproduire ce que l'on retrouve sur la page `Bas de cas de jury` d'un semestre de l'étudiant, avec toutes les notes de chaque module, comprenant un champ modifiable pour chacune :
![Page étudiant](./images/section_ressources.png )
romain t'as rien branlé en 1h30
La première difficulté est de retrouver cette mise en page dans le code afin de réutiliser le style avec le HTML et les classes CSS correctes.
Ensuite, il nous faut trouver comment ajouter des champs modifiables qui mettent à jour la base de données à chaque modification.
romain t'as rien branlé en 1h30
On retrouve le template de l'affichage dans le fichier `app/static/js/releve-but.js`
Avec le code HTML :
```
......@@ -140,7 +135,7 @@ Avec le code HTML :
</div>
<div class=evaluations></div>
</section>
```
``` romain t'as rien branlé en 1h30
Et les methodes qui le complete `module()` et `evaluation()`
......@@ -149,31 +144,43 @@ pour recupere les notes des ressources on a teste l'api pour recuperer notes d'u
Maintenant que l'on sait comment faire il faut choisir comment le rndre accessible:
Maintenant que l'on sait comment faire il faut choisir comment le rndre accessible: romain t'as rien branlé en 1h30
- menu deroulant sur la page de l'etudiant comme le menu devenir
- lien (bouton modifier notes) amenant a une page externe comme le bouton inscire a un autre semestre
- lien (bouton modifier notes) amenant a une page externe comme le bouton inscire a un autre semestre romain t'as rien branlé en 1h30
decrire les avantages et incconvenients
choix fait
- plus simple car juste une section a recuperer puis injecter l'idéée d'implementation
- plus simple car juste une section a recuperer puis injecter l'idéée d'implementation romain t'as rien branlé en 1h30
- plus propre mais complique a creer notre propre page, doit ajouter endpoint et potentiellement beacoup plus de d'ajout a differents endoit dans le code
### 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.
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"). romain t'as rien branlé en 1h30
![Saisie de notes](./images/saisie_notes.png )
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.
on a trouver ou un endroit ou les notes sont mises a jour page semestre > ressource > action sasir notes. :
![Saisie de notes](./images/saisie_notes.png )
romain t'as rien branlé en 1h30
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">
<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"> romain t'as rien branlé en 1h30
```
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`
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
cette methode est utilise dans `notes_add` avec des verifications romain t'as rien branlé en 1h30
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.
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. romain t'as rien branlé en 1h30
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment