forked from ScoDoc/ScoDoc
Compare commits
9 Commits
2c5e59120c
...
d76be3f5f1
Author | SHA1 | Date | |
---|---|---|---|
|
d76be3f5f1 | ||
|
e85f961317 | ||
1e53aa21cb | |||
0a767ed475 | |||
66859c53ba | |||
e943e7f283 | |||
be30cf66fa | |||
3d9efe3f00 | |||
300b380c42 |
@ -1,13 +1,14 @@
|
||||
# -*- mode: python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
SCOVERSION = "7.25"
|
||||
SCOVERSION = "7.25m"
|
||||
|
||||
SCONAME = "ScoDoc"
|
||||
|
||||
SCONEWS = """
|
||||
<h4>Année 2021</h4>
|
||||
<ul>
|
||||
<li>Version mobile (en test)</li>
|
||||
<li>Évaluations de type "deuxième session"</li>
|
||||
<li>Gestion du genre neutre (pas d'affichage de la civilité)</li>
|
||||
<li>Diverses corrections (PV de jurys, ...)</li>
|
||||
|
@ -504,6 +504,11 @@ class ZScoDoc(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Imp
|
||||
% REQUEST.BASE0
|
||||
)
|
||||
|
||||
# Lien expérimental temporaire:
|
||||
H.append(
|
||||
'<p><a href="/ScoDoc/static/mobile">Version mobile (expérimentale, à vos risques et périls)</a></p>'
|
||||
)
|
||||
|
||||
H.append(
|
||||
"""
|
||||
<div id="scodoc_attribution">
|
||||
|
@ -45,9 +45,16 @@ def bonus_iutv(notes_sport, coefs, infos=None):
|
||||
return bonus
|
||||
|
||||
|
||||
def bonus_iut_stdenis(notes_sport, coefs, infos=None):
|
||||
"""Semblable à bonus_iutv mais sans coefficients et total limité à 0.5 points.
|
||||
def bonus_direct(notes_sport, coefs, infos=None):
|
||||
"""Un bonus direct et sans chichis: les points sont directement ajoutés à la moyenne générale.
|
||||
Les coefficients sont ignorés: tous les points de bonus sont sommés.
|
||||
(rappel: la note est ramenée sur 20 avant application).
|
||||
"""
|
||||
return sum(notes_sport)
|
||||
|
||||
|
||||
def bonus_iut_stdenis(notes_sport, coefs, infos=None):
|
||||
"""Semblable à bonus_iutv mais sans coefficients et total limité à 0.5 points."""
|
||||
points = sum([x - 10 for x in notes_sport if x > 10]) # points au dessus de 10
|
||||
bonus = points * 0.05 # ou / 20
|
||||
return min(bonus, 0.5) # bonus limité à 1/2 point
|
||||
@ -62,7 +69,7 @@ def bonus_colmar(notes_sport, coefs, infos=None):
|
||||
sur 20 obtenus dans chacune des matières optionnelles sont cumulés
|
||||
dans la limite de 10 points. 5% de ces points cumulés s'ajoutent à
|
||||
la moyenne générale du semestre déjà obtenue par l'étudiant.
|
||||
|
||||
|
||||
"""
|
||||
# les coefs sont ignorés
|
||||
points = sum([x - 10 for x in notes_sport if x > 10])
|
||||
@ -73,7 +80,7 @@ def bonus_colmar(notes_sport, coefs, infos=None):
|
||||
|
||||
def bonus_iutva(notes_sport, coefs, infos=None):
|
||||
"""Calcul bonus modules optionels (sport, culture), règle IUT Ville d'Avray
|
||||
|
||||
|
||||
Les étudiants de l'IUT peuvent suivre des enseignements optionnels
|
||||
de l'Université Paris 10 (C2I) non rattachés à une unité d'enseignement.
|
||||
Si la note est >= 10 et < 12, bonus de 0.1 point
|
||||
@ -93,42 +100,13 @@ def bonus_iutva(notes_sport, coefs, infos=None):
|
||||
return 0
|
||||
|
||||
|
||||
# XXX Inutilisé (mai 2020) ? à confirmer avant suppression XXX
|
||||
# def bonus_iut1grenoble_v0(notes_sport, coefs, infos=None):
|
||||
# """Calcul bonus sport IUT Grenoble sur la moyenne générale
|
||||
#
|
||||
# La note de sport de nos étudiants va de 0 à 5 points.
|
||||
# Chaque point correspond à un % qui augmente la moyenne de chaque UE et la moyenne générale.
|
||||
# Par exemple : note de sport 2/5 : chaque UE sera augmentée de 2%, ainsi que la moyenne générale.
|
||||
#
|
||||
# Calcul ici du bonus sur moyenne générale et moyennes d'UE non capitalisées.
|
||||
# """
|
||||
# # les coefs sont ignorés
|
||||
# # notes de 0 à 5
|
||||
# points = sum([x for x in notes_sport])
|
||||
# factor = (points / 4.0) / 100.0
|
||||
# bonus = infos["moy"] * factor
|
||||
# # Modifie les moyennes de toutes les UE:
|
||||
# for ue_id in infos["moy_ues"]:
|
||||
# ue_status = infos["moy_ues"][ue_id]
|
||||
# if ue_status["sum_coefs"] > 0:
|
||||
# # modifie moyenne UE ds semestre courant
|
||||
# ue_status["cur_moy_ue"] = ue_status["cur_moy_ue"] * (1.0 + factor)
|
||||
# if not ue_status["is_capitalized"]:
|
||||
# # si non capitalisee, modifie moyenne prise en compte
|
||||
# ue_status["moy"] = ue_status["cur_moy_ue"]
|
||||
#
|
||||
# # open('/tmp/log','a').write( pprint.pformat(ue_status) + '\n\n' )
|
||||
# return bonus
|
||||
|
||||
|
||||
def bonus_iut1grenoble_2017(notes_sport, coefs, infos=None):
|
||||
"""Calcul bonus sport IUT Grenoble sur la moyenne générale (version 2017)
|
||||
|
||||
La note de sport de nos étudiants va de 0 à 5 points.
|
||||
|
||||
La note de sport de nos étudiants va de 0 à 5 points.
|
||||
Chaque point correspond à un % qui augmente la moyenne de chaque UE et la moyenne générale.
|
||||
Par exemple : note de sport 2/5 : la moyenne générale sera augmentée de 2%.
|
||||
|
||||
|
||||
Calcul ici du bonus sur moyenne générale
|
||||
"""
|
||||
# les coefs sont ignorés
|
||||
@ -162,14 +140,14 @@ def bonus_lille(notes_sport, coefs, infos=None):
|
||||
def bonus_iutlh(notes_sport, coefs, infos=None):
|
||||
"""Calcul bonus sport IUT du Havre sur moyenne générale et UE
|
||||
|
||||
La note de sport de nos étudiants va de 0 à 20 points.
|
||||
m2=m1*(1+0.005*((10-N1)+(10-N2))
|
||||
m2 : Nouvelle moyenne de l'unité d'enseignement si note de sport et/ou de langue supérieure à 10
|
||||
m1 : moyenne de l'unité d'enseignement avant bonification
|
||||
N1 : note de sport si supérieure à 10
|
||||
N2 : note de seconde langue si supérieure à 10
|
||||
Par exemple : sport 15/20 et langue 12/20 : chaque UE sera multipliée par 1+0.005*7, ainsi que la moyenne générale.
|
||||
Calcul ici de la moyenne générale et moyennes d'UE non capitalisées.
|
||||
La note de sport de nos étudiants va de 0 à 20 points.
|
||||
m2=m1*(1+0.005*((10-N1)+(10-N2))
|
||||
m2 : Nouvelle moyenne de l'unité d'enseignement si note de sport et/ou de langue supérieure à 10
|
||||
m1 : moyenne de l'unité d'enseignement avant bonification
|
||||
N1 : note de sport si supérieure à 10
|
||||
N2 : note de seconde langue si supérieure à 10
|
||||
Par exemple : sport 15/20 et langue 12/20 : chaque UE sera multipliée par 1+0.005*7, ainsi que la moyenne générale.
|
||||
Calcul ici de la moyenne générale et moyennes d'UE non capitalisées.
|
||||
"""
|
||||
# les coefs sont ignorés
|
||||
points = sum([x - 10 for x in notes_sport if x > 10])
|
||||
@ -205,8 +183,8 @@ def bonus_tours(notes_sport, coefs, infos=None):
|
||||
def bonus_iutr(notes_sport, coefs, infos=None):
|
||||
"""Calcul du bonus , regle de l'IUT de Roanne (contribuée par Raphael C., nov 2012)
|
||||
|
||||
Le bonus est compris entre 0 et 0.35 point.
|
||||
cette procédure modifie la moyenne de chaque UE capitalisable.
|
||||
Le bonus est compris entre 0 et 0.35 point.
|
||||
cette procédure modifie la moyenne de chaque UE capitalisable.
|
||||
|
||||
"""
|
||||
# modifie les moyennes de toutes les UE:
|
||||
@ -260,7 +238,7 @@ def bonus_saint_etienne(notes_sport, coefs, infos=None):
|
||||
"""IUT de Saint-Etienne (jan 2014)
|
||||
Nous avons différents types de bonification
|
||||
bonfication Sport / Associations
|
||||
coopératives de département / Bureau Des Étudiants
|
||||
coopératives de département / Bureau Des Étudiants
|
||||
/ engagement citoyen / Langues optionnelles
|
||||
Nous ajoutons sur le bulletin une bonification qui varie entre 0,1 et 0,3 ou 0,35 pour chaque item
|
||||
la bonification totale ne doit pas excéder les 0,6 point.
|
||||
@ -278,9 +256,9 @@ def bonus_saint_etienne(notes_sport, coefs, infos=None):
|
||||
|
||||
|
||||
def bonus_iutTarbes(notes_sport, coefs, infos=None):
|
||||
"""Calcul bonus modules optionnels
|
||||
"""Calcul bonus modules optionnels
|
||||
(sport, Langues, action sociale, Théâtre), règle IUT Tarbes
|
||||
Les coefficients ne sont pas pris en compte,
|
||||
Les coefficients ne sont pas pris en compte,
|
||||
seule la meilleure note est prise en compte
|
||||
le 1/30ème des points au-dessus de 10 sur 20 est retenu et s'ajoute à
|
||||
la moyenne générale du semestre déjà obtenue par l'étudiant.
|
||||
@ -408,7 +386,7 @@ def bonus_iutbethune(notes_sport, coefs, infos=None):
|
||||
def bonus_demo(notes_sport, coefs, infos=None):
|
||||
"""Fausse fonction "bonus" pour afficher les informations disponibles
|
||||
et aider les développeurs.
|
||||
Les informations sont placées dans le fichier /tmp/scodoc_bonus.log
|
||||
Les informations sont placées dans le fichier /tmp/scodoc_bonus.log
|
||||
qui est ECRASE à chaque appel.
|
||||
*** Ne pas utiliser en production !!! ***
|
||||
"""
|
||||
|
6
debug.py
6
debug.py
@ -67,7 +67,11 @@ def go(app, n=0, verbose=True):
|
||||
def go_dept(app, dept, verbose=True):
|
||||
objs = app.ScoDoc.objectValues("Folder")
|
||||
for o in objs:
|
||||
context = o.Scolarite
|
||||
try:
|
||||
context = o.Scolarite
|
||||
except AttributeError:
|
||||
# ignore other folders, like old "icons"
|
||||
continue
|
||||
if context.DeptId() == dept:
|
||||
if verbose:
|
||||
print("context in dept ", context.DeptId())
|
||||
|
@ -104,6 +104,7 @@ def sidebar(context, REQUEST=None):
|
||||
"""<h2 id="insidebar-etud"><a href="%(ScoURL)s/ficheEtud?etudid=%(etudid)s" class="sidebar">
|
||||
<font color="#FF0000">%(civilite_str)s %(nom_disp)s</font></a>
|
||||
</h2>
|
||||
<p id ="euid">%(etudid)s</p>
|
||||
<b>Absences</b>"""
|
||||
% params
|
||||
)
|
||||
|
@ -58,7 +58,7 @@ def form_search_etud(
|
||||
H.append(
|
||||
"""<form action="search_etud_in_dept" method="POST">
|
||||
<b>%s</b>
|
||||
<input type="text" name="expnom" width="12" spellcheck="false" value="">
|
||||
<input type="text" name="expnom" id="searchEtud" width="12" spellcheck="false" value="">
|
||||
<input type="submit" value="Chercher">
|
||||
<br/>(entrer une partie du nom)
|
||||
"""
|
||||
|
@ -321,7 +321,7 @@ def moduleimpl_status(context, moduleimpl_id=None, partition_id=None, REQUEST=No
|
||||
top_table_links = ""
|
||||
if sem["etat"] == "1": # non verrouillé
|
||||
top_table_links = (
|
||||
"""<a class="stdlink" href="evaluation_create?moduleimpl_id=%(moduleimpl_id)s">Créer nouvelle évaluation</a>
|
||||
"""<a class="stdlink" id="lienAjoutEvaluation" href="evaluation_create?moduleimpl_id=%(moduleimpl_id)s">Créer nouvelle évaluation</a>
|
||||
<a class="stdlink" style="margin-left:2em;" href="module_evaluation_renumber?moduleimpl_id=%(moduleimpl_id)s&redirect=1">Trier par date</a>
|
||||
"""
|
||||
% M
|
||||
@ -361,6 +361,9 @@ def moduleimpl_status(context, moduleimpl_id=None, partition_id=None, REQUEST=No
|
||||
% eval
|
||||
)
|
||||
H.append(" <em>%(description)s</em>" % eval)
|
||||
H.append(
|
||||
"<div id='hidden_id' style='visibility:hidden'>%s</div>" % evaluation_id
|
||||
)
|
||||
if eval["evaluation_type"] == EVALUATION_RATTRAPAGE:
|
||||
H.append(
|
||||
"""<span class="mievr_rattr" title="remplace si meilleure note">rattrapage</span>"""
|
||||
|
@ -361,7 +361,8 @@ def _check_duplicate_code(cnx, args, code_name, context, edit=True, REQUEST=None
|
||||
parameters = {}
|
||||
if context:
|
||||
err_page = context.confirmDialog(
|
||||
message="""<h3>Code étudiant (%s) dupliqué !</h3>""" % code_name,
|
||||
message="""<h3 id ="titleError">Code étudiant (%s) dupliqué !</h3>"""
|
||||
% code_name,
|
||||
helpmsg="""Le %s %s est déjà utilisé: un seul étudiant peut avoir ce code. Vérifier votre valeur ou supprimer l'autre étudiant avec cette valeur.<p><ul><li>"""
|
||||
% (code_name, args[code_name])
|
||||
+ "</li><li>".join(listh)
|
||||
@ -372,7 +373,10 @@ def _check_duplicate_code(cnx, args, code_name, context, edit=True, REQUEST=None
|
||||
REQUEST=REQUEST,
|
||||
)
|
||||
else:
|
||||
err_page = """<h3>Code étudiant (%s) dupliqué !</h3>""" % code_name
|
||||
err_page = (
|
||||
"""<h3 id ="titleError">Code étudiant (%s) dupliqué !</h3>"""
|
||||
% code_name
|
||||
)
|
||||
log("*** error: code %s duplique: %s" % (code_name, args[code_name]))
|
||||
raise ScoGenError(err_page)
|
||||
|
||||
|
205
scotests/export_formation1.xml
Normal file
205
scotests/export_formation1.xml
Normal file
@ -0,0 +1,205 @@
|
||||
<formation acronyme="DUT Info" code_specialite="" type_parcours="100" titre_officiel="DUT Informatique" formation_code="FCOD2" version="1" titre="DUT Informatique" formation_id="FORM234">
|
||||
<ue acronyme="UE11" coefficient="0.0" is_external="0" code_apogee="" ue_code="UE11" numero="1" titre="Base de l'informatique" type="0">
|
||||
<matiere titre="Architecture matérielle - Systèmes d’exploitation - Réseaux" numero="1">
|
||||
<module coefficient="2.0" code="M1101" code_apogee="" ects="" heures_tp="30.0" numero="1" abbrev="" heures_cours="10.0" module_type="0" titre="Introduction aux systèmes informatiques" semestre_id="1" heures_td="20.0" />
|
||||
</matiere>
|
||||
<matiere titre="Algorithmique - Programmation - Langages" numero="2">
|
||||
<module coefficient="2.0" code="M1102" code_apogee="" ects="" heures_tp="30.0" numero="10" abbrev="Algorithmique" heures_cours="10.0" module_type="0" titre="Introduction à l’algorithmique et à la programmation" semestre_id="1" heures_td="20.0" />
|
||||
</matiere>
|
||||
<matiere titre="Algorithmique - Programmation - Langages Avancé" numero="3">
|
||||
<module coefficient="2.0" code="M1103" code_apogee="" ects="" heures_tp="20.0" numero="3" abbrev="Structure de données" heures_cours="10.0" module_type="0" titre="Structure de données et algorithmes fondamentaux" semestre_id="1" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Systèmes de gestion de bases de données" numero="4">
|
||||
<module coefficient="3.0" code="M1104" code_apogee="" ects="" heures_tp="25.0" numero="4" abbrev="BDD" heures_cours="10.0" module_type="0" titre="Introduction aux bases de données" semestre_id="1" heures_td="25.0" />
|
||||
</matiere>
|
||||
<matiere titre="Web - Internet - Mobilité Expression - Communication" numero="5">
|
||||
<module coefficient="2.0" code="M1105" code_apogee="" ects="" heures_tp="25.0" numero="5" abbrev="CDIN" heures_cours="0.0" module_type="0" titre="Conception de documents et d’interfaces numériques" semestre_id="1" heures_td="20.0" />
|
||||
</matiere>
|
||||
<matiere titre="Projets tutorés" numero="6">
|
||||
<module coefficient="3.0" code="M1106" code_apogee="" ects="" heures_tp="0.0" numero="6" abbrev="Projet" heures_cours="0.0" module_type="0" titre="Projet tutoré : découverte" semestre_id="1" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE21" coefficient="0.0" is_external="0" code_apogee="" ue_code="UE21" numero="1" titre="Informatique approfondie" type="0">
|
||||
<matiere titre="Architecture matérielle - Systèmes d’exploitation - Réseaux" numero="1">
|
||||
<module coefficient="2.0" code="M2101" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Architecture et Programmation des mécanismes de base d’un système informatique" semestre_id="2" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Architecture matérielle - Systèmes d’exploitation - Réseaux avancé" numero="2">
|
||||
<module coefficient="2.0" code="M2102" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Architecture des réseaux" semestre_id="2" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Algorithmique - Programmation - Langages Analyse, conception et développement d’applications" numero="3">
|
||||
<module coefficient="2.0" code="M2103" code_apogee="" ects="" heures_tp="30.0" numero="10" abbrev="" heures_cours="10.0" module_type="0" titre="Bases de la programmation orientée objet" semestre_id="2" heures_td="20.0" />
|
||||
</matiere>
|
||||
<matiere titre="Analyse, conception et développement d’applications" numero="4">
|
||||
<module coefficient="2.0" code="M2104" code_apogee="" ects="" heures_tp="20.0" numero="10" abbrev="COO" heures_cours="10.0" module_type="0" titre="Bases de la conception orientée objet" semestre_id="2" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Interface homme-machine" numero="5">
|
||||
<module coefficient="2.0" code="M2105" code_apogee="" ects="" heures_tp="20.0" numero="10" abbrev="" heures_cours="10.0" module_type="0" titre="Introduction aux interfaces homme-machine" semestre_id="2" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Systèmes de gestion de bases de données" numero="6">
|
||||
<module coefficient="2.0" code="M2106" code_apogee="" ects="" heures_tp="20.0" numero="10" abbrev="" heures_cours="10.0" module_type="0" titre="Programmation et administration des bases de données" semestre_id="2" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Projets tutorés" numero="7">
|
||||
<module coefficient="3.0" code="M2107" code_apogee="" ects="" heures_tp="0.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Projet tutoré : Description et planification de projet" semestre_id="2" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE31" coefficient="0.0" is_external="0" code_apogee="" ue_code="UCOD5" numero="1" titre="Informatique avancée" type="0">
|
||||
<matiere titre="Architectures matérielles - Systèmes d’exploitation - Réseaux" numero="1">
|
||||
<module coefficient="2.0" code="M3101" code_apogee="" ects="" heures_tp="16.0" numero="10" abbrev="" heures_cours="15.0" module_type="0" titre="Principes des systèmes d’exploitation" semestre_id="3" heures_td="14.0" />
|
||||
</matiere>
|
||||
<matiere titre="Architectures matérielles - Systèmes d’exploitation, Réseaux" numero="2">
|
||||
<module coefficient="2.0" code="M3102" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Services réseaux" semestre_id="3" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Algorithmique - Programmation - Langages avancé" numero="3">
|
||||
<module coefficient="2.0" code="M3103" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Algorithmique avancée" semestre_id="3" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Web - Internet - Mobilité" numero="4">
|
||||
<module coefficient="2.0" code="M3104" code_apogee="" ects="" heures_tp="16.0" numero="10" abbrev="" heures_cours="15.0" module_type="0" titre="Programmation Web côté serveur" semestre_id="3" heures_td="14.0" />
|
||||
</matiere>
|
||||
<matiere titre="Analyse, conception et développement d’applications" numero="5">
|
||||
<module coefficient="16.0" code="M3105" code_apogee="" ects="" heures_tp="14.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Conception et programmation objet avancées" semestre_id="3" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Systèmes de gestion de bases de données" numero="6">
|
||||
<module coefficient="2.0" code="M3106C" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Bases de données avancées" semestre_id="3" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Malus" numero="16">
|
||||
<module coefficient="0.0" code="MALUS1" code_apogee="" ects="" heures_tp="0.0" numero="0" abbrev="" heures_cours="0.0" module_type="1" titre="" semestre_id="3" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE41" coefficient="0.0" is_external="0" code_apogee="" ue_code="UCOD8" numero="1" titre="Compléments en informatique" type="0">
|
||||
<matiere titre="Architectures matérielles - Systèmes d’exploitation - Réseaux" numero="1">
|
||||
<module coefficient="2.0" code="M4101C" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Administration système et réseau" semestre_id="4" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Architectures matérielles - Systèmes d’exploitation – Réseaux Analyse, conception et développement d’applications" numero="2">
|
||||
<module coefficient="2.0" code="M4102C" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Programmation répartie" semestre_id="4" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Web – Internet - Mobilité" numero="3">
|
||||
<module coefficient="2.0" code="M4103C" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Programmation Web – client riche" semestre_id="4" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Web - Internet - Mobilité - Mobile" numero="4">
|
||||
<module coefficient="3.0" code="M4104C" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Conception et développement d’applications mobiles" semestre_id="4" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Analyse, conception et développement d’applications" numero="5">
|
||||
<module coefficient="2.0" code="M4105C" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Compléments d’informatique en vue d’une insertion immédiate" semestre_id="4" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Projets tutorés" numero="6">
|
||||
<module coefficient="3.0" code="M4106" code_apogee="" ects="" heures_tp="0.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Projet tutoré – Compléments" semestre_id="4" heures_td="0.0" />
|
||||
</matiere>
|
||||
<matiere titre="Malus" numero="16">
|
||||
<module coefficient="0.0" code="MALUS1" code_apogee="" ects="" heures_tp="0.0" numero="0" abbrev="" heures_cours="0.0" module_type="1" titre="" semestre_id="4" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE12" coefficient="0.0" is_external="0" code_apogee="" ue_code="UE12" numero="2" titre="Bases de culture scientifique, sociale et humaine" type="0">
|
||||
<matiere titre="Mathématiques" numero="1">
|
||||
<module coefficient="2.0" code="M1201" code_apogee="" ects="" heures_tp="17.0" numero="1" abbrev="" heures_cours="10.0" module_type="0" titre="Mathématiques discrètes" semestre_id="1" heures_td="18.0" />
|
||||
</matiere>
|
||||
<matiere titre="Mathématiques avancées" numero="2">
|
||||
<module coefficient="2.0" code="M1202" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="6.0" module_type="0" titre="Algèbre linéaire" semestre_id="1" heures_td="12.0" />
|
||||
</matiere>
|
||||
<matiere titre="Économie - Gestion - Organisation - Droit" numero="3">
|
||||
<module coefficient="2.0" code="M1203" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="10.0" module_type="0" titre="Environnement économique" semestre_id="1" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Organisation" numero="4">
|
||||
<module coefficient="1.0" code="M1204" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="10.0" module_type="0" titre="Fonctionnement des organisations" semestre_id="1" heures_td="20.0" />
|
||||
</matiere>
|
||||
<matiere titre="Expression - Communication" numero="5">
|
||||
<module coefficient="2.0" code="M1205" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Fondamentaux de la communication" semestre_id="1" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Anglais" numero="6">
|
||||
<module coefficient="2.0" code="M1206" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Anglais et Informatique" semestre_id="1" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="PPP Expression - Communication" numero="7">
|
||||
<module coefficient="1.0" code="M1207" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Connaître le monde professionnel" semestre_id="1" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Malus" numero="17">
|
||||
<module coefficient="0.0" code="MALUS2" code_apogee="" ects="" heures_tp="0.0" numero="0" abbrev="" heures_cours="0.0" module_type="1" titre="" semestre_id="1" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE22" coefficient="0.0" is_external="0" code_apogee="" ue_code="UCOD4" numero="2" titre="Approfondissements en culture scientifique, sociale et humaine" type="0">
|
||||
<matiere titre="Mathématiques" numero="1">
|
||||
<module coefficient="2.0" code="M2201" code_apogee="" ects="" heures_tp="18.0" numero="10" abbrev="" heures_cours="11.0" module_type="0" titre="Graphes et langages" semestre_id="2" heures_td="16.0" />
|
||||
</matiere>
|
||||
<matiere titre="Mathématiques avancées" numero="2">
|
||||
<module coefficient="2.0" code="M2202" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Analyse et méthodes numériques" semestre_id="2" heures_td="12.0" />
|
||||
</matiere>
|
||||
<matiere titre="Économie - Gestion - Droit - Organisation" numero="3">
|
||||
<module coefficient="2.0" code="M2203" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="12.0" module_type="0" titre="Environnement comptable, financier, juridique et social" semestre_id="2" heures_td="18.0" />
|
||||
</matiere>
|
||||
<matiere titre="Économie - Gestion - Organisation - Droit Analyse, conception et développement d’applications" numero="4">
|
||||
<module coefficient="2.0" code="M2204" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Gestion de projet informatique" semestre_id="2" heures_td="12.0" />
|
||||
</matiere>
|
||||
<matiere titre="Expression - Communication" numero="5">
|
||||
<module coefficient="1.0" code="M2205" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Communication, information et argumentation" semestre_id="2" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Anglais" numero="6">
|
||||
<module coefficient="2.0" code="M2206" code_apogee="" ects="" heures_tp="22.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Communiquer en anglais" semestre_id="2" heures_td="23.0" />
|
||||
</matiere>
|
||||
<matiere titre="PPP" numero="7">
|
||||
<module coefficient="1.0" code="M2207" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="PPP - Identifier ses compétences" semestre_id="2" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Malus" numero="17">
|
||||
<module coefficient="0.0" code="MALUS2" code_apogee="" ects="" heures_tp="0.0" numero="0" abbrev="" heures_cours="0.0" module_type="1" titre="" semestre_id="2" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE32" coefficient="0.0" is_external="0" code_apogee="" ue_code="UCOD6" numero="2" titre="Culture scientifique, sociale et humaine avancées" type="0">
|
||||
<matiere titre="Mathématiques" numero="1">
|
||||
<module coefficient="2.0" code="M3201" code_apogee="" ects="" heures_tp="14.0" numero="10" abbrev="" heures_cours="15.0" module_type="0" titre="Probabilités et statistique" semestre_id="3" heures_td="16.0" />
|
||||
</matiere>
|
||||
<matiere titre="Mathématiques avancées" numero="2">
|
||||
<module coefficient="2.0" code="M3202C" code_apogee="" ects="" heures_tp="14.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Modélisations mathématiques" semestre_id="3" heures_td="16.0" />
|
||||
</matiere>
|
||||
<matiere titre="Économie - Gestion - Organisation - Droit" numero="3">
|
||||
<module coefficient="2.0" code="M3203" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="10.0" module_type="0" titre="Droit des technologies de l’information et de la communication" semestre_id="3" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Gestion" numero="4">
|
||||
<module coefficient="2.0" code="M3204" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="15.0" module_type="0" titre="Gestion des systèmes d’information" semestre_id="3" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Expression - Communication" numero="5">
|
||||
<module coefficient="2.0" code="M3205" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Communication professionnelle" semestre_id="3" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Anglais" numero="6">
|
||||
<module coefficient="2.0" code="M3206" code_apogee="" ects="" heures_tp="22.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Collaborer en anglais" semestre_id="3" heures_td="23.0" />
|
||||
</matiere>
|
||||
<matiere titre="Malus" numero="16">
|
||||
<module coefficient="0.0" code="MALUS2" code_apogee="" ects="" heures_tp="0.0" numero="0" abbrev="" heures_cours="0.0" module_type="1" titre="" semestre_id="3" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE33" coefficient="0.0" is_external="0" code_apogee="" ue_code="UCOD7" numero="2" titre="Méthodologie et projets" type="0">
|
||||
<matiere titre="Analyse, conception et développement d’applications Économie - gestion - Organisation - Droit" numero="1">
|
||||
<module coefficient="2.0" code="M3301" code_apogee="" ects="" heures_tp="24.0" numero="10" abbrev="" heures_cours="14.0" module_type="0" titre="Méthodologie de la production d’applications" semestre_id="3" heures_td="22.0" />
|
||||
</matiere>
|
||||
<matiere titre="Projets tutorés" numero="2">
|
||||
<module coefficient="3.0" code="M3302" code_apogee="" ects="" heures_tp="0.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Projet tutoré - Mise en situation professionnelle" semestre_id="3" heures_td="0.0" />
|
||||
</matiere>
|
||||
<matiere titre="PPP" numero="3">
|
||||
<module coefficient="2.0" code="M3303" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="PPP - Préciser son projet" semestre_id="3" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Malus" numero="13">
|
||||
<module coefficient="0.0" code="MALUS2" code_apogee="" ects="" heures_tp="0.0" numero="0" abbrev="" heures_cours="0.0" module_type="1" titre="" semestre_id="3" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE42" coefficient="0.0" is_external="0" code_apogee="" ue_code="UCOD9" numero="2" titre="Compléments de culture scientifique, sociale et humaine" type="0">
|
||||
<matiere titre="Économie - Gestion - Organisation - Droit" numero="1">
|
||||
<module coefficient="2.0" code="M4201C" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Ateliers de création d’entreprise" semestre_id="4" heures_td="12.0" />
|
||||
</matiere>
|
||||
<matiere titre="Mathématiques" numero="2">
|
||||
<module coefficient="2.0" code="M4202C" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Introduction à la recherche opérationnelle et aide à la décision" semestre_id="4" heures_td="12.0" />
|
||||
</matiere>
|
||||
<matiere titre="Expression – Communication" numero="3">
|
||||
<module coefficient="2.0" code="M4203" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Communication dans les organisations" semestre_id="4" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Anglais" numero="4">
|
||||
<module coefficient="2.0" code="M4204" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Travailler en anglais" semestre_id="4" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Malus" numero="14">
|
||||
<module coefficient="0.0" code="MALUS2" code_apogee="" ects="" heures_tp="0.0" numero="0" abbrev="" heures_cours="0.0" module_type="1" titre="" semestre_id="4" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE43" coefficient="0.0" is_external="0" code_apogee="" ue_code="UCOD10" numero="3" titre="Mise en situation professionnelle" type="0">
|
||||
<matiere titre="STAGE" numero="1">
|
||||
<module coefficient="12.0" code="M4301" code_apogee="" ects="" heures_tp="0.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Stage professionnel" semestre_id="4" heures_td="0.0" />
|
||||
</matiere>
|
||||
<matiere titre="Malus" numero="11">
|
||||
<module coefficient="0.0" code="MALUS3" code_apogee="" ects="" heures_tp="0.0" numero="0" abbrev="" heures_cours="0.0" module_type="1" titre="" semestre_id="4" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
</formation>
|
25
static/mobile/asset-manifest.json
Normal file
25
static/mobile/asset-manifest.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"files": {
|
||||
"main.css": "./static/css/main.6be5a531.chunk.css",
|
||||
"main.js": "./static/js/main.9d1150c9.chunk.js",
|
||||
"main.js.map": "./static/js/main.9d1150c9.chunk.js.map",
|
||||
"runtime-main.js": "./static/js/runtime-main.b827b16d.js",
|
||||
"runtime-main.js.map": "./static/js/runtime-main.b827b16d.js.map",
|
||||
"static/css/2.4c97ca4f.chunk.css": "./static/css/2.4c97ca4f.chunk.css",
|
||||
"static/js/2.68967b49.chunk.js": "./static/js/2.68967b49.chunk.js",
|
||||
"static/js/2.68967b49.chunk.js.map": "./static/js/2.68967b49.chunk.js.map",
|
||||
"static/js/3.d2558866.chunk.js": "./static/js/3.d2558866.chunk.js",
|
||||
"static/js/3.d2558866.chunk.js.map": "./static/js/3.d2558866.chunk.js.map",
|
||||
"index.html": "./index.html",
|
||||
"static/css/2.4c97ca4f.chunk.css.map": "./static/css/2.4c97ca4f.chunk.css.map",
|
||||
"static/css/main.6be5a531.chunk.css.map": "./static/css/main.6be5a531.chunk.css.map",
|
||||
"static/js/2.68967b49.chunk.js.LICENSE.txt": "./static/js/2.68967b49.chunk.js.LICENSE.txt"
|
||||
},
|
||||
"entrypoints": [
|
||||
"static/js/runtime-main.b827b16d.js",
|
||||
"static/css/2.4c97ca4f.chunk.css",
|
||||
"static/js/2.68967b49.chunk.js",
|
||||
"static/css/main.6be5a531.chunk.css",
|
||||
"static/js/main.9d1150c9.chunk.js"
|
||||
]
|
||||
}
|
BIN
static/mobile/favicon.ico
Normal file
BIN
static/mobile/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
1
static/mobile/index.html
Normal file
1
static/mobile/index.html
Normal file
@ -0,0 +1 @@
|
||||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Scodoc Mobile"/><link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"><link rel="apple-touch-icon" href="./scologo.png"/><link rel="manifest" href="./manifest.json"/><title>Scodoc Mobile</title><link href="./static/css/2.4c97ca4f.chunk.css" rel="stylesheet"><link href="./static/css/main.6be5a531.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,i,a=r[0],c=r[1],l=r[2],s=0,p=[];s<a.length;s++)i=a[s],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&p.push(o[i][0]),o[i]=0;for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(f&&f(r);p.length;)p.shift()();return u.push.apply(u,l||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,a=1;a<t.length;a++){var c=t[a];0!==o[c]&&(n=!1)}n&&(u.splice(r--,1),e=i(i.s=t[0]))}return e}var n={},o={1:0},u=[];function i(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var u,a=document.createElement("script");a.charset="utf-8",a.timeout=120,i.nc&&a.setAttribute("nonce",i.nc),a.src=function(e){return i.p+"static/js/"+({}[e]||e)+"."+{3:"d2558866"}[e]+".chunk.js"}(e);var c=new Error;u=function(r){a.onerror=a.onload=null,clearTimeout(l);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),u=r&&r.target&&r.target.src;c.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",c.name="ChunkLoadError",c.type=n,c.request=u,t[1](c)}o[e]=void 0}};var l=setTimeout((function(){u({type:"timeout",target:a})}),12e4);a.onerror=a.onload=u,document.head.appendChild(a)}return Promise.all(r)},i.m=e,i.c=n,i.d=function(e,r,t){i.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,r){if(1&r&&(e=i(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)i.d(t,n,function(r){return e[r]}.bind(null,n));return t},i.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(r,"a",r),r},i.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},i.p="./",i.oe=function(e){throw console.error(e),e};var a=this.webpackJsonpscodocmobile=this.webpackJsonpscodocmobile||[],c=a.push.bind(a);a.push=r,a=a.slice();for(var l=0;l<a.length;l++)r(a[l]);var f=c;t()}([])</script><script src="./static/js/2.68967b49.chunk.js"></script><script src="./static/js/main.9d1150c9.chunk.js"></script></body></html>
|
20
static/mobile/manifest.json
Normal file
20
static/mobile/manifest.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"short_name": "React App",
|
||||
"name": "Create React App Sample",
|
||||
"icons": [
|
||||
{
|
||||
"src": "favicon.ico",
|
||||
"sizes": "64x64 32x32 24x24 16x16",
|
||||
"type": "image/x-icon"
|
||||
},
|
||||
{
|
||||
"src": "scologo.png",
|
||||
"type": "image/png",
|
||||
"sizes": "84x126"
|
||||
}
|
||||
],
|
||||
"start_url": ".",
|
||||
"display": "standalone",
|
||||
"theme_color": "#000000",
|
||||
"background_color": "#ffffff"
|
||||
}
|
3
static/mobile/robots.txt
Normal file
3
static/mobile/robots.txt
Normal file
@ -0,0 +1,3 @@
|
||||
# https://www.robotstxt.org/robotstxt.html
|
||||
User-agent: *
|
||||
Disallow:
|
BIN
static/mobile/scologo.png
Normal file
BIN
static/mobile/scologo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
7
static/mobile/static/css/2.4c97ca4f.chunk.css
Normal file
7
static/mobile/static/css/2.4c97ca4f.chunk.css
Normal file
File diff suppressed because one or more lines are too long
1
static/mobile/static/css/2.4c97ca4f.chunk.css.map
Normal file
1
static/mobile/static/css/2.4c97ca4f.chunk.css.map
Normal file
File diff suppressed because one or more lines are too long
2
static/mobile/static/css/main.6be5a531.chunk.css
Normal file
2
static/mobile/static/css/main.6be5a531.chunk.css
Normal file
@ -0,0 +1,2 @@
|
||||
body{font-family:"Poppins",sans-serif;height:100vh}a{color:#92badd;display:inline-block;text-decoration:none;font-weight:400}#pageTitle{font-size:25px;color:#aaa}#loginTitle,#pageTitle{text-align:center;font-weight:600}#loginTitle{font-size:20px;text-transform:uppercase;display:inline-block;margin:40px 8px 10px;color:#ccc}.wrapper{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-flex-direction:column;flex-direction:column;-webkit-justify-content:center;justify-content:center;width:100%;min-height:100%;padding:10px}#formContent{padding:0}#errorMsg,#formContent{border-radius:10px 10px 10px 10px;background:#fff;width:90%;max-width:450px;position:relative;box-shadow:0 30px 60px 0 rgba(0,0,0,.3);text-align:center}#errorMsg{margin-bottom:10px;padding:0 0 20px}#wrapDept{border-radius:10px 10px 10px 10px;background:#fff;width:90%;max-width:450px;position:relative;box-shadow:0 10px 20px 0 rgba(0,0,0,.3);text-align:center;margin:10px;padding:10px}#formFooter{background-color:#f6f6f6;border-top:1px solid #dce8f1;padding:25px;text-align:center;border-radius:0 0 10px 10px}button[type=submit],input[type=button],input[type=reset]{background-color:#56baed;border:none;color:#fff;padding:15px 80px;text-align:center;text-decoration:none;display:inline-block;text-transform:uppercase;font-size:13px;box-shadow:0 10px 30px 0 rgba(95,186,233,.4);border-radius:5px 5px 5px 5px;margin:5px 20px 40px;transition:all .3s ease-in-out}button[type=submit]:hover,input[type=button]:hover,input[type=reset]:hover{background-color:#39ace7}button[type=submit]:active,input[type=button]:active,input[type=reset]:active{-webkit-transform:scale(.95);transform:scale(.95)}input[type=password],input[type=text]{background-color:#f6f6f6;color:#0d0d0d;padding:15px 32px;text-decoration:none;display:inline-block;font-size:16px;margin:5px;width:85%;border:2px solid #f6f6f6;transition:all .5s ease-in-out;border-radius:5px 5px 5px 5px}input[type=password]:focus,input[type=text]:focus{background-color:#fff;border-bottom:2px solid #5fbae9}input[type=password]::-webkit-input-placeholder,input[type=text]::-webkit-input-placeholder{color:#ccc}input[type=password]:-ms-input-placeholder,input[type=text]:-ms-input-placeholder{color:#ccc}input[type=password]::placeholder,input[type=text]::placeholder{color:#ccc}.underlineHover:hover{color:#0d0d0d}.underlineHover:hover:after{width:100%}:focus{outline:none}#icon{width:60%}.mySelect{min-width:200px}.smallRow{line-height:60%;font-size:70%}.ueRow{background:#5bc0de;color:#fff;font-weight:700}thead{background:#d3d3d3}
|
||||
/*# sourceMappingURL=main.6be5a531.chunk.css.map */
|
1
static/mobile/static/css/main.6be5a531.chunk.css.map
Normal file
1
static/mobile/static/css/main.6be5a531.chunk.css.map
Normal file
File diff suppressed because one or more lines are too long
3
static/mobile/static/js/2.68967b49.chunk.js
Normal file
3
static/mobile/static/js/2.68967b49.chunk.js
Normal file
File diff suppressed because one or more lines are too long
65
static/mobile/static/js/2.68967b49.chunk.js.LICENSE.txt
Normal file
65
static/mobile/static/js/2.68967b49.chunk.js.LICENSE.txt
Normal file
@ -0,0 +1,65 @@
|
||||
/*
|
||||
object-assign
|
||||
(c) Sindre Sorhus
|
||||
@license MIT
|
||||
*/
|
||||
|
||||
/*!
|
||||
Copyright (c) 2018 Jed Watson.
|
||||
Licensed under the MIT License (MIT), see
|
||||
http://jedwatson.github.io/classnames
|
||||
*/
|
||||
|
||||
/*!@license
|
||||
* UAParser.js v0.7.28
|
||||
* Lightweight JavaScript-based User-Agent string parser
|
||||
* https://github.com/faisalman/ua-parser-js
|
||||
*
|
||||
* Copyright © 2012-2021 Faisal Salman <f@faisalman.com>
|
||||
* Licensed under MIT License
|
||||
*/
|
||||
|
||||
/** @license React v0.20.2
|
||||
* scheduler.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/** @license React v16.13.1
|
||||
* react-is.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/** @license React v17.0.2
|
||||
* react-dom.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/** @license React v17.0.2
|
||||
* react-jsx-runtime.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/** @license React v17.0.2
|
||||
* react.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
1
static/mobile/static/js/2.68967b49.chunk.js.map
Normal file
1
static/mobile/static/js/2.68967b49.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
static/mobile/static/js/3.d2558866.chunk.js
Normal file
2
static/mobile/static/js/3.d2558866.chunk.js
Normal file
@ -0,0 +1,2 @@
|
||||
(this.webpackJsonpscodocmobile=this.webpackJsonpscodocmobile||[]).push([[3],{116:function(t,e,n){"use strict";n.r(e),n.d(e,"getCLS",(function(){return p})),n.d(e,"getFCP",(function(){return g})),n.d(e,"getFID",(function(){return F})),n.d(e,"getLCP",(function(){return k})),n.d(e,"getTTFB",(function(){return C}));var i,a,r,o,c=function(t,e){return{name:t,value:void 0===e?-1:e,delta:0,entries:[],id:"v1-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12)}},u=function(t,e){try{if(PerformanceObserver.supportedEntryTypes.includes(t)){var n=new PerformanceObserver((function(t){return t.getEntries().map(e)}));return n.observe({type:t,buffered:!0}),n}}catch(t){}},s=function(t,e){var n=function n(i){"pagehide"!==i.type&&"hidden"!==document.visibilityState||(t(i),e&&(removeEventListener("visibilitychange",n,!0),removeEventListener("pagehide",n,!0)))};addEventListener("visibilitychange",n,!0),addEventListener("pagehide",n,!0)},f=function(t){addEventListener("pageshow",(function(e){e.persisted&&t(e)}),!0)},d="function"==typeof WeakSet?new WeakSet:new Set,m=function(t,e,n){var i;return function(){e.value>=0&&(n||d.has(e)||"hidden"===document.visibilityState)&&(e.delta=e.value-(i||0),(e.delta||void 0===i)&&(i=e.value,t(e)))}},p=function(t,e){var n,i=c("CLS",0),a=function(t){t.hadRecentInput||(i.value+=t.value,i.entries.push(t),n())},r=u("layout-shift",a);r&&(n=m(t,i,e),s((function(){r.takeRecords().map(a),n()})),f((function(){i=c("CLS",0),n=m(t,i,e)})))},v=-1,l=function(){return"hidden"===document.visibilityState?0:1/0},h=function(){s((function(t){var e=t.timeStamp;v=e}),!0)},S=function(){return v<0&&(v=l(),h(),f((function(){setTimeout((function(){v=l(),h()}),0)}))),{get timeStamp(){return v}}},g=function(t,e){var n,i=S(),a=c("FCP"),r=u("paint",(function(t){"first-contentful-paint"===t.name&&(r&&r.disconnect(),t.startTime<i.timeStamp&&(a.value=t.startTime,a.entries.push(t),d.add(a),n()))}));r&&(n=m(t,a,e),f((function(i){a=c("FCP"),n=m(t,a,e),requestAnimationFrame((function(){requestAnimationFrame((function(){a.value=performance.now()-i.timeStamp,d.add(a),n()}))}))})))},y={passive:!0,capture:!0},w=new Date,E=function(t,e){i||(i=e,a=t,r=new Date,b(removeEventListener),L())},L=function(){if(a>=0&&a<r-w){var t={entryType:"first-input",name:i.type,target:i.target,cancelable:i.cancelable,startTime:i.timeStamp,processingStart:i.timeStamp+a};o.forEach((function(e){e(t)})),o=[]}},T=function(t){if(t.cancelable){var e=(t.timeStamp>1e12?new Date:performance.now())-t.timeStamp;"pointerdown"==t.type?function(t,e){var n=function(){E(t,e),a()},i=function(){a()},a=function(){removeEventListener("pointerup",n,y),removeEventListener("pointercancel",i,y)};addEventListener("pointerup",n,y),addEventListener("pointercancel",i,y)}(e,t):E(e,t)}},b=function(t){["mousedown","keydown","touchstart","pointerdown"].forEach((function(e){return t(e,T,y)}))},F=function(t,e){var n,r=S(),p=c("FID"),v=function(t){t.startTime<r.timeStamp&&(p.value=t.processingStart-t.startTime,p.entries.push(t),d.add(p),n())},l=u("first-input",v);n=m(t,p,e),l&&s((function(){l.takeRecords().map(v),l.disconnect()}),!0),l&&f((function(){var r;p=c("FID"),n=m(t,p,e),o=[],a=-1,i=null,b(addEventListener),r=v,o.push(r),L()}))},k=function(t,e){var n,i=S(),a=c("LCP"),r=function(t){var e=t.startTime;e<i.timeStamp&&(a.value=e,a.entries.push(t)),n()},o=u("largest-contentful-paint",r);if(o){n=m(t,a,e);var p=function(){d.has(a)||(o.takeRecords().map(r),o.disconnect(),d.add(a),n())};["keydown","click"].forEach((function(t){addEventListener(t,p,{once:!0,capture:!0})})),s(p,!0),f((function(i){a=c("LCP"),n=m(t,a,e),requestAnimationFrame((function(){requestAnimationFrame((function(){a.value=performance.now()-i.timeStamp,d.add(a),n()}))}))}))}},C=function(t){var e,n=c("TTFB");e=function(){try{var e=performance.getEntriesByType("navigation")[0]||function(){var t=performance.timing,e={entryType:"navigation",startTime:0};for(var n in t)"navigationStart"!==n&&"toJSON"!==n&&(e[n]=Math.max(t[n]-t.navigationStart,0));return e}();n.value=n.delta=e.responseStart,n.entries=[e],t(n)}catch(t){}},"complete"===document.readyState?setTimeout(e,0):addEventListener("pageshow",e)}}}]);
|
||||
//# sourceMappingURL=3.d2558866.chunk.js.map
|
1
static/mobile/static/js/3.d2558866.chunk.js.map
Normal file
1
static/mobile/static/js/3.d2558866.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
static/mobile/static/js/main.9d1150c9.chunk.js
Normal file
2
static/mobile/static/js/main.9d1150c9.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
static/mobile/static/js/main.9d1150c9.chunk.js.map
Normal file
1
static/mobile/static/js/main.9d1150c9.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
static/mobile/static/js/runtime-main.b827b16d.js
Normal file
2
static/mobile/static/js/runtime-main.b827b16d.js
Normal file
@ -0,0 +1,2 @@
|
||||
!function(e){function r(r){for(var n,i,a=r[0],c=r[1],l=r[2],s=0,p=[];s<a.length;s++)i=a[s],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&p.push(o[i][0]),o[i]=0;for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(f&&f(r);p.length;)p.shift()();return u.push.apply(u,l||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,a=1;a<t.length;a++){var c=t[a];0!==o[c]&&(n=!1)}n&&(u.splice(r--,1),e=i(i.s=t[0]))}return e}var n={},o={1:0},u=[];function i(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var u,a=document.createElement("script");a.charset="utf-8",a.timeout=120,i.nc&&a.setAttribute("nonce",i.nc),a.src=function(e){return i.p+"static/js/"+({}[e]||e)+"."+{3:"d2558866"}[e]+".chunk.js"}(e);var c=new Error;u=function(r){a.onerror=a.onload=null,clearTimeout(l);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),u=r&&r.target&&r.target.src;c.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",c.name="ChunkLoadError",c.type=n,c.request=u,t[1](c)}o[e]=void 0}};var l=setTimeout((function(){u({type:"timeout",target:a})}),12e4);a.onerror=a.onload=u,document.head.appendChild(a)}return Promise.all(r)},i.m=e,i.c=n,i.d=function(e,r,t){i.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},i.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,r){if(1&r&&(e=i(e)),8&r)return e;if(4&r&&"object"===typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)i.d(t,n,function(r){return e[r]}.bind(null,n));return t},i.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(r,"a",r),r},i.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},i.p="./",i.oe=function(e){throw console.error(e),e};var a=this.webpackJsonpscodocmobile=this.webpackJsonpscodocmobile||[],c=a.push.bind(a);a.push=r,a=a.slice();for(var l=0;l<a.length;l++)r(a[l]);var f=c;t()}([]);
|
||||
//# sourceMappingURL=runtime-main.b827b16d.js.map
|
1
static/mobile/static/js/runtime-main.b827b16d.js.map
Normal file
1
static/mobile/static/js/runtime-main.b827b16d.js.map
Normal file
File diff suppressed because one or more lines are too long
72
test_scenario1_formation.py
Normal file
72
test_scenario1_formation.py
Normal file
@ -0,0 +1,72 @@
|
||||
import sco_formations
|
||||
import random
|
||||
# La variable context est définie par le script de lancement
|
||||
# l'affecte ainsi pour évietr les warnins pylint:
|
||||
context = context # pylint: disable=undefined-variable
|
||||
REQUEST = REQUEST # pylint: disable=undefined-variable
|
||||
import scotests.sco_fake_gen as sco_fake_gen # pylint: disable=import-error
|
||||
import sco_moduleimpl
|
||||
|
||||
G = sco_fake_gen.ScoFake(context.Notes)
|
||||
G.verbose = False
|
||||
|
||||
file = open("scotests/export_formation1.xml")
|
||||
doc = file.read()
|
||||
file.close()
|
||||
|
||||
|
||||
# --- Création de la formation
|
||||
|
||||
f = sco_formations.formation_import_xml(REQUEST=REQUEST, doc=doc, context=context.Notes)
|
||||
|
||||
# --- Création des semestres
|
||||
|
||||
sem1 = G.create_formsemestre(
|
||||
formation_id=f[0],
|
||||
semestre_id=1,
|
||||
date_debut="01/09/2020",
|
||||
date_fin="01/02/2021",
|
||||
)
|
||||
|
||||
sem3 = G.create_formsemestre(
|
||||
formation_id=f[0],
|
||||
semestre_id=3,
|
||||
date_debut="01/09/2020",
|
||||
date_fin="01/02/2021",
|
||||
)
|
||||
|
||||
sem2 = G.create_formsemestre(
|
||||
formation_id=f[0],
|
||||
semestre_id=2,
|
||||
date_debut="02/02/2021",
|
||||
date_fin="01/06/2021",
|
||||
)
|
||||
|
||||
sem4 = G.create_formsemestre(
|
||||
formation_id=f[0],
|
||||
semestre_id=4,
|
||||
date_debut="02/02/2021",
|
||||
date_fin="01/06/2021",
|
||||
)
|
||||
|
||||
|
||||
# --- Implémentation des modules
|
||||
|
||||
li_module = context.Notes.do_module_list()
|
||||
mods_imp = []
|
||||
for mod in li_module :
|
||||
if mod["semestre_id"] == 1 :
|
||||
formsemestre_id = sem1["formsemestre_id"]
|
||||
elif mod["semestre_id"] == 2 :
|
||||
formsemestre_id = sem2["formsemestre_id"]
|
||||
elif mod["semestre_id"] == 3 :
|
||||
formsemestre_id = sem3["formsemestre_id"]
|
||||
else :
|
||||
formsemestre_id = sem4["formsemestre_id"]
|
||||
|
||||
mi = G.create_moduleimpl(
|
||||
module_id=mod["module_id"],
|
||||
formsemestre_id=formsemestre_id,
|
||||
responsable_id="bach",
|
||||
)
|
||||
mods_imp.append(mi)
|
105
test_scenario2_formation.py
Normal file
105
test_scenario2_formation.py
Normal file
@ -0,0 +1,105 @@
|
||||
import sco_formations
|
||||
import random
|
||||
# La variable context est définie par le script de lancement
|
||||
# l'affecte ainsi pour évietr les warnins pylint:
|
||||
context = context # pylint: disable=undefined-variable
|
||||
REQUEST = REQUEST # pylint: disable=undefined-variable
|
||||
import scotests.sco_fake_gen as sco_fake_gen # pylint: disable=import-error
|
||||
import sco_moduleimpl
|
||||
|
||||
G = sco_fake_gen.ScoFake(context.Notes)
|
||||
G.verbose = False
|
||||
|
||||
file = open("scotests/export_formation1.xml")
|
||||
doc = file.read()
|
||||
file.close()
|
||||
|
||||
|
||||
# --- Création de la formation
|
||||
|
||||
f = sco_formations.formation_import_xml(REQUEST=REQUEST, doc=doc, context=context.Notes)
|
||||
|
||||
# --- Création des semestres
|
||||
|
||||
sem1 = G.create_formsemestre(
|
||||
formation_id=f[0],
|
||||
semestre_id=1,
|
||||
date_debut="01/09/2020",
|
||||
date_fin="01/02/2021",
|
||||
)
|
||||
|
||||
sem3 = G.create_formsemestre(
|
||||
formation_id=f[0],
|
||||
semestre_id=3,
|
||||
date_debut="01/09/2020",
|
||||
date_fin="01/02/2021",
|
||||
)
|
||||
|
||||
sem2 = G.create_formsemestre(
|
||||
formation_id=f[0],
|
||||
semestre_id=2,
|
||||
date_debut="02/02/2021",
|
||||
date_fin="01/06/2021",
|
||||
)
|
||||
|
||||
sem4 = G.create_formsemestre(
|
||||
formation_id=f[0],
|
||||
semestre_id=4,
|
||||
date_debut="02/02/2021",
|
||||
date_fin="01/06/2021",
|
||||
)
|
||||
|
||||
|
||||
# --- Implémentation des modules
|
||||
|
||||
li_module = context.Notes.do_module_list()
|
||||
mods_imp = []
|
||||
for mod in li_module :
|
||||
if mod["semestre_id"] == 1 :
|
||||
formsemestre_id = sem1["formsemestre_id"]
|
||||
elif mod["semestre_id"] == 2 :
|
||||
formsemestre_id = sem2["formsemestre_id"]
|
||||
elif mod["semestre_id"] == 3 :
|
||||
formsemestre_id = sem3["formsemestre_id"]
|
||||
else :
|
||||
formsemestre_id = sem4["formsemestre_id"]
|
||||
|
||||
mi = G.create_moduleimpl(
|
||||
module_id=mod["module_id"],
|
||||
formsemestre_id=formsemestre_id,
|
||||
responsable_id="bach",
|
||||
)
|
||||
mods_imp.append(mi)
|
||||
|
||||
# --- Création des étudiants
|
||||
|
||||
etuds=[]
|
||||
for nom, prenom in [
|
||||
("Semestre1", "EtudiantNumero1"),
|
||||
("Semestre1", "EtudiantNumero2"),
|
||||
("Semestre2", "EtudiantNumero3"),
|
||||
("Semestre2", "EtudiantNumero4"),
|
||||
("Semestre3", "EtudiantNumero5"),
|
||||
("Semestre3", "EtudiantNumero6"),
|
||||
("Semestre4", "EtudiantNumero7"),
|
||||
("Semestre4", "EtudiantNumero8")
|
||||
] :
|
||||
etud = G.create_etud(
|
||||
nom=nom,
|
||||
prenom=prenom,
|
||||
)
|
||||
etuds.append(etud)
|
||||
|
||||
# --- Inscription des étudiants
|
||||
|
||||
for etud in etuds[0:2]:
|
||||
G.inscrit_etudiant(sem1, etud)
|
||||
|
||||
for etud in etuds[2:4]:
|
||||
G.inscrit_etudiant(sem2, etud)
|
||||
|
||||
for etud in etuds[4:6]:
|
||||
G.inscrit_etudiant(sem3, etud)
|
||||
|
||||
for etud in etuds[6:]:
|
||||
G.inscrit_etudiant(sem4, etud)
|
135
test_scenario3_formation.py
Normal file
135
test_scenario3_formation.py
Normal file
@ -0,0 +1,135 @@
|
||||
import sco_formations
|
||||
import json
|
||||
import random
|
||||
# La variable context est définie par le script de lancement
|
||||
# l'affecte ainsi pour évietr les warnins pylint:
|
||||
context = context # pylint: disable=undefined-variable
|
||||
REQUEST = REQUEST # pylint: disable=undefined-variable
|
||||
import scotests.sco_fake_gen as sco_fake_gen # pylint: disable=import-error
|
||||
import sco_moduleimpl
|
||||
|
||||
G = sco_fake_gen.ScoFake(context.Notes)
|
||||
G.verbose = False
|
||||
|
||||
file = open("scotests/export_formation1.xml")
|
||||
doc = file.read()
|
||||
file.close()
|
||||
|
||||
|
||||
# --- Création de la formation
|
||||
|
||||
f = sco_formations.formation_import_xml(REQUEST=REQUEST, doc=doc, context=context.Notes)
|
||||
|
||||
# --- Création des semestres
|
||||
|
||||
sem1 = G.create_formsemestre(
|
||||
formation_id=f[0],
|
||||
semestre_id=1,
|
||||
date_debut="01/09/2020",
|
||||
date_fin="01/02/2021",
|
||||
)
|
||||
|
||||
sem3 = G.create_formsemestre(
|
||||
formation_id=f[0],
|
||||
semestre_id=3,
|
||||
date_debut="01/09/2020",
|
||||
date_fin="01/02/2021",
|
||||
)
|
||||
|
||||
sem2 = G.create_formsemestre(
|
||||
formation_id=f[0],
|
||||
semestre_id=2,
|
||||
date_debut="02/02/2021",
|
||||
date_fin="01/06/2021",
|
||||
)
|
||||
|
||||
sem4 = G.create_formsemestre(
|
||||
formation_id=f[0],
|
||||
semestre_id=4,
|
||||
date_debut="02/02/2021",
|
||||
date_fin="01/06/2021",
|
||||
)
|
||||
|
||||
|
||||
# --- Implémentation des modules
|
||||
|
||||
li_module = context.Notes.do_module_list()
|
||||
mods_imp = []
|
||||
for mod in li_module :
|
||||
if mod["semestre_id"] == 1 :
|
||||
formsemestre_id = sem1["formsemestre_id"]
|
||||
elif mod["semestre_id"] == 2 :
|
||||
formsemestre_id = sem2["formsemestre_id"]
|
||||
elif mod["semestre_id"] == 3 :
|
||||
formsemestre_id = sem3["formsemestre_id"]
|
||||
else :
|
||||
formsemestre_id = sem4["formsemestre_id"]
|
||||
|
||||
mi = G.create_moduleimpl(
|
||||
module_id=mod["module_id"],
|
||||
formsemestre_id=formsemestre_id,
|
||||
responsable_id="bach",
|
||||
)
|
||||
mods_imp.append(mi)
|
||||
|
||||
# --- Création des étudiants
|
||||
|
||||
etuds=[]
|
||||
for nom, prenom in [
|
||||
("Semestre1", "EtudiantNumero1"),
|
||||
("Semestre1", "EtudiantNumero2"),
|
||||
("Semestre2", "EtudiantNumero3"),
|
||||
("Semestre2", "EtudiantNumero4"),
|
||||
("Semestre3", "EtudiantNumero5"),
|
||||
("Semestre3", "EtudiantNumero6"),
|
||||
("Semestre4", "EtudiantNumero7"),
|
||||
("Semestre4", "EtudiantNumero8")
|
||||
] :
|
||||
etud = G.create_etud(
|
||||
nom=nom,
|
||||
prenom=prenom,
|
||||
)
|
||||
etuds.append(etud)
|
||||
|
||||
# --- Inscription des étudiants
|
||||
|
||||
for etud in etuds[0:2]:
|
||||
G.inscrit_etudiant(sem1, etud)
|
||||
|
||||
for etud in etuds[2:4]:
|
||||
G.inscrit_etudiant(sem2, etud)
|
||||
|
||||
for etud in etuds[4:6]:
|
||||
G.inscrit_etudiant(sem3, etud)
|
||||
|
||||
for etud in etuds[6:]:
|
||||
G.inscrit_etudiant(sem4, etud)
|
||||
|
||||
# --- Création d'une évaluation pour chaque UE
|
||||
|
||||
lim_sem1 = sco_moduleimpl.do_moduleimpl_list(context.Notes, formsemestre_id=sem1["formsemestre_id"], REQUEST=REQUEST)
|
||||
load_lim_sem1 = json.loads(lim_sem1)
|
||||
|
||||
lim_sem2 = sco_moduleimpl.do_moduleimpl_list(context.Notes, formsemestre_id=sem2["formsemestre_id"], REQUEST=REQUEST)
|
||||
load_lim_sem2 = json.loads(lim_sem2)
|
||||
|
||||
lim_sem3 = sco_moduleimpl.do_moduleimpl_list(context.Notes, formsemestre_id=sem3["formsemestre_id"], REQUEST=REQUEST)
|
||||
load_lim_sem3 = json.loads(lim_sem3)
|
||||
|
||||
lim_sem4 = sco_moduleimpl.do_moduleimpl_list(context.Notes, formsemestre_id=sem4["formsemestre_id"], REQUEST=REQUEST)
|
||||
load_lim_sem4 = json.loads(lim_sem4)
|
||||
|
||||
|
||||
for moduleimpl_id, jour, description, coefficient in [
|
||||
(load_lim_sem1[1]["moduleimpl_id"], "02/09/2020", "InterroTestSemestre1", 1.0),
|
||||
(load_lim_sem1[2]["moduleimpl_id"], "03/09/2020", "InterroTestSemestre1", 1.0),
|
||||
(load_lim_sem2[1]["moduleimpl_id"], "03/02/2021", "InterroTestSemestre2", 1.0),
|
||||
(load_lim_sem2[8]["moduleimpl_id"], "04/02/2021", "InterroTestSemestre2", 1.0),
|
||||
(load_lim_sem3[3]["moduleimpl_id"], "02/09/2020", "InterroTestSemestre3", 1.0),
|
||||
(load_lim_sem3[9]["moduleimpl_id"], "03/09/2020", "InterroTestSemestre3", 1.0),
|
||||
(load_lim_sem3[15]["moduleimpl_id"], "04/09/2020", "InterroTestSemestre3", 1.0),
|
||||
(load_lim_sem4[3]["moduleimpl_id"], "03/02/2021", "InterroTestSemestre4", 1.0),
|
||||
(load_lim_sem4[9]["moduleimpl_id"], "04/02/2021", "InterroTestSemestre4", 1.0),
|
||||
(load_lim_sem4[13]["moduleimpl_id"], "05/02/2021", "InterroTestSemestre4", 1.0),
|
||||
] :
|
||||
e = G.create_evaluation(moduleimpl_id=moduleimpl_id, jour=jour, description=description, coefficient=coefficient)
|
172
test_scenario4_formation.py
Normal file
172
test_scenario4_formation.py
Normal file
@ -0,0 +1,172 @@
|
||||
import sco_formations
|
||||
import json
|
||||
import random
|
||||
# La variable context est définie par le script de lancement
|
||||
# l'affecte ainsi pour évietr les warnins pylint:
|
||||
context = context # pylint: disable=undefined-variable
|
||||
REQUEST = REQUEST # pylint: disable=undefined-variable
|
||||
import scotests.sco_fake_gen as sco_fake_gen # pylint: disable=import-error
|
||||
import sco_moduleimpl
|
||||
|
||||
G = sco_fake_gen.ScoFake(context.Notes)
|
||||
G.verbose = False
|
||||
|
||||
file = open("scotests/export_formation1.xml")
|
||||
doc = file.read()
|
||||
file.close()
|
||||
|
||||
|
||||
# --- Création de la formation
|
||||
|
||||
f = sco_formations.formation_import_xml(REQUEST=REQUEST, doc=doc, context=context.Notes)
|
||||
|
||||
# --- Création des semestres
|
||||
|
||||
sem1 = G.create_formsemestre(
|
||||
formation_id=f[0],
|
||||
semestre_id=1,
|
||||
date_debut="01/09/2020",
|
||||
date_fin="01/02/2021",
|
||||
)
|
||||
|
||||
sem3 = G.create_formsemestre(
|
||||
formation_id=f[0],
|
||||
semestre_id=3,
|
||||
date_debut="01/09/2020",
|
||||
date_fin="01/02/2021",
|
||||
)
|
||||
|
||||
sem2 = G.create_formsemestre(
|
||||
formation_id=f[0],
|
||||
semestre_id=2,
|
||||
date_debut="02/02/2021",
|
||||
date_fin="01/06/2021",
|
||||
)
|
||||
|
||||
sem4 = G.create_formsemestre(
|
||||
formation_id=f[0],
|
||||
semestre_id=4,
|
||||
date_debut="02/02/2021",
|
||||
date_fin="01/06/2021",
|
||||
)
|
||||
|
||||
|
||||
# --- Implémentation des modules
|
||||
|
||||
li_module = context.Notes.do_module_list()
|
||||
mods_imp = []
|
||||
for mod in li_module :
|
||||
if mod["semestre_id"] == 1 :
|
||||
formsemestre_id = sem1["formsemestre_id"]
|
||||
elif mod["semestre_id"] == 2 :
|
||||
formsemestre_id = sem2["formsemestre_id"]
|
||||
elif mod["semestre_id"] == 3 :
|
||||
formsemestre_id = sem3["formsemestre_id"]
|
||||
else :
|
||||
formsemestre_id = sem4["formsemestre_id"]
|
||||
|
||||
mi = G.create_moduleimpl(
|
||||
module_id=mod["module_id"],
|
||||
formsemestre_id=formsemestre_id,
|
||||
responsable_id="bach",
|
||||
)
|
||||
mods_imp.append(mi)
|
||||
|
||||
# --- Création des étudiants
|
||||
|
||||
etuds=[]
|
||||
for nom, prenom in [
|
||||
("Semestre1", "EtudiantNumero1"),
|
||||
("Semestre1", "EtudiantNumero2"),
|
||||
("Semestre2", "EtudiantNumero3"),
|
||||
("Semestre2", "EtudiantNumero4"),
|
||||
("Semestre3", "EtudiantNumero5"),
|
||||
("Semestre3", "EtudiantNumero6"),
|
||||
("Semestre4", "EtudiantNumero7"),
|
||||
("Semestre4", "EtudiantNumero8")
|
||||
] :
|
||||
etud = G.create_etud(
|
||||
nom=nom,
|
||||
prenom=prenom,
|
||||
)
|
||||
etuds.append(etud)
|
||||
|
||||
# --- Inscription des étudiants
|
||||
|
||||
for etud in etuds[0:2]:
|
||||
G.inscrit_etudiant(sem1, etud)
|
||||
|
||||
for etud in etuds[2:4]:
|
||||
G.inscrit_etudiant(sem2, etud)
|
||||
|
||||
for etud in etuds[4:6]:
|
||||
G.inscrit_etudiant(sem3, etud)
|
||||
|
||||
for etud in etuds[6:]:
|
||||
G.inscrit_etudiant(sem4, etud)
|
||||
|
||||
# --- Création d'une évaluation pour chaque UE
|
||||
|
||||
lim_sem1 = sco_moduleimpl.do_moduleimpl_list(context.Notes, formsemestre_id=sem1["formsemestre_id"], REQUEST=REQUEST)
|
||||
load_lim_sem1 = json.loads(lim_sem1)
|
||||
|
||||
lim_sem2 = sco_moduleimpl.do_moduleimpl_list(context.Notes, formsemestre_id=sem2["formsemestre_id"], REQUEST=REQUEST)
|
||||
load_lim_sem2 = json.loads(lim_sem2)
|
||||
|
||||
lim_sem3 = sco_moduleimpl.do_moduleimpl_list(context.Notes, formsemestre_id=sem3["formsemestre_id"], REQUEST=REQUEST)
|
||||
load_lim_sem3 = json.loads(lim_sem3)
|
||||
|
||||
lim_sem4 = sco_moduleimpl.do_moduleimpl_list(context.Notes, formsemestre_id=sem4["formsemestre_id"], REQUEST=REQUEST)
|
||||
load_lim_sem4 = json.loads(lim_sem4)
|
||||
|
||||
|
||||
for moduleimpl_id, jour, description, coefficient in [
|
||||
(load_lim_sem1[1]["moduleimpl_id"], "02/09/2020", "InterroTestSemestre1", 1.0),
|
||||
(load_lim_sem1[2]["moduleimpl_id"], "03/09/2020", "InterroTestSemestre1", 1.0),
|
||||
(load_lim_sem2[1]["moduleimpl_id"], "03/02/2021", "InterroTestSemestre2", 1.0),
|
||||
(load_lim_sem2[8]["moduleimpl_id"], "04/02/2021", "InterroTestSemestre2", 1.0),
|
||||
(load_lim_sem3[3]["moduleimpl_id"], "02/09/2020", "InterroTestSemestre3", 1.0),
|
||||
(load_lim_sem3[9]["moduleimpl_id"], "03/09/2020", "InterroTestSemestre3", 1.0),
|
||||
(load_lim_sem3[15]["moduleimpl_id"], "04/09/2020", "InterroTestSemestre3", 1.0),
|
||||
(load_lim_sem4[3]["moduleimpl_id"], "03/02/2021", "InterroTestSemestre4", 1.0),
|
||||
(load_lim_sem4[9]["moduleimpl_id"], "04/02/2021", "InterroTestSemestre4", 1.0),
|
||||
(load_lim_sem4[13]["moduleimpl_id"], "05/02/2021", "InterroTestSemestre4", 1.0),
|
||||
] :
|
||||
e = G.create_evaluation(moduleimpl_id=moduleimpl_id, jour=jour, description=description, coefficient=coefficient)
|
||||
|
||||
|
||||
# --- Saisie des notes des étudiants (un élève a 12, un autre a 7 pour chaque semestre)
|
||||
|
||||
lie1 = context.Notes.do_evaluation_list_in_formsemestre(formsemestre_id=sem1["formsemestre_id"])
|
||||
lie2 = context.Notes.do_evaluation_list_in_formsemestre(formsemestre_id=sem2["formsemestre_id"])
|
||||
lie3 = context.Notes.do_evaluation_list_in_formsemestre(formsemestre_id=sem3["formsemestre_id"])
|
||||
lie4 = context.Notes.do_evaluation_list_in_formsemestre(formsemestre_id=sem4["formsemestre_id"])
|
||||
|
||||
for eval in lie1 :
|
||||
for etud in etuds[:2] :
|
||||
if etud == etuds[0] :
|
||||
nb_changed, nb_suppress, existing_decisions = G.create_note(evaluation=eval, etud=etud, note=12.0)
|
||||
else :
|
||||
nb_changed, nb_suppress, existing_decisions = G.create_note(evaluation=eval, etud=etud, note=7.0)
|
||||
|
||||
for eval in lie2 :
|
||||
for etud in etuds[2:4] :
|
||||
if etud == etuds[2] :
|
||||
nb_changed, nb_suppress, existing_decisions = G.create_note(evaluation=eval, etud=etud, note=12.0)
|
||||
else :
|
||||
nb_changed, nb_suppress, existing_decisions = G.create_note(evaluation=eval, etud=etud, note=7.0)
|
||||
|
||||
|
||||
for eval in lie3 :
|
||||
for etud in etuds[4:6] :
|
||||
if etud == etuds[4] :
|
||||
nb_changed, nb_suppress, existing_decisions = G.create_note(evaluation=eval, etud=etud, note=12.0)
|
||||
else :
|
||||
nb_changed, nb_suppress, existing_decisions = G.create_note(evaluation=eval, etud=etud, note=7.0)
|
||||
|
||||
for eval in lie4 :
|
||||
for etud in etuds[6:] :
|
||||
if etud == etuds[6] :
|
||||
nb_changed, nb_suppress, existing_decisions = G.create_note(evaluation=eval, etud=etud, note=12.0)
|
||||
else :
|
||||
nb_changed, nb_suppress, existing_decisions = G.create_note(evaluation=eval, etud=etud, note=7.0)
|
Loading…
Reference in New Issue
Block a user