forked from ScoDoc/ScoDoc
176 lines
6.7 KiB
Python
176 lines
6.7 KiB
Python
# -*- mode: python -*-
|
|
# -*- coding: utf-8 -*-
|
|
|
|
##############################################################################
|
|
#
|
|
# Gestion scolarite IUT
|
|
#
|
|
# Copyright (c) 1999 - 2023 Emmanuel Viennet. All rights reserved.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
#
|
|
# Emmanuel Viennet emmanuel.viennet@viennet.net
|
|
#
|
|
##############################################################################
|
|
|
|
"""Bacs: noms de séries et spécialités, nomenclatures, abbréviations
|
|
|
|
Types prédéfinis:
|
|
G bacs généraux (S, L, ES, ...)
|
|
T bacs technologiques (STI2D, STG, ...)
|
|
P bacs professionnels
|
|
E diplômes étrangers (équivalences)
|
|
X divers
|
|
"""
|
|
|
|
_BACS = ( # tuples (bac, specialite, abbrev, type
|
|
# --- Reçus d'APB de 2013 à 2015 (tel qu'observé à IUTV)
|
|
# merci d'envoyer vos mises à jour
|
|
("A1 LETTRES-SCIENCES", "", "A1", "G"),
|
|
("B ECONOMIQUE ET SOCIAL", "", "B", "G"),
|
|
("B", "ÉCONOMIQUE ET SOCIAL", "B", "G"),
|
|
("C MATHÉMATIQUES ET SCIENCES PHYSIQUES", "", "C", "G"),
|
|
("C MATHEMATIQUES ET SCIENCES PHYSIQUES", "", "C", "G"),
|
|
("D", "", "D", "G"),
|
|
("E", "", "E", "G"),
|
|
("L LITTERATURE", "", "L", "G"),
|
|
("L LITTÉRATURE", "", "L", "G"),
|
|
("L LITTÉRATURE", "LITTÉRATURE", "L", "G"),
|
|
("L", "LITTÉRATURE", "L", "G"),
|
|
("L", "", "L", "G"),
|
|
("S", "SCIENTIFIQUE", "S", "G"),
|
|
("S SCIENTIFIQUE", "", "S", "G"),
|
|
("S SCIENTIFIQUE", "SCIENTIFIQUE", "S", "G"),
|
|
("ES ECONOMIQUE ET SOCIAL", "", "ES", "G"),
|
|
("ES ECONOMIQUE ET SOCIAL", "ECONOMIQUE ET SOCIAL", "ES", "G"),
|
|
("ES", "ECONOMIQUE ET SOCIAL", "ES", "G"),
|
|
("0000 SANS BAC", "", "SANS", "X"),
|
|
("0001 BAC INTERNATIONAL", "", "Int.", "X"),
|
|
("0021 BACS PROFESSIONNELS INDUSTRIELS", "", "Pro I", "P"),
|
|
("0021", "BACS PROFESSIONNELS INDUSTRIELS", "Pro I", "P"),
|
|
("0022 BACS PROFESSIONNELS TERTIAIRES", "", "Pro T", "P"),
|
|
("0022", "BACS PROFESSIONNELS TERTIAIRES", "Pro T", "P"),
|
|
("0030 CAPACITE DE DROIT", "", "C.D.", "X"),
|
|
("0030 CAPACITÉ DE DROIT", "", "C.D.", "X"),
|
|
("0031 TITRE ÉTRANGER ADMIS EN ÉQUIVALENCE", "", "Etr.", "E"), # accentué
|
|
("0031 TITRE ETRANGER ADMIS EN EQUIVALENCE", "", "Etr.", "E"), # non acc
|
|
(
|
|
"0031 TITRE ETRANGER ADMIS EN EQUIVALENCE",
|
|
"TITRE ETRANGER ADMIS EN EQUIVALENCE",
|
|
"Etr.",
|
|
"E",
|
|
),
|
|
("0031", "TITRE ÉTRANGER ADMIS EN ÉQUIVALENCE", "Etr.", "E"),
|
|
("31", "", "Etr.", "E"),
|
|
("0032 TITRE FRANCAIS ADMIS EN DISPENSE", "", "Disp.", "X"),
|
|
("0032", "TITRE FRANCAIS ADMIS EN DISPENSE", "Disp.", "X"),
|
|
("0033 DAEU A OU ESEU A", "", "DAEU", "X"),
|
|
("0034 DAEU B OU ESEU B", "", "DAEU", "X"),
|
|
("0036 VALIDATION ETUDES EXPERIENCES PROF.", "", "VAE", "X"),
|
|
("0036", "VALIDATION ÉTUDES EXPÉRIENCES PROF.", "VAE", "X"),
|
|
("0037 AUTRES CAS DE NON BACHELIERS", "", "Non", "X"),
|
|
("ST DE L'AGRONOMIE ET DU VIVANT", "", "STAV", "T"),
|
|
("ST DE L'INDUSTRIE ET DU DEVT DURABLE", "", "STI2D", "T"),
|
|
("ST DU MANAGEMENT ET DE LA GESTION", "", "STMG", "T"),
|
|
("ST2S SCIENCES ET TECHNO SANTE ET SOCIAL", "", "ST2S", "T"),
|
|
("ST2S", "SCIENCES ET TECHNO SANTÉ ET SOCIAL", "ST2S", "T"),
|
|
("STI SCIENCES ET TECHNIQUES INDUSTRIELLES", "", "STI", "T"),
|
|
(
|
|
"STI SCIENCES ET TECHNIQUES INDUSTRIELLES",
|
|
"SCIENCES ET TECHNIQUES INDUSTRIELLES",
|
|
"STI",
|
|
"T",
|
|
),
|
|
("STI", "SCIENCES ET TECHNIQUES INDUSTRIELLES", "STI", "T"),
|
|
("STG SCIENCES ET TECHNOLOGIES DE GESTION", "", "STG", "T"),
|
|
(
|
|
"STG SCIENCES ET TECHNOLOGIES DE GESTION",
|
|
"SCIENCES ET TECHNOLOGIES DE GESTION",
|
|
"STG",
|
|
"T",
|
|
),
|
|
("STG", "SCIENCES ET TECHNOLOGIES DE GESTION", "STG", "T"),
|
|
("STL", "SCIENCES ET TECHNO. DE LABORATOIRE", "STL", "T"),
|
|
("STL SCIENCES ET TECHNO. DE LABORATOIRE", "", "STL", "T"),
|
|
("STT SCIENCES ET TECHNOLOGIES TERTIAIRES", "", "STT", "T"),
|
|
("STT", "SCIENCES ET TECHNOLOGIES TERTIAIRES", "STT", "T"),
|
|
("STT", "", "STT", "T"),
|
|
("F3", "", "F3", "T"),
|
|
("SMS SCIENCES MEDICO-SOCIALES", "", "SMS", "T"),
|
|
("SMS", "SCIENCES MÉDICO-SOCIALES", "SMS", "T"),
|
|
("G1 TECHNIQUES ADMINISTRATIVES", "", "G1", "T"),
|
|
("G2", "", "G2", "T"),
|
|
("G2 TECHNIQUES QUANTITATIVES DE GESTION", "", "G2", "T"),
|
|
(
|
|
"G2 TECHNIQUES QUANTITATIVES DE GESTION",
|
|
"TECHNIQUES QUANTITATIVES DE GESTION",
|
|
"G2",
|
|
"T",
|
|
),
|
|
("G3", "TECHNIQUES COMMERCIALES", "G3", "T"),
|
|
("HOT", "HÔTELLERIE", "HOT", "P"),
|
|
)
|
|
|
|
# { (bac, specialite) : (abbrev, type) }
|
|
BACS_SSP = {(t[0], t[1]): t[2:] for t in _BACS}
|
|
|
|
# bac : (abbrev, type) (retient la derniere)
|
|
BACS_S = {t[0]: t[2:] for t in _BACS}
|
|
|
|
|
|
class Baccalaureat:
|
|
def __init__(self, bac, specialite=""):
|
|
self.bac = bac or ""
|
|
self.specialite = specialite or ""
|
|
self._abbrev, self._type = BACS_SSP.get(
|
|
(self.bac, self.specialite), (None, None)
|
|
)
|
|
# Parfois, la specialite commence par la serie: essaye
|
|
if (
|
|
self._type is None
|
|
and self.specialite
|
|
and self.specialite.startswith(self.bac)
|
|
):
|
|
specialite = self.specialite[len(self.bac) :].strip(" -")
|
|
self._abbrev, self._type = BACS_SSP.get(
|
|
(self.bac, specialite), (None, None)
|
|
)
|
|
# Cherche la forme serie specialite
|
|
if self._type is None and specialite:
|
|
self._abbrev, self._type = BACS_S.get(
|
|
self.bac + " " + specialite, (None, None)
|
|
)
|
|
# Cherche avec juste le bac, sans specialite
|
|
if self._type is None:
|
|
self._abbrev, self._type = BACS_S.get(self.bac, (None, None))
|
|
|
|
def abbrev(self):
|
|
"abbreviation for this bac"
|
|
if self._abbrev is None:
|
|
return (
|
|
self.bac
|
|
) # could try to build an abbrev, either from bac/specialite or using a user-supplied lookup table (not implemented)
|
|
return self._abbrev
|
|
|
|
def type(self):
|
|
"type de bac (une lettre: G, T, P, E, X)"
|
|
return self._type or "X"
|
|
|
|
def is_general(self):
|
|
return self.type() == "G"
|
|
|
|
def is_techno(self):
|
|
return self.type() == "T"
|