1
0
forked from ScoDoc/ScoDoc

unit test pass

This commit is contained in:
Emmanuel Viennet 2021-08-01 17:13:47 +03:00
parent 5db32a80ee
commit 80dd25ba02
6 changed files with 38 additions and 31 deletions

View File

@ -687,7 +687,7 @@ def EtatAbsences(context, REQUEST=None):
</td></tr></table> </td></tr></table>
</form>""" </form>"""
% (scu.AnneeScolaire(REQUEST), datetime.datetime.now().strftime("%d/%m/%Y")), % (scu.AnneeScolaire(), datetime.datetime.now().strftime("%d/%m/%Y")),
html_sco_header.sco_footer(), html_sco_header.sco_footer(),
] ]
return "\n".join(H) return "\n".join(H)
@ -721,12 +721,13 @@ def formChoixSemestreGroupe(context, all=False):
return "\n".join(H) return "\n".join(H)
def CalAbs(context, REQUEST=None): # etud implied def CalAbs(context, etudid, sco_year=None):
"""Calendrier des absences d'un etudiant""" """Calendrier des absences d'un etudiant"""
# crude portage from 1999 DTML # crude portage from 1999 DTML
REQUEST = None # XXX
etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0] etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0]
etudid = etud["etudid"] etudid = etud["etudid"]
anneescolaire = int(scu.AnneeScolaire(REQUEST)) anneescolaire = int(scu.AnneeScolaire(sco_year))
datedebut = str(anneescolaire) + "-08-31" datedebut = str(anneescolaire) + "-08-31"
datefin = str(anneescolaire + 1) + "-07-31" datefin = str(anneescolaire + 1) + "-07-31"
nbabs = sco_abs.count_abs(etudid=etudid, debut=datedebut, fin=datefin) nbabs = sco_abs.count_abs(etudid=etudid, debut=datedebut, fin=datefin)
@ -796,18 +797,25 @@ def CalAbs(context, REQUEST=None): # etud implied
def ListeAbsEtud( def ListeAbsEtud(
context, context,
etudid, etudid,
with_evals=True, # indique les evaluations aux dates d'absences with_evals=True,
format="html", format="html",
absjust_only=0, # si vrai, renvoie table absences justifiées absjust_only=0,
sco_year=None,
REQUEST=None, REQUEST=None,
): ):
"""Liste des absences d'un étudiant sur l'année en cours """Liste des absences d'un étudiant sur l'année en cours
En format 'html': page avec deux tableaux (non justifiées et justifiées). En format 'html': page avec deux tableaux (non justifiées et justifiées).
En format json, xml, xls ou pdf: l'un ou l'autre des table, suivant absjust_only. En format json, xml, xls ou pdf: l'un ou l'autre des table, suivant absjust_only.
En format 'text': texte avec liste d'absences (pour mails). En format 'text': texte avec liste d'absences (pour mails).
Args:
etudid:
with_evals: indique les evaluations aux dates d'absences
absjust_only: si vrai, renvoie table absences justifiées
sco_year: année scolaire à utiliser. Si non spécifier, utilie l'année en cours. e.g. "2005"
""" """
absjust_only = int(absjust_only) # si vrai, table absjust seule (export xls ou pdf) absjust_only = int(absjust_only) # si vrai, table absjust seule (export xls ou pdf)
datedebut = "%s-08-31" % scu.AnneeScolaire(REQUEST) datedebut = "%s-08-31" % scu.AnneeScolaire(sco_year=sco_year)
etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0] etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]

View File

@ -408,7 +408,7 @@ def sem_in_semestre_scolaire(context, sem, year=False, saison=0, REQUEST=None):
) )
""" """
if not year: if not year:
year = scu.AnneeScolaire(REQUEST) year = scu.AnneeScolaire()
# est-on dans la même année universitaire ? # est-on dans la même année universitaire ?
if sem["mois_debut_ord"] > 7: if sem["mois_debut_ord"] > 7:
if sem["annee_debut"] != str(year): if sem["annee_debut"] != str(year):
@ -432,7 +432,7 @@ def sem_in_annee_scolaire(context, sem, year=False, REQUEST=None):
Si annee non specifiée, année scolaire courante Si annee non specifiée, année scolaire courante
""" """
if not year: if not year:
year = scu.AnneeScolaire(REQUEST) year = scu.AnneeScolaire()
return ((sem["annee_debut"] == str(year)) and (sem["mois_debut_ord"] > 7)) or ( return ((sem["annee_debut"] == str(year)) and (sem["mois_debut_ord"] > 7)) or (
(sem["annee_debut"] == str(year + 1)) and (sem["mois_debut_ord"] <= 7) (sem["annee_debut"] == str(year + 1)) and (sem["mois_debut_ord"] <= 7)
) )
@ -574,7 +574,7 @@ def view_formsemestre_by_etape(context, etape_apo=None, format="html", REQUEST=N
tab = table_formsemestres( tab = table_formsemestres(
context, context,
list_formsemestre_by_etape( list_formsemestre_by_etape(
context, etape_apo=etape_apo, annee_scolaire=scu.AnneeScolaire(REQUEST) context, etape_apo=etape_apo, annee_scolaire=scu.AnneeScolaire()
), ),
html_title=html_title, html_title=html_title,
html_next_section="""<form action="view_formsemestre_by_etape"> html_next_section="""<form action="view_formsemestre_by_etape">

View File

@ -479,7 +479,7 @@ def semset_page(context, format="html", REQUEST=None):
] ]
H.append(tab.html()) H.append(tab.html())
annee_courante = int(scu.AnneeScolaire(REQUEST)) annee_courante = int(scu.AnneeScolaire())
menu_annee = "\n".join( menu_annee = "\n".join(
[ [
'<option value="%s">%s</option>' % (i, i) '<option value="%s">%s</option>' % (i, i)

View File

@ -762,16 +762,16 @@ def query_portal(req, msg="Portail Apogee", timeout=3):
return data return data
def AnneeScolaire(REQUEST=None): # TODO remplacer REQUEST #sco8 def AnneeScolaire(sco_year=None):
"annee de debut de l'annee scolaire courante" "annee de debut de l'annee scolaire courante"
if REQUEST and "sco_year" in REQUEST.form: if sco_year:
year = REQUEST.form["sco_year"] year = sco_year
try: try:
year = int(year) year = int(year)
if year > 1900 and year < 2999: if year > 1900 and year < 2999:
return year return year
except: except:
pass raise sco_exceptions.ScoValueError("invalid sco_year")
t = time.localtime() t = time.localtime()
year, month = t[0], t[1] year, month = t[0], t[1]
if month < 8: # le "pivot" est le 1er aout if month < 8: # le "pivot" est le 1er aout

View File

@ -173,7 +173,7 @@ def index_html(context, REQUEST=None):
% REQUEST.URL0, % REQUEST.URL0,
sco_abs_views.formChoixSemestreGroupe(context), sco_abs_views.formChoixSemestreGroupe(context),
"</p>", "</p>",
cal_select_week(context, REQUEST=REQUEST), cal_select_week(context),
"""<p class="help">Sélectionner le groupe d'étudiants, puis cliquez sur une semaine pour """<p class="help">Sélectionner le groupe d'étudiants, puis cliquez sur une semaine pour
saisir les absences de toute cette semaine.</p> saisir les absences de toute cette semaine.</p>
</form>""", </form>""",
@ -188,10 +188,10 @@ saisir les absences de toute cette semaine.</p>
return "\n".join(H) return "\n".join(H)
def cal_select_week(context, year=None, REQUEST=None): def cal_select_week(context, year=None):
"display calendar allowing week selection" "display calendar allowing week selection"
if not year: if not year:
year = scu.AnneeScolaire(REQUEST) year = scu.AnneeScolaire()
sems = sco_formsemestre.do_formsemestre_list(context) sems = sco_formsemestre.do_formsemestre_list(context)
if not sems: if not sems:
js = "" js = ""

View File

@ -243,32 +243,31 @@ def test_abs_basic(test_client):
b = sco_abs.is_work_saturday(context) b = sco_abs.is_work_saturday(context)
assert b == 0 # samedi ne sont pas compris assert b == 0 # samedi ne sont pas compris
nbabs, nbabsjust = sco_abs.get_abs_count(etudid, sem) nbabs, nbabsjust = sco_abs.get_abs_count(etudid, sem)
assert ( # l'étudiant a été absent le 15 (apres midi) , (16 et 17 we),
nbabs == 5 # 18 (matin) et 19 janvier (matin et apres midi), et 22 (matin)
) # l'étudiant a été absent le 15 (apres midi) , (16 et 17 we), 18 (matin) et 19 janvier (matin et apres midi), et 22 (matin) assert nbabs == 5
assert nbabsjust == 4 # l'étudiant justifie ses abs du 15, 18 et 19 # l'étudiant justifie ses abs du 15, 18 et 19
assert nbabsjust == 4
# + vérification à l'aide de ScoDoc WEB : ok! # --- Suppression d'une absence et d'une justification
# --- Supression d'une absence et d'une justification
_ = sco_abs_views.doAnnuleAbsence( _ = sco_abs_views.doAnnuleAbsence(
context, "19/01/2021", "19/01/2021", 2, etudid=etudid context, "19/01/2021", "19/01/2021", 2, etudid=etudid
) )
nbabs, nbabsjust = sco_abs.get_abs_count(etudid, sem) nbabs, nbabsjust = sco_abs.get_abs_count(etudid, sem)
print(nbabs) # lors du print cela affiche 5 or cela devrait afficher 3 assert nbabs == 3
assert nbabsjust == 2
# assert nbabs == 3 # --- suppression d'une justification pas encore disponible à l'aide de python.
# + vérification à l'aide de ScoDoc WEB : il y a bien plus que 3 abs, 2 justifiés et 1 non justifié.
# --- supression d'une justification pas encore disponible à l'aide de python.
# --- Création d'une liste d'abs # --- Création d'une liste d'abs
liste_abs = sco_abs_views.ListeAbsEtud( liste_abs = sco_abs_views.ListeAbsEtud(
context, etudid, format="json", absjust_only=1 context, etudid, format="json", absjust_only=1, sco_year="2020"
)
liste_abs2 = sco_abs_views.ListeAbsEtud(
context, etudid, format="json", sco_year="2020"
) )
liste_abs2 = sco_abs_views.ListeAbsEtud(context, etudid, format="json")
load_liste_abs = json.loads(liste_abs) load_liste_abs = json.loads(liste_abs)
load_liste_abs2 = json.loads(liste_abs2) load_liste_abs2 = json.loads(liste_abs2)