Project

General

Profile

Revision cf3c2494

IDcf3c2494ece15ab1296aad363b0e84c7bd2a0da0
Parent 832d63c3
Child 699bd24c

Added by Vincent QUEMENER over 13 years ago

Chaque plugin adresse désormais une seule requête à la base de données pour tous les évènements de la page, plutôt qu'une requête par évènement.

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

View differences:

vigiboard/controllers/vigiboardrequest.py
30 30

  
31 31
from sqlalchemy import not_, and_, asc, desc
32 32
from sqlalchemy.sql.expression import or_, null as expr_null, union_all
33
from sqlalchemy.orm import contains_eager
33 34

  
34 35
from vigilo.models.session import DBSession
35 36
from vigilo.models.tables import Event, CorrEvent, EventHistory, \
......
101 102
        # Les managers ont accès à tout, les autres sont soumis
102 103
        # aux vérifications classiques d'accès aux données.
103 104
        if not is_manager:
104
#            user_groups = [ug[0] for ug in user.supitemgroups() if ug[1]]
105
#            lls_query = lls_query.filter(
106
#                SUPITEM_GROUP_TABLE.c.idgroup.in_(user_groups)
107
#            )
108
#            host_query = host_query.filter(
109
#                SUPITEM_GROUP_TABLE.c.idgroup.in_(user_groups)
110
#            )
111 105

  
112 106
            lls_query = lls_query.join(
113 107
                (GroupHierarchy,
......
143 137
        # Tables sur lesquelles porte la récupération (JOIN)
144 138
        self.join = []
145 139

  
140
        # Options à ajouter la requête
141
        self.option = []
142

  
146 143
        # Tables sur lesquelles porte la récupération (OUTER JOIN)
147 144
        self.outerjoin = []
148 145

  
......
247 244
        # query et join ont besoin de referrence
248 245
        self.req = self.req.query(*self.table)
249 246
        self.req = self.req.join(*self.join)
247
        self.req = self.req.options(*self.option)
250 248

  
251 249
        # le reste, non
252 250
        for i in self.outerjoin:
......
305 303
                    break
306 304
            self.join.append(i)
307 305

  
306
    def add_option(self, *argv):
307
        """
308
        Ajoute une ou plusieurs options à la requête.
309

  
310
        @param argv: Liste des options à ajouter
311
        """
312

  
313
        # On vérifie qu'il n'y a pas de doublons
314
        # dans la liste finale des options.
315

  
316
        for i in argv:
317
            for j in self.option:
318
                if str(i) == str(j):
319
                    break
320
            self.option.append(i)
321

  
322
    def add_contains_eager(self, relation):
323
        """
324
        Ajoute une option de type contains_eager à la
325
        requête pour la relation passée en paramètre.
326
        """
327
        self.add_option(contains_eager(relation))
328

  
308 329
    def add_outer_join(self, *argv):
309 330
        """
310 331
        Ajoute une ou plusieurs jointures externes à

Also available in: Unified diff