Project

General

Profile

Revision 0f0e32ed

ID0f0e32eddeeeb503c97a9a8d17966e19356a3e2b
Parent db58b89e
Child 809955f3

Added by Francois POIROTTE about 13 years ago

Refait fonctionner la recherche sur les supitemgroups (#595).

git-svn-id: https://vigilo-dev.si.c-s.fr/svn@6680 b22e2e97-25c9-44ff-b637-2e5ceca36478

View differences:

vigiboard/controllers/plugins/groups.py
28 28

  
29 29
from vigiboard.controllers.plugins import VigiboardRequestPlugin
30 30
from vigilo.models.session import DBSession
31
from vigilo.models import tables
31 32
from vigilo.models.tables.group import Group
32 33
from vigilo.models.tables.grouphierarchy import GroupHierarchy
34
from vigilo.models.tables.secondary_tables import SUPITEM_GROUP_TABLE
33 35

  
34 36
from repoze.what.predicates import in_group
35 37
from tg import request
......
78 80
            )
79 81
        ]
80 82

  
81
    def handle_search_fields(self, query, search):
82
        pass
83
    def handle_search_fields(self, query, search, subqueries):
84
        if search.get('supitemgroup') is None:
85
            return
86

  
87
        # Il s'agit d'un manager. On applique le filtre
88
        # indĂ©pendamment aux 2 sous-requĂȘtes.
89
        if len(subqueries) == 2:
90
            subqueries[0] = subqueries[0].join(
91
                (SUPITEM_GROUP_TABLE,
92
                    or_(
93
                        SUPITEM_GROUP_TABLE.c.idsupitem == \
94
                            tables.LowLevelService.idhost,
95
                        SUPITEM_GROUP_TABLE.c.idsupitem == \
96
                            tables.LowLevelService.idservice,
97
                    )
98
                ),
99
                (GroupHierarchy, GroupHierarchy.idchild ==
100
                    SUPITEM_GROUP_TABLE.c.idgroup)
101
            ).filter(
102
                GroupHierarchy.idparent == search['supitemgroup']
103
            )
104

  
105
            subqueries[1] = subqueries[1].join(
106
                (SUPITEM_GROUP_TABLE,
107
                    SUPITEM_GROUP_TABLE.c.idsupitem == \
108
                        tables.Host.idhost,
109
                ),
110
                (GroupHierarchy, GroupHierarchy.idchild ==
111
                    SUPITEM_GROUP_TABLE.c.idgroup)
112
            ).filter(
113
                GroupHierarchy.idparent == search['supitemgroup']
114
            )
115

  
116
        # Il s'agit d'un utilisateur normal.
117
        else:
118
            subqueries[0] = subqueries[0].filter(
119
                tables.UserSupItem.idsupitemgroup == search['supitemgroup']
120
            )

Also available in: Unified diff