Commit 2cf2a50f authored by Quentin Pimont's avatar Quentin Pimont
Browse files

ajout des script pour récupèrer les conseillers

parent f1ac3392
......@@ -66,9 +66,14 @@ class GuiPubli():
for index_row, row in enumerate(read_csv):
# si c'est le header (première ligne)
if(index_row == 0):
if ('Nom' in row):
name_merged = True
else:
name_merged = False
# recupère les index de toutes les questions,le nom, le mail et la note final
all_index = {
'index_name' : row.index('Nom'),
'index_name' : row.index('Nom') if name_merged else row.index('name'),
'index_surname' : '' if name_merged else row.index('surname'),
'index_email' : row.index('Email'),
'note' : row.index('note'),
'206' : row.index('206'),
......@@ -132,85 +137,93 @@ class GuiPubli():
else:
# ci la ligne est un etudiant
if(row[all_index['index_name']]!= ''):
# indique si l'étudiant à été trouvé
student_finded = False
# récupération du nom complet de l'étudiant
full_name_current_student = row[all_index['index_name']]
# préparation des variable pour le nom et le prenom de l'etudiant séparé
first_name_current_stud = ''
last_name_current_stud = ''
# email de l'etudiant
email_current_stud = row[all_index['index_email']]
# pour chaque uv
for ev in self.list_uvs :
# on récupère les étudiant de cet uv puis on les parcours
for student_ev in ev.xpath('ListeInscrits/Inscrit') :
# si le nom ou l'email correspond à ceux de l'etudiant courant
if(full_name_current_student == student_ev.xpath('Prenom')[0].text + ' ' + student_ev.xpath('Nom')[0].text or email_current_stud == student_ev.xpath('Email')[0].text):
# on recupère son nom et prénom
first_name_current_stud = student_ev.xpath('Prenom')[0].text
last_name_current_stud = student_ev.xpath('Nom')[0].text
# on ajoute le mail dans une liste qui servira pour le fichier resp.csv
self.student_tested.append(email_current_stud)
# on indique que l'etudiant à été trouvé
student_finded = True
# on arrête le parcours des étudiants de cet uv
break
# si l'etudiant à été trouvé
if(student_finded):
# on arrète le parcours des uvs
break
# on prépare la ligne à erire pour l'étudiants avec son nom, prénoms, mails, et le calcul des notes pour chaque catégories.
current_row = {
'Prénom' : first_name_current_stud,
'Nom' : last_name_current_stud,
'Tuteur' : '',
'Adresse de courriel' : email_current_stud,
'Analyser un algorithme_info NF01' : (self.convert_int(row[all_index['algo1']]) + self.convert_int(row[all_index['algo2']])) * 100 / 2,
'Analyser le mouvement d\'un corps en chute libre_phys PS21' : self.convert_int(row[all_index['9714']]) * 100 / 1,
'Associer une fonction dérivée à une fonction primitive_math PS21 MT90 PS90' : self.convert_int(row[all_index['fdp1']]) * 100 / 1,
'Calculer des dérivées dont des fonctions composées_math CM11 PS21 MT90 PS90' : (self.convert_int(row[all_index['mathsbis119']]) + self.convert_int(row[all_index['mathsbis120']])) * 100 / 2,
'Calculer des intégrales simples_math CM11 MT90' : self.convert_int(row[all_index['mathsbis11']]) * 100 / 1,
'Calculer module et argument d\'une opération sur les nombres complexes_math PS94 MT90' : self.convert_int(row[all_index['mathsbis28b']]) * 100 / 1,
'Calculer des vitesses_phys PS21' : self.convert_int(row[all_index['Vitesse31']]) * 100 / 1,
'Comprendre l\'appartenance à un ensemble_math PS93 MT90' : self.convert_int(row[all_index['VH6']]) * 100 / 1,
'Connaître le vocabulaire mathématique_math MT90' : (self.convert_int(row[all_index['VH10']]) + self.convert_int(row[all_index['VHb2']])) * 100 / 2,
'Connaître les éléments de laboratoire_chim CM11' : self.convert_int(row[all_index['ella']]) * 100 / 1,
'Connaître les fonctions chimiques de base_chim CM11' : self.convert_int(row[all_index['fc1']]) * 100 / 1,
'Connaître les fonctions et leurs dérivées en trigonométrie_math PS21 MT90' : (self.convert_int(row[all_index['maths115']]) + self.convert_int(row[all_index['maths19']])) * 100 / 2,
'Connaître les grandeurs les plus courantes_phys CM11 PS90' : (self.convert_int(row[all_index['OG1']]) + self.convert_int(row[all_index['OG32']])) * 100 / 2,
'Connaître les propriétés du pH_chim CM11' : self.convert_int(row[all_index['BA1501']]) * 100 / 1,
'Connaître les théorèmes de Thalès et Pythagore_math PS94' : (self.convert_int(row[all_index['pytha42']]) + self.convert_int(row[all_index['pytha43']]) + self.convert_int(row[all_index['thales32']]) + self.convert_int(row[all_index['thales42']])) * 100 / 4,
'Définir le barycentre_phys PS21' : (self.convert_int(row[all_index['Bary22']]) + self.convert_int(row[all_index['Bary32']])) * 100 / 2,
'Déterminer le domaine de définition d\'une fonction_math MT90' : self.convert_int(row[all_index['VHbis4']]) * 100 / 1,
'Différencier les notions de masse et de poids_phys PS21 NF01' : (self.convert_int(row[all_index['mp22']]) + self.convert_int(row[all_index['mp42']])) * 100 / 2,
'Effectuer des opérations en géométrie 3d_math PS21 NF01' : (self.convert_int(row[all_index['Geo3d21']]) + self.convert_int(row[all_index['Geo3d41']])) * 100 / 2,
'Effectuer un calcul vectoriel_phys PS93 PS21' : (self.convert_int(row[all_index['vec82']]) + self.convert_int(row[all_index['Phvec52']])) * 100 / 2,
'Effectuer une conversion entre formulations cartésienne et polaire_phys PS94' : self.convert_int(row[all_index['mathsbis111']]) * 100 / 1,
'Équilibrer une réaction chimique_chim CM11' : self.convert_int(row[all_index['BA1301']]) * 100 / 1,
'Extraire des données d\'un énoncé_math PS93 MT90' : (self.convert_int(row[all_index['lecture11']]) + self.convert_int(row[all_index['lecture31']])) * 100 / 2,
'Identifier la croissance et la décroissante d\'une suite_math MT90' : (self.convert_int(row[all_index['maths12']]) + self.convert_int(row[all_index['maths126']])) * 100 / 2,
'Identifier la matière_chim CM11' : self.convert_int(row[all_index['BA2101']]) * 100 / 1,
'Interpréter un test logique_math NF01' : self.convert_int(row[all_index['testlog1']]) * 100 / 1,
'Maîtriser le raisonnement par récurrence_math MT90' : (self.convert_int(row[all_index['phrec21']]) + self.convert_int(row[all_index['phrec41']])) * 100 / 2,
'Maîtriser les expressions algébriques_math MT90' : self.convert_int(row[all_index['mathsbis16']]) * 100 / 1,
'Manipuler des assertions logiques_math NF01' : (self.convert_int(row[all_index['assert1']]) + self.convert_int(row[all_index['assert2']])) * 100 / 2,
'Reconnaître la continuité d\'une fonction_math MT90' : self.convert_int(row[all_index['mathsbis215']]) * 100 / 1,
'Reconnaître la courbe représentative d\'une fonction_math MT90' : (self.convert_int(row[all_index['206']]) + self.convert_int(row[all_index['208']])) * 100 / 2,
'Reconnaître une suite géométrique ou arithmétique_math MT90' : self.convert_int(row[all_index['maths123']]) * 100 / 1,
'Tester le principe de linéarité_math MT90' : self.convert_int(row[all_index['mathbis131']]) * 100 / 1,
'Trouver la forme canonique d\'un polynôme_math MT90' : self.convert_int(row[all_index['FLVH1']]) * 100 / 1,
'Utiliser les fonctions logarithme, exponentielle et puissance_math MT90 NF01 CM11' : self.convert_int(row[all_index['maths17']]) * 100 / 1,
'Définir le PGCD et PPMC_math MT90 NF01' : (self.convert_int(row[all_index['maths224']]) + self.convert_int(row[all_index['maths225']])) * 100 / 2,
'Définir le centre de gravité_phys PS21' : (self.convert_int(row[all_index['Poutres12']]) + self.convert_int(row[all_index['Poutres41']])) * 100 / 2,
'Total du cours' : self.convert_float(row[all_index['note']]) * 5
}
# puis on ecrire la ligne
writer_csv_score.writerow(current_row)
if (row[all_index['note']] != 'ABS'):
if (name_merged):
# indique si l'étudiant à été trouvé
student_finded = False
# récupération du nom complet de l'étudiant
full_name_current_student = row[all_index['index_name']]
# préparation des variable pour le nom et le prenom de l'etudiant séparé
first_name_current_stud = ''
last_name_current_stud = ''
# email de l'etudiant
email_current_stud = row[all_index['index_email']]
# pour chaque uv
for ev in self.list_uvs :
# on récupère les étudiant de cet uv puis on les parcours
for student_ev in ev.xpath('ListeInscrits/Inscrit') :
# si le nom ou l'email correspond à ceux de l'etudiant courant
if(full_name_current_student == student_ev.xpath('Prenom')[0].text + ' ' + student_ev.xpath('Nom')[0].text or email_current_stud == student_ev.xpath('Email')[0].text):
# on recupère son nom et prénom
first_name_current_stud = student_ev.xpath('Prenom')[0].text
last_name_current_stud = student_ev.xpath('Nom')[0].text
# on ajoute le mail dans une liste qui servira pour le fichier resp.csv
self.student_tested.append(email_current_stud)
# on indique que l'etudiant à été trouvé
student_finded = True
# on arrête le parcours des étudiants de cet uv
break
# si l'etudiant à été trouvé
if(student_finded):
# on arrète le parcours des uvs
break
else :
first_name_current_stud = row[all_index['index_surname']]
last_name_current_stud = row[all_index['index_name']]
email_current_stud = row[all_index['index_email']]
self.student_tested.append(email_current_stud)
# on prépare la ligne à erire pour l'étudiants avec son nom, prénoms, mails, et le calcul des notes pour chaque catégories.
current_row = {
'Prénom' : first_name_current_stud,
'Nom' : last_name_current_stud,
'Tuteur' : '',
'Adresse de courriel' : email_current_stud,
'Analyser un algorithme_info NF01' : (self.convert_int(row[all_index['algo1']]) + self.convert_int(row[all_index['algo2']])) * 100 / 2,
'Analyser le mouvement d\'un corps en chute libre_phys PS21' : self.convert_int(row[all_index['9714']]) * 100 / 1,
'Associer une fonction dérivée à une fonction primitive_math PS21 MT90 PS90' : self.convert_int(row[all_index['fdp1']]) * 100 / 1,
'Calculer des dérivées dont des fonctions composées_math CM11 PS21 MT90 PS90' : (self.convert_int(row[all_index['mathsbis119']]) + self.convert_int(row[all_index['mathsbis120']])) * 100 / 2,
'Calculer des intégrales simples_math CM11 MT90' : self.convert_int(row[all_index['mathsbis11']]) * 100 / 1,
'Calculer module et argument d\'une opération sur les nombres complexes_math PS94 MT90' : self.convert_int(row[all_index['mathsbis28b']]) * 100 / 1,
'Calculer des vitesses_phys PS21' : self.convert_int(row[all_index['Vitesse31']]) * 100 / 1,
'Comprendre l\'appartenance à un ensemble_math PS93 MT90' : self.convert_int(row[all_index['VH6']]) * 100 / 1,
'Connaître le vocabulaire mathématique_math MT90' : (self.convert_int(row[all_index['VH10']]) + self.convert_int(row[all_index['VHb2']])) * 100 / 2,
'Connaître les éléments de laboratoire_chim CM11' : self.convert_int(row[all_index['ella']]) * 100 / 1,
'Connaître les fonctions chimiques de base_chim CM11' : self.convert_int(row[all_index['fc1']]) * 100 / 1,
'Connaître les fonctions et leurs dérivées en trigonométrie_math PS21 MT90' : (self.convert_int(row[all_index['maths115']]) + self.convert_int(row[all_index['maths19']])) * 100 / 2,
'Connaître les grandeurs les plus courantes_phys CM11 PS90' : (self.convert_int(row[all_index['OG1']]) + self.convert_int(row[all_index['OG32']])) * 100 / 2,
'Connaître les propriétés du pH_chim CM11' : self.convert_int(row[all_index['BA1501']]) * 100 / 1,
'Connaître les théorèmes de Thalès et Pythagore_math PS94' : (self.convert_int(row[all_index['pytha42']]) + self.convert_int(row[all_index['pytha43']]) + self.convert_int(row[all_index['thales32']]) + self.convert_int(row[all_index['thales42']])) * 100 / 4,
'Définir le barycentre_phys PS21' : (self.convert_int(row[all_index['Bary22']]) + self.convert_int(row[all_index['Bary32']])) * 100 / 2,
'Déterminer le domaine de définition d\'une fonction_math MT90' : self.convert_int(row[all_index['VHbis4']]) * 100 / 1,
'Différencier les notions de masse et de poids_phys PS21 NF01' : (self.convert_int(row[all_index['mp22']]) + self.convert_int(row[all_index['mp42']])) * 100 / 2,
'Effectuer des opérations en géométrie 3d_math PS21 NF01' : (self.convert_int(row[all_index['Geo3d21']]) + self.convert_int(row[all_index['Geo3d41']])) * 100 / 2,
'Effectuer un calcul vectoriel_phys PS93 PS21' : (self.convert_int(row[all_index['vec82']]) + self.convert_int(row[all_index['Phvec52']])) * 100 / 2,
'Effectuer une conversion entre formulations cartésienne et polaire_phys PS94' : self.convert_int(row[all_index['mathsbis111']]) * 100 / 1,
'Équilibrer une réaction chimique_chim CM11' : self.convert_int(row[all_index['BA1301']]) * 100 / 1,
'Extraire des données d\'un énoncé_math PS93 MT90' : (self.convert_int(row[all_index['lecture11']]) + self.convert_int(row[all_index['lecture31']])) * 100 / 2,
'Identifier la croissance et la décroissante d\'une suite_math MT90' : (self.convert_int(row[all_index['maths12']]) + self.convert_int(row[all_index['maths126']])) * 100 / 2,
'Identifier la matière_chim CM11' : self.convert_int(row[all_index['BA2101']]) * 100 / 1,
'Interpréter un test logique_math NF01' : self.convert_int(row[all_index['testlog1']]) * 100 / 1,
'Maîtriser le raisonnement par récurrence_math MT90' : (self.convert_int(row[all_index['phrec21']]) + self.convert_int(row[all_index['phrec41']])) * 100 / 2,
'Maîtriser les expressions algébriques_math MT90' : self.convert_int(row[all_index['mathsbis16']]) * 100 / 1,
'Manipuler des assertions logiques_math NF01' : (self.convert_int(row[all_index['assert1']]) + self.convert_int(row[all_index['assert2']])) * 100 / 2,
'Reconnaître la continuité d\'une fonction_math MT90' : self.convert_int(row[all_index['mathsbis215']]) * 100 / 1,
'Reconnaître la courbe représentative d\'une fonction_math MT90' : (self.convert_int(row[all_index['206']]) + self.convert_int(row[all_index['208']])) * 100 / 2,
'Reconnaître une suite géométrique ou arithmétique_math MT90' : self.convert_int(row[all_index['maths123']]) * 100 / 1,
'Tester le principe de linéarité_math MT90' : self.convert_int(row[all_index['mathbis131']]) * 100 / 1,
'Trouver la forme canonique d\'un polynôme_math MT90' : self.convert_int(row[all_index['FLVH1']]) * 100 / 1,
'Utiliser les fonctions logarithme, exponentielle et puissance_math MT90 NF01 CM11' : self.convert_int(row[all_index['maths17']]) * 100 / 1,
'Définir le PGCD et PPMC_math MT90 NF01' : (self.convert_int(row[all_index['maths224']]) + self.convert_int(row[all_index['maths225']])) * 100 / 2,
'Définir le centre de gravité_phys PS21' : (self.convert_int(row[all_index['Poutres12']]) + self.convert_int(row[all_index['Poutres41']])) * 100 / 2,
'Total du cours' : self.convert_float(row[all_index['note']]) * 5
}
# puis on ecrire la ligne
writer_csv_score.writerow(current_row)
# crée le fichier responsable
def create_resp_file(self):
# liste qui sera utiliser pour chaque row
all_code = ['id']
all_up_group = ['groupe supérieur']
all_title = ['nom']
all_resp = ['responsable']
all_etu = []
......@@ -228,6 +241,8 @@ class GuiPubli():
mails_student_uv = []
# ajout du code dans la liste des score
all_code.append(code_uv)
# ajout d'un up_group vide pour l'uv courante
all_up_group.append('')
# titre de l'uv
title_uv = uv.xpath('Titre')[0].text.lower()
# mail du responsable
......@@ -249,6 +264,7 @@ class GuiPubli():
all_etu.append(mails_student_uv)
# écrit les 3ère lignes du resp.csv(id/code, titre et responsable)
resp_csv_writer.writerow(all_code)
resp_csv_writer.writerow(all_up_group)
resp_csv_writer.writerow(all_title)
resp_csv_writer.writerow(all_resp)
# indique s'il y à encore des étudiant à écrire dans le fichier csv
......
import csv
import sys
from lxml import etree
student_not_register = []
xml_student = etree.parse('assets/input/a2019/inscrits_UV_A2019(4).xml')
list_uv = xml_student.xpath('/ExtractionInscriptions/ListeEnseignements/Enseignement')
with open('assets/input/a2019/bac_a19.csv') as amc_csv :
amc_reader = csv.reader(amc_csv, delimiter=',')
for index_row, row in enumerate(amc_reader):
if(index_row == 0):
index_mail = row.index('Email')
else:
student_finded = False
current_mail_student = row[index_mail]
if(current_mail_student != ''):
for uv in list_uv:
list_student = uv.xpath('ListeInscrits/Inscrit')
for student in list_student:
if(current_mail_student == student.xpath('Email')[0].text):
student_finded = True
break
if(student_finded):
break
if(not student_finded):
student_not_register.append(current_mail_student)
print(student_not_register)
print(len(student_not_register))
\ No newline at end of file
import os
import csv
from unidecode import unidecode
all_name_tutor = []
all_email_tutor = []
first_user = True
header_input_amc = ['Conseiller', 'Email Conseiller', 'Nom', 'Prénom', 'Email', 'Identifiant BAC', 'Salle']
student_bac_csv = open('assets/input/a2019/liste_etudiants_TC00_A19.csv')
student_bac_reader = csv.reader(student_bac_csv, delimiter=',')
with open('assets/output/correct/input_for_amc.csv', 'w') as input_amc:
input_amc_writer = csv.DictWriter(input_amc, fieldnames = header_input_amc, quoting = csv.QUOTE_NONNUMERIC)
input_amc_writer.writeheader()
for index_row_bac, row_bac in enumerate(student_bac_reader):
if(index_row_bac == 0):
index_student_bac = {
'tutor' : row_bac.index('Conseiller'),
'lastname' : row_bac.index('Nom'),
'firstname' : row_bac.index('Prénom'),
'email' : row_bac.index('Email'),
'id_bac' : row_bac.index('Identifiant BAC'),
'room' : row_bac.index('Salle')
}
else:
tutor_fullname = unidecode(row_bac[index_student_bac['tutor']].lower())
if (tutor_fullname != '' and tutor_fullname not in all_name_tutor):
current_mail_tutor = ''
with open('assets/input/a2019/Utilisateurs.csv') as moodle_user_csv:
moodle_user_reader = csv.reader(moodle_user_csv, delimiter=',')
for index_row_user, row_user in enumerate(moodle_user_reader):
if(index_row_user == 0):
header_user_moodle = {
'email' : row_user.index('email'),
'firstname' : row_user.index('firstname'),
'lastname' : row_user.index('lastname')
}
first_user = False
else:
lastname_current_user = row_user[header_user_moodle['lastname']].lower()
firstname_current_user = row_user[header_user_moodle['firstname']].lower()
full_name_user = unidecode(lastname_current_user + ' ' + firstname_current_user)
#print(tutor_fullname + ' === ' + full_name_user)
if (tutor_fullname == full_name_user):
current_mail_tutor = row_user[header_user_moodle['email']]
all_name_tutor.append(tutor_fullname)
all_email_tutor.append(current_mail_tutor)
break
else:
if(tutor_fullname != ''):
index_current_tutor = all_name_tutor.index(tutor_fullname)
current_mail_tutor = all_email_tutor[index_current_tutor]
else:
current_mail_tutor = ''
row_to_write = {
'Conseiller' : row_bac[index_student_bac['tutor']],
'Email Conseiller' : current_mail_tutor,
'Nom' : row_bac[index_student_bac['lastname']],
'Prénom' : row_bac[index_student_bac['firstname']],
'Email' : row_bac[index_student_bac['email']],
'Identifiant BAC' : row_bac[index_student_bac['id_bac']],
'Salle' : row_bac[index_student_bac['room']]
}
input_amc_writer.writerow(row_to_write)
\ No newline at end of file
import csv
header_score_file = [
'Prénom',
'Nom',
'Tuteur',
'Adresse de courriel',
'Analyser un algorithme_info NF01',
'Analyser le mouvement d\'un corps en chute libre_phys PS21',
'Associer une fonction dérivée à une fonction primitive_math PS21 MT90 PS90',
'Calculer des dérivées dont des fonctions composées_math CM11 PS21 MT90 PS90',
'Calculer des intégrales simples_math CM11 MT90',
'Calculer module et argument d\'une opération sur les nombres complexes_math PS94 MT90',
'Calculer des vitesses_phys PS21',
'Comprendre l\'appartenance à un ensemble_math PS93 MT90',
'Connaître le vocabulaire mathématique_math MT90',
'Connaître les éléments de laboratoire_chim CM11',
'Connaître les fonctions chimiques de base_chim CM11',
'Connaître les fonctions et leurs dérivées en trigonométrie_math PS21 MT90',
'Connaître les grandeurs les plus courantes_phys CM11 PS90',
'Connaître les propriétés du pH_chim CM11',
'Connaître les théorèmes de Thalès et Pythagore_math PS94',
'Définir le barycentre_phys PS21',
'Déterminer le domaine de définition d\'une fonction_math MT90',
'Différencier les notions de masse et de poids_phys PS21 NF01' ,
'Effectuer des opérations en géométrie 3d_math PS21 NF01',
'Effectuer un calcul vectoriel_phys PS93 PS21',
'Effectuer une conversion entre formulations cartésienne et polaire_phys PS94',
'Équilibrer une réaction chimique_chim CM11',
'Extraire des données d\'un énoncé_math PS93 MT90',
'Identifier la croissance et la décroissante d\'une suite_math MT90',
'Identifier la matière_chim CM11',
'Interpréter un test logique_math NF01',
'Maîtriser le raisonnement par récurrence_math MT90',
'Maîtriser les expressions algébriques_math MT90',
'Manipuler des assertions logiques_math NF01',
'Reconnaître la continuité d\'une fonction_math MT90',
'Reconnaître la courbe représentative d\'une fonction_math MT90',
'Reconnaître une suite géométrique ou arithmétique_math MT90',
'Tester le principe de linéarité_math MT90',
'Trouver la forme canonique d\'un polynôme_math MT90',
'Utiliser les fonctions logarithme, exponentielle et puissance_math MT90 NF01 CM11',
'Définir le PGCD et PPMC_math MT90 NF01',
'Définir le centre de gravité_phys PS21',
'Total du cours'
]
with open('assets/output/correct/notefull.csv', 'w') as merge_tutor_csv:
merge_tutor_writer = csv.DictWriter(merge_tutor_csv, fieldnames=header_score_file, quoting = csv.QUOTE_NONNUMERIC)
merge_tutor_writer.writeheader()
with open('assets/output/correct/note.csv') as score_csv:
score_reader = csv.reader(score_csv, delimiter=',')
for index_row_score, row_score in enumerate(score_reader):
if(index_row_score == 0):
index_score_csv = {
'firstname' : row_score.index('Prénom'),
'lastname' : row_score.index('Nom'),
'tutor' : row_score.index('Tuteur'),
'email' : row_score.index('Adresse de courriel'),
'test1' : row_score.index('Analyser un algorithme_info NF01'),
'test2' : row_score.index('Analyser le mouvement d\'un corps en chute libre_phys PS21'),
'test3' : row_score.index('Associer une fonction dérivée à une fonction primitive_math PS21 MT90 PS90'),
'test4' : row_score.index('Calculer des dérivées dont des fonctions composées_math CM11 PS21 MT90 PS90'),
'test5' : row_score.index('Calculer des intégrales simples_math CM11 MT90'),
'test6' : row_score.index('Calculer module et argument d\'une opération sur les nombres complexes_math PS94 MT90'),
'test7' : row_score.index('Calculer des vitesses_phys PS21'),
'test8' : row_score.index('Comprendre l\'appartenance à un ensemble_math PS93 MT90'),
'test9' : row_score.index('Connaître le vocabulaire mathématique_math MT90'),
'test10' : row_score.index('Connaître les éléments de laboratoire_chim CM11'),
'test11' : row_score.index('Connaître les fonctions chimiques de base_chim CM11'),
'test12' : row_score.index('Connaître les fonctions et leurs dérivées en trigonométrie_math PS21 MT90'),
'test13' : row_score.index('Connaître les grandeurs les plus courantes_phys CM11 PS90'),
'test14' : row_score.index('Connaître les propriétés du pH_chim CM11'),
'test15' : row_score.index('Connaître les théorèmes de Thalès et Pythagore_math PS94'),
'test16' : row_score.index('Définir le barycentre_phys PS21'),
'test17' : row_score.index('Déterminer le domaine de définition d\'une fonction_math MT90'),
'test18' : row_score.index('Différencier les notions de masse et de poids_phys PS21 NF01' ),
'test19' : row_score.index('Effectuer des opérations en géométrie 3d_math PS21 NF01'),
'test20' : row_score.index('Effectuer un calcul vectoriel_phys PS93 PS21'),
'test21' : row_score.index('Effectuer une conversion entre formulations cartésienne et polaire_phys PS94'),
'test22' : row_score.index('Équilibrer une réaction chimique_chim CM11'),
'test23' : row_score.index('Extraire des données d\'un énoncé_math PS93 MT90'),
'test24' : row_score.index('Identifier la croissance et la décroissante d\'une suite_math MT90'),
'test25' : row_score.index('Identifier la matière_chim CM11'),
'test26' : row_score.index('Interpréter un test logique_math NF01'),
'test27' : row_score.index('Maîtriser le raisonnement par récurrence_math MT90'),
'test28' : row_score.index('Maîtriser les expressions algébriques_math MT90'),
'test29' : row_score.index('Manipuler des assertions logiques_math NF01'),
'test30' : row_score.index('Reconnaître la continuité d\'une fonction_math MT90'),
'test31' : row_score.index('Reconnaître la courbe représentative d\'une fonction_math MT90'),
'test32' : row_score.index('Reconnaître une suite géométrique ou arithmétique_math MT90'),
'test33' : row_score.index('Tester le principe de linéarité_math MT90'),
'test34' : row_score.index('Trouver la forme canonique d\'un polynôme_math MT90'),
'test35' : row_score.index('Utiliser les fonctions logarithme, exponentielle et puissance_math MT90 NF01 CM11'),
'test36' : row_score.index('Définir le PGCD et PPMC_math MT90 NF01'),
'test37' : row_score.index('Définir le centre de gravité_phys PS21'),
'total' : row_score.index('Total du cours')
}
else:
email_student_score_csv = row_score[index_score_csv['email']]
with open('assets/input/a2019/input_for_amc.csv') as tutor_csv:
tutor_reader =csv.reader(tutor_csv, delimiter=',')
for index_row_tutor, row_tutor in enumerate(tutor_reader):
if(index_row_tutor == 0):
index_tutor_csv = {
'tutor_mail' : row_tutor.index('Email Conseiller'),
'student_mail' : row_tutor.index('Email')
}
else:
if(email_student_score_csv == row_tutor[index_tutor_csv['student_mail']]):
tutor_mail = row_tutor[index_tutor_csv['tutor_mail']]
break
row_to_write = {
'Prénom' : row_score[index_score_csv['firstname']],
'Nom' : row_score[index_score_csv['lastname']],
'Tuteur' : tutor_mail,
'Adresse de courriel' : row_score[index_score_csv['email']],
'Analyser un algorithme_info NF01' : row_score[index_score_csv['test1']],
'Analyser le mouvement d\'un corps en chute libre_phys PS21' : row_score[index_score_csv['test2']],
'Associer une fonction dérivée à une fonction primitive_math PS21 MT90 PS90' : row_score[index_score_csv['test3']],
'Calculer des dérivées dont des fonctions composées_math CM11 PS21 MT90 PS90' : row_score[index_score_csv['test4']],
'Calculer des intégrales simples_math CM11 MT90' : row_score[index_score_csv['test5']],
'Calculer module et argument d\'une opération sur les nombres complexes_math PS94 MT90' : row_score[index_score_csv['test6']],
'Calculer des vitesses_phys PS21' : row_score[index_score_csv['test7']],
'Comprendre l\'appartenance à un ensemble_math PS93 MT90' : row_score[index_score_csv['test8']],
'Connaître le vocabulaire mathématique_math MT90' : row_score[index_score_csv['test9']],
'Connaître les éléments de laboratoire_chim CM11' : row_score[index_score_csv['test10']],
'Connaître les fonctions chimiques de base_chim CM11' : row_score[index_score_csv['test11']],
'Connaître les fonctions et leurs dérivées en trigonométrie_math PS21 MT90' : row_score[index_score_csv['test12']],
'Connaître les grandeurs les plus courantes_phys CM11 PS90' : row_score[index_score_csv['test13']],
'Connaître les propriétés du pH_chim CM11' : row_score[index_score_csv['test14']],
'Connaître les théorèmes de Thalès et Pythagore_math PS94' : row_score[index_score_csv['test15']],
'Définir le barycentre_phys PS21' : row_score[index_score_csv['test16']],
'Déterminer le domaine de définition d\'une fonction_math MT90' : row_score[index_score_csv['test17']],
'Différencier les notions de masse et de poids_phys PS21 NF01' : row_score[index_score_csv['test18']],
'Effectuer des opérations en géométrie 3d_math PS21 NF01' : row_score[index_score_csv['test19']],
'Effectuer un calcul vectoriel_phys PS93 PS21' : row_score[index_score_csv['test20']],
'Effectuer une conversion entre formulations cartésienne et polaire_phys PS94' : row_score[index_score_csv['test21']],
'Équilibrer une réaction chimique_chim CM11' : row_score[index_score_csv['test22']],
'Extraire des données d\'un énoncé_math PS93 MT90' : row_score[index_score_csv['test23']],
'Identifier la croissance et la décroissante d\'une suite_math MT90' : row_score[index_score_csv['test24']],
'Identifier la matière_chim CM11' : row_score[index_score_csv['test25']],
'Interpréter un test logique_math NF01' : row_score[index_score_csv['test26']],
'Maîtriser le raisonnement par récurrence_math MT90' : row_score[index_score_csv['test27']],
'Maîtriser les expressions algébriques_math MT90' : row_score[index_score_csv['test28']],
'Manipuler des assertions logiques_math NF01' : row_score[index_score_csv['test29']],
'Reconnaître la continuité d\'une fonction_math MT90' : row_score[index_score_csv['test30']],
'Reconnaître la courbe représentative d\'une fonction_math MT90' : row_score[index_score_csv['test31']],
'Reconnaître une suite géométrique ou arithmétique_math MT90' : row_score[index_score_csv['test32']],
'Tester le principe de linéarité_math MT90' : row_score[index_score_csv['test33']],
'Trouver la forme canonique d\'un polynôme_math MT90' : row_score[index_score_csv['test34']],
'Utiliser les fonctions logarithme, exponentielle et puissance_math MT90 NF01 CM11' : row_score[index_score_csv['test35']],
'Définir le PGCD et PPMC_math MT90 NF01' : row_score[index_score_csv['test36']],
'Définir le centre de gravité_phys PS21' : row_score[index_score_csv['test37']],
'Total du cours' : row_score[index_score_csv['total']]
}
merge_tutor_writer.writerow(row_to_write)
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment