groupes.py
1 |
# -*- coding: utf-8 -*-
|
---|---|
2 |
|
3 |
use_cache = True
|
4 |
|
5 |
def calc_info(user_infos): |
6 |
"""calcule groupes (classes, niveaux, disciplines)
|
7 |
|
8 |
Regroupement en une passe des trois attributs calculés précédents.
|
9 |
Les informations sont stockées en cache pour la durée de la session utilisateur
|
10 |
|
11 |
"""
|
12 |
# vérification des groupes de l'utilisateur
|
13 |
classes = set()
|
14 |
niveaux = set()
|
15 |
disciplines = [] |
16 |
if 'eleves' in user_infos['user_groups']: |
17 |
classes.add(user_infos['Divcod'][0]) |
18 |
niveaux = set(user_infos['Meflcf']) |
19 |
if 'professeurs' in user_infos['user_groups']: |
20 |
niveaux = set()
|
21 |
for group in user_infos['user_groups']: |
22 |
if group.startswith('profs-'): |
23 |
# classes
|
24 |
classes.add(group[6:])
|
25 |
# niveaux
|
26 |
classe = user_infos['infos_groups'].get(group[6:], {}) |
27 |
if 'niveau' in classe: |
28 |
niveaux.add(classe['niveau'][0]) |
29 |
# disciplines
|
30 |
gr_info = user_infos['infos_groups'].get(group, {})
|
31 |
if gr_info.get('description', [''])[0].startswith('Matiere '): |
32 |
disciplines.extend(gr_info['cn'])
|
33 |
|
34 |
return {'niveaux':list(niveaux) , 'classes': list(classes), 'disciplines':disciplines } |