vigiboard / vigiboard / controllers / vigiboard_ctl / userutils.py @ 20367931
History | View | Annotate | Download (1.15 KB)
1 |
# -*- coding: utf-8 -*-
|
---|---|
2 |
# vim:set expandtab tabstop=4 shiftwidth=4:
|
3 |
"""Fonctions utiles en rapport avec l'utilisateur"""
|
4 |
|
5 |
from vigiboard.model import DBSession, Permission, Groups, GroupPermissions |
6 |
from sets import Set |
7 |
import tg |
8 |
|
9 |
def GetUserGroups(): |
10 |
|
11 |
"""
|
12 |
Permet de connaître l'ensemble des groups d'hôte et de service de vigiboard
|
13 |
auquel l'utilisateur appartient
|
14 |
|
15 |
@return: Liste des groups
|
16 |
"""
|
17 |
|
18 |
# Requête permettant d'obtenir les groups directs de l'utilisateur
|
19 |
gr = DBSession.query(Groups.name).join( |
20 |
( GroupPermissions , Groups.name == GroupPermissions.groupname ), |
21 |
( Permission , Permission.permission_id == GroupPermissions.idpermission ) |
22 |
).filter(Permission.permission_name.in_(tg.request.environ.get('repoze.who.identity').get('permissions'))) |
23 |
|
24 |
lst_grp = Set([i.name for i in gr]) |
25 |
lst_tmp = lst_grp |
26 |
|
27 |
# On recherche maintenant les groupes indirect
|
28 |
while len(lst_tmp) > 0: |
29 |
gr = DBSession.query(Groups.name).filter(Groups.parent.in_(lst_tmp)) |
30 |
tmp = Set([]) |
31 |
for i in gr : |
32 |
tmp.add(i.name) |
33 |
lst_grp.add(i.name) |
34 |
lst_tmp = tmp |
35 |
|
36 |
return lst_grp
|