def classementSemestre(request): if request.method == 'POST': Instsem = InstanceSemestre.objects.all() form = SelectInstanceSemestre(request.POST, instanceSemestres=Instsem) if form.is_valid(): intSem = form.cleaned_data['select'] res = True etuSems = Appartient.objects.filter(instance_semestre=intSem) liste = [] for etuSem in etuSems: try: etu = Etu.objects.get(apogee=etuSem.etudiant.apogee) resSem = Resultat_Semestre.objects.get( etudiant=etu, instance_semestre=intSem) e = etudiant(etu.apogee, resSem.note) liste.append(e) except Resultat_Semestre.DoesNotExist: print("probleme") liste = sorted(liste, key=attrgetter('resultat'), reverse=True) book = xlwt.Workbook() worksheet = book.add_sheet("Classement") i = 0 for li in liste: worksheet.write(i, 0, li.numero) worksheet.write(i, 1, li.resultat) i += 1 book.save("Classement.xls") else: res = False Instsem = InstanceSemestre.objects.all() form = SelectInstanceSemestre(instanceSemestres=Instsem) return render(request, 'contenu_html/classementSemestre.html', locals())
def importer_etu(request): if request.method == 'POST': if not request.session['instance']: instanceSemestres = InstanceSemestre.objects.all() form = SelectInstanceSemestre(request.POST, instanceSemestres=instanceSemestres) if form.is_valid(): id_instance = form.cleaned_data['select'] request.session['id_instance'] = id_instance request.session['instance'] = True res = True instanceSemestre = get_object_or_404( InstanceSemestre, id=request.session['id_instance']) form = FileForm() else: instanceSemestre = get_object_or_404( InstanceSemestre, id=request.session['id_instance']) form = FileForm(request.POST, request.FILES) if form.is_valid(): fichier = form.cleaned_data['fichier'] import csv csvf = StringIO(fichier.read().decode('latin-1')) read = csv.reader(csvf, delimiter=',') nb_etu = 0 for row in read: if row[0].isdigit(): nom = row[1] prenom = row[2] apogee = row[0] # On créé les nouveaux étudiants e, created = Etu.objects.get_or_create( nom=nom, prenom=prenom, apogee=apogee, ) appartient, createdBis = Appartient.objects.get_or_create( etudiant=e, instance_semestre=instanceSemestre, ) if created == True: nb_etu = nb_etu + 1 e.save() appartient.save() else: code_eleve = row res2 = True else: print("ERREUR : IMPORT CSV : VIEW importer_csv : Formulaire") else: instanceSemestres = InstanceSemestre.objects.all() if not instanceSemestres: inst = False else: inst = True request.session['instance'] = False form = SelectInstanceSemestre(instanceSemestres=instanceSemestres) return render(request, 'contenu_html/importer_etudiant.html', locals())
def afficherInstanceSemestre(request): if request.method == 'POST': instanceSemestres = InstanceSemestre.objects.all() form = SelectInstanceSemestre(request.POST, instanceSemestres=instanceSemestres) if form.is_valid() : id_inst = form.cleaned_data['select'] instanceSemestre = get_object_or_404(InstanceSemestre, id=id_inst) listeEtu = Appartient.objects.filter(instance_semestre=instanceSemestre) res = True else: print("ERREUR : Afficher promotion: VIEW afficher Promotion : formulaire") else: instanceSemestres = InstanceSemestre.objects.all() form = SelectInstanceSemestre(instanceSemestres=instanceSemestres) return render(request, 'contenu_html/afficherInstanceSemestre.html', locals())
def resultatJury(request): if request.method == 'POST': instances = InstanceSemestre.objects.all() form = SelectInstanceSemestre(request.POST, instanceSemestres=instances) if form.is_valid(): id_instance = form.cleaned_data['select'] request.session['id_instance'] = id_instance request.session['instance'] = True res = True instance = InstanceSemestre.objects.get(id=id_instance) resultatsJury = Resultat_Semestre.objects.filter( instance_semestre=request.session['id_instance']) else: print("ERREUR : resultatJury : VIEW resultatJury : formulaire") else: Etudiants = Etu.objects.all() request.session['etu'] = False instances = InstanceSemestre.objects.all() form = SelectInstanceSemestre(instanceSemestres=instances) return render(request, 'contenu_html/resultatJury.html', locals())
def renseignerResultat(request): if request.method == 'POST': u = InstanceSemestre.objects.all() form = SelectInstanceSemestre(request.POST, instanceSemestres=u) if form.is_valid(): Isemes = form.cleaned_data['select'] instancesemestre = InstanceSemestre.objects.get(id=Isemes) etus = Etu.objects.all() ues = UE.objects.filter(semestre=instancesemestre.semestre) for etu in etus: moy = 0 coeff = 0 try: res = Resultat_Semestre.objects.get( etudiant=etu, instance_semestre=instancesemestre) if res is not None: notes = Note.objects.all().filter(etudiant=etu) for ue in ues: matieres = Matiere.objects.filter(ue=ue) for matiere in matieres: for note in notes: if note.matiere.intitule == matiere.intitule: note = Note.objects.get(etudiant=etu, matiere=matiere) print("note", note) print("mat", matiere.coefficient) moy += (note.valeur * matiere.coefficient) coeff += matiere.coefficient if coeff == 0: coeff = 1 moyGcal = moy / coeff res = Resultat_Semestre.objects.get( etudiant=etu, instance_semestre=instancesemestre) moyG = res.note print('MOYG=', moyG) resultatSem = Resultat_Semestre.objects.get( etudiant=etu, instance_semestre=instancesemestre) barre = False print(instancesemestre.semestre) if instancesemestre.semestre.intitule == "Semestre 1": for ue in ues: res = Resultat_UE.objects.get(etudiant=etu, ue=ue) if res.note < 8: barre = True if moyG >= 10 and not barre: jury = "VAL" elif moyG >= 8 and not barre: jury = "NATT" else: jury = "NATB" else: if instancesemestre.semestre.intitule == "Semestre 2": semesPrec = InstanceSemestre.objects.get( semestre__intitule="Semestre 1") elif instancesemestre.semestre.intitule == "Semestre 3": semesPrec = InstanceSemestre.objects.get( semestre__intitule="Semestre 2") elif instancesemestre.semestre.intitule == "Semestre 4": semesPrec = InstanceSemestre.objects.get( semestre__intitule="Semestre 3") resSemPrec = Resultat_Semestre.objects.get( etudiant=etu, instance_semestre=semesPrec) moyGPrec = resSemPrec.note for ue in ues: res = Resultat_UE.objects.get(etudiant=etu, ue=ue) if res.note < 8: barre = True if moyG >= 10 and not barre and resSemPrec.resultat == "VAL": jury = "VAL" elif moyG >= 10 and not barre and resSemPrec.resultat == "NATT" and ( moyG + moyGPrec) >= 20: jury = "ADAC" elif moyG >= 10 and not barre and resSemPrec.resultat == "NATB": jury = "AJPC" elif moyG >= 8 and not barre and resSemPrec.resultat == "VAL" and ( moyG + moyGPrec) >= 10: jury = "VALC" elif not barre: jury = "NATT" else: jury = "NATB" resultatSem.note_calc = moyGcal resultatSem.resultat = jury res = False resultatSem.save() except Resultat_Semestre.DoesNotExist: print("probleme") else: res = True u = InstanceSemestre.objects.all() form = SelectInstanceSemestre(instanceSemestres=u) return render(request, 'contenu_html/listerResultat.html', locals())
def genererDocuments(request): if request.method == 'POST': u = InstanceSemestre.objects.all() form = SelectInstanceSemestre(request.POST, instanceSemestres=u) if form.is_valid(): instSemestreId = form.cleaned_data['select'] instSemestre = InstanceSemestre.objects.get(id=instSemestreId) if instSemestre.semestre.intitule == "Semestre 1": pasSemestre = True res = True else: if instSemestre.semestre.intitule == "Semestre 2": instSemestrePrec = InstanceSemestre.objects.get( semestre__intitule="Semestre 1") elif instSemestre.semestre.intitule == "Semestre 3": instSemestrePrec = InstanceSemestre.objects.get( semestre__intitule="Semestre 2") elif instSemestre.semestre.intitule == "Semestre 4": instSemestrePrec = InstanceSemestre.objects.get( semestre__intitule="Semestre 3") style = xlwt.easyxf( ' alignment: horizontal center, vertical center; borders: left thin, right thin, top thin, bottom thin;' ) book = open_workbook('docJury/S2.xls', formatting_info=True) book.sheet_by_index(0) newFeuille = copy(book) etus = Etu.objects.all() ligne = 7 cp = 0 semestrePrec = instSemestrePrec.semestre.id liste = ordreListe(semestrePrec, instSemestreId) for etu in liste: etudi = Etu.objects.get(apogee=etu.numero) sem1 = 0 sem2 = 0 colonne = 0 newFeuille.get_sheet(0).write(ligne, colonne, cp, style) colonne += 1 newFeuille.get_sheet(0).write(ligne, colonne, etudi.apogee, style) colonne += 1 newFeuille.get_sheet(0).write(ligne, colonne, etudi.nom, style) colonne += 1 newFeuille.get_sheet(0).write(ligne, colonne, etudi.prenom, style) colonne += 2 ues = UE.objects.all().filter( semestre=instSemestrePrec.semestre) for ue in ues: try: noteUE = Resultat_UE.objects.get(etudiant=etudi, ue=ue) newFeuille.get_sheet(0).write(ligne, colonne, noteUE.note, style) colonne += 1 except Resultat_UE.DoesNotExist: print("probleme") try: resS = Resultat_Semestre.objects.get( etudiant=etudi, instance_semestre=instSemestrePrec) colonne = 8 newFeuille.get_sheet(0).write(ligne, colonne, resS.note, style) sem1 = resS.note colonne += 1 newFeuille.get_sheet(0).write(ligne, colonne, resS.resultat, style) except Resultat_Semestre.DoesNotExist: print("probleme") ues = UE.objects.all().filter(semestre=instSemestre.semestre) colonne = 13 for ue in ues: try: noteUE = Resultat_UE.objects.get(etudiant=etudi, ue=ue) newFeuille.get_sheet(0).write(ligne, colonne, noteUE.note, style) colonne += 1 except Resultat_UE.DoesNotExist: print("probleme") try: resS2 = Resultat_Semestre.objects.get( etudiant=etudi, instance_semestre=instSemestre) colonne = 16 newFeuille.get_sheet(0).write(ligne, colonne, resS2.note, style) sem2 = resS2.note colonne += 1 newFeuille.get_sheet(0).write(ligne, colonne, resS2.resultat, style) except Resultat_Semestre.DoesNotExist: print("probleme") colonne = 21 if sem1 > 0 and sem2 > 0: moyAn = (sem1 + sem2) / 2 newFeuille.get_sheet(0).write(ligne, colonne, moyAn, style) colonne += 1 if moyAn < 8: jury = "Barre" elif moyAn < 10 and moyAn >= 8: jury = "NVAL" else: jury = "VAL" newFeuille.get_sheet(0).write(ligne, colonne, jury, style) ligne += 1 cp += 1 res = True nom_fichier = instSemestre.semestre.code_ppn newFeuille.save('static/documents/res_semestre.xls') else: res = False semestre = InstanceSemestre.objects.all() request.session['doc'] = False form = SelectInstanceSemestre(instanceSemestres=semestre) return render(request, 'contenu_html/genererDocuments.html', locals())
def faireEvoluerInstanceSemestre(request): if request.method == 'POST': if not request.session['inst']: instances = InstanceSemestre.objects.all() form = SelectInstanceSemestre(request.POST, instanceSemestres=instances) if form.is_valid() : id_instance = form.cleaned_data['select'] request.session['id_instance'] = id_instance request.session['inst']=True instance = get_object_or_404(InstanceSemestre, id=request.session['id_instance']) lignes= Appartient.objects.filter(instance_semestre=instance).count() + 1 listeEvolution=[[""]* 4 for _ in range(lignes)] listeEvolution[0][0]= "Nom" listeEvolution[0][1]= "Prénom" listeEvolution[0][2]= "Résultat du Semestre" listeAppartient=Appartient.objects.filter(instance_semestre=instance) print(listeAppartient) i=1 for ligne in listeAppartient: print(ligne) try: resSemestre= Resultat_Semestre.objects.get(etudiant=ligne.etudiant,instance_semestre=instance) listeEvolution[i][0]=ligne.etudiant.nom listeEvolution[i][1]=ligne.etudiant.prenom listeEvolution[i][2]=resSemestre.resultat listeEvolution[i][3]=ligne.etudiant.apogee i+=1 except Resultat_Semestre.DoesNotExist: listeEvolution[i][0]=ligne.etudiant.nom listeEvolution[i][1]=ligne.etudiant.prenom listeEvolution[i][2]='Résultat inexistant' listeEvolution[i][3]=ligne.etudiant.apogee i+=1 print('Erreur, cet etudiant n\'a pas de Resultat_Semestre') res = True request.session['listeEvolution'] = listeEvolution instances = InstanceSemestre.objects.all() form = EvolutionSemestreForm(listeAppartient=listeAppartient,instanceSemestres=instances) i=1 for ligne in listeAppartient: listeEvolution[i][3] = str(form[str(ligne.etudiant.apogee)]) i +=1 else: instances = InstanceSemestre.objects.all() instance = get_object_or_404(InstanceSemestre, id=request.session['id_instance']) listeAppartient=Appartient.objects.filter(instance_semestre=instance) form = EvolutionSemestreForm(request.POST, listeAppartient=listeAppartient,instanceSemestres=instances) if form.is_valid() : if form.cleaned_data['select']: new_instance = form.cleaned_data['select'] instance = get_object_or_404(InstanceSemestre, id=new_instance) for ligne in listeAppartient: if form.cleaned_data[str(ligne.etudiant.apogee)]: appartient = Appartient( instance_semestre = instance, etudiant = ligne.etudiant, ) appartient.save() res2=True else: print("ERREUR : Afficher faire evoluer instance: VIEW faire evoluer instance : formulaire") else: instances = InstanceSemestre.objects.all() request.session['inst']=False form = SelectInstanceSemestre(instanceSemestres=instances) return render(request, 'contenu_html/faireEvoluerInstance.html',locals())