Project

General

Profile

Revision 9c0dbb6a

ID9c0dbb6a047a9654ae4b7861a725086a786597ce
Parent 35cea70e
Child 8cb5da40

Added by Thomas ANDREJAK almost 15 years ago

Changement de la base de donnée pour PostgreSQL

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

View differences:

development.ini
36 36
# DB - sqlite fails, not postgresql ready, use mysql for now
37 37
#sqlalchemy.url = sqlite:///%(here)s/devdata.db
38 38
#sqlalchemy.url=mysql://vigiboard:penmdor@localhost/vigiboard
39
#sqlalchemy.url=postgres://vigiboard@localhost/vigiboard
40
sqlalchemy.url=mysql://root:tandreja@localhost:3306/vigiboard
39
sqlalchemy.url=postgres://vigiboard:tandreja@localhost/vigiboard
40
#sqlalchemy.url=mysql://root:tandreja@localhost:3306/vigiboard
41 41
#echo shouldn't be used together with the logging module.
42 42
sqlalchemy.echo = false
43 43
sqlalchemy.echo_pool = false
test.ini
16 16
port = 5000
17 17

  
18 18
[app:main]
19
sqlalchemy.url=mysql://root:tandreja@localhost:3306/vigiboard_test
19
sqlalchemy.url=postgres://vigiboard:tandreja@localhost/vigiboard_test
20
#sqlalchemy.url=mysql://root:tandreja@localhost:3306/vigiboard_test
20 21
#sqlalchemy.url = sqlite:///:memory:
21 22
use = config:development.ini
22 23

  
vigiboard/controllers/vigiboard_ctl/userutils.py
16 16
    """
17 17

  
18 18
    # Requête permettant d'obtenir les groups directs de l'utilisateur
19

  
19 20
    groups = DBSession.query(Groups.name).join(
20 21
        ( GroupPermissions , Groups.name == GroupPermissions.groupname ),
21 22
        ( Permission ,
......
23 24
        ).filter(Permission.permission_name.in_(
24 25
            tg.request.environ.get('repoze.who.identity').get('permissions')
25 26
        ))
26

  
27
    
27 28
    lst_grp = Set([i.name for i in groups])
28 29
    lst_tmp = lst_grp
29 30
    
30 31
    # On recherche maintenant les groupes indirect
32
    
31 33
    while len(lst_tmp) > 0:
32 34
        groups = DBSession.query(Groups.name).filter(Groups.parent.in_(lst_tmp))
33 35
        tmp = Set([])
vigiboard/controllers/vigiboard_ctl/vigiboard_ctl.py
99 99
                sql.func.count(Events.idevent)],
100 100
            outerjoin = [(ServiceHautNiveau,
101 101
                ServiceHautNiveau.servicename_dep == Events.servicename)],
102
            groupby = [(Events.idevent)],
102
            groupby = [(Events),(ServiceHautNiveau.servicename_dep)],
103 103
            name = _(u'SHNs impacté'),
104 104
            style = {'style':'text-align:center'}
105 105
           ))
vigiboard/controllers/vigiboard_ctl/vigiboardrequest.py
51 51
                 ServiceGroups.groupname.in_(self.user_groups),
52 52
                 not_(and_(Events.active == False,
53 53
                     Events.status == 'AAClosed')),
54
                 Events.timestamp_active != None,
55
                 not_(Events.timestamp_active.like('0000-00-00 00:00:00'))]
56
        self.orderby = [asc(Events.status),
54
                 Events.timestamp_active != None#,
55
                 #not_(Events.timestamp_active.like('0000-00-00 00:00:00'))
56
                 ]
57
        self.orderby = [desc(Events.status),
57 58
                                desc(Events.active),
58 59
                                desc(Events.severity),
59 60
                                asc(Events.hostname),
vigiboard/model/vigiboard_bdd/events.py
65 65
            output = '', event_timestamp = datetime.now(),
66 66
            last_check = datetime.now(), recover_output = '',
67 67
            timestamp_active = datetime.now(),
68
            timestamp_cleared="0000-00-00 00:00:00", trouble_ticket = None,
68
            timestamp_cleared=None, trouble_ticket = None,
69 69
            occurence = 1):
70 70

  
71 71
        self.hostname = hostname
vigiboard/model/vigiboard_bdd/graphtogroups.py
9 9
from vigiboard.model import metadata
10 10

  
11 11
from vigiboard.config.vigiboard_config import vigiboard_config
12

  
13
from vigiboard.model.vigiboard_bdd.graph import Graph
14
from vigiboard.model.vigiboard_bdd.graphgroups import GraphGroups
15

  
12 16
# Generation par SQLAutoCode
13 17

  
14 18
graphtogroups =  Table(
vigiboard/model/vigiboard_bdd/servicetopo.py
16 16
    Column(u'servicename',
17 17
        String(length=100, convert_unicode=True, assert_unicode=None),
18 18
        ForeignKey(vigiboard_config['vigiboard_bdd.basename'] + \
19
                u'servicehautniveau.servicename'),
19
                u'service.name'),
20 20
        primary_key=True, nullable=False),
21 21
    Column(u'function',
22 22
        String(length=50, convert_unicode=True, assert_unicode=None),
vigiboard/tests/functional/test_userutils.py
5 5
"""
6 6
from nose.tools import assert_true
7 7

  
8
from vigiboard.model import DBSession, Groups, Permission, GroupPermissions 
8
from vigiboard.model import DBSession, Groups, Permission, GroupPermissions, Events 
9 9
from vigiboard.tests import TestController
10 10
from vigiboard.controllers.vigiboard_ctl import get_user_groups
11 11
from vigiboard.tests import setup_db, teardown_db
12 12
import tg
13 13
import transaction
14 14

  
15
#Create an empty database before we start our tests for this module
16
def setup():
17
    """Function called by nose on module load"""
18
    setup_db()
19

  
20
#Teardown that database 
21
def teardown():
22
    """Function called by nose after all tests in this module ran"""
23
    teardown_db()
24 15

  
25 16
class TestUserUtils(TestController):
26 17
    """Test de la classe User Utils"""
18
    
19
    def tearDown(self):
20
        DBSession.rollback()
21
        teardown_db()
22
        transaction.begin() 
27 23

  
28 24
    def test_get_user_groups(self):
29 25
        """
......
33 29
        
34 30
        # On commence par peupler la base
35 31
        
36
        DBSession.add(Groups(name="hostmanagers"))
37
        DBSession.add(Groups(name="hosteditors", parent="hostmanagers"))
32
        DBSession.add(Groups(name = "hostmanagers"))
33
        DBSession.add(Groups(name = "hosteditors", parent="hostmanagers"))
34
        DBSession.query(Permission).filter(
35
            Permission.permission_name == u'manage')[0].permission_id
38 36
        idmanagers = DBSession.query(Permission).filter(
39
                Permission.permission_name == 'manage')[0].permission_id
37
                Permission.permission_name == u'manage')[0].permission_id
40 38
        ideditors = DBSession.query(Permission
41
                ).filter(Permission.permission_name == 'edit')[0].permission_id
39
                ).filter(Permission.permission_name == u'edit')[0].permission_id
42 40
        DBSession.add(GroupPermissions(groupname = "hostmanagers",
43 41
                idpermission = idmanagers))
44 42
        DBSession.add(GroupPermissions(groupname = "hosteditors",
45 43
                idpermission = ideditors))
46 44

  
47 45
        # On commit car app.get fait un rollback ou équivalent
48

  
49
        transaction.commit()
50

  
46
        
47
        transaction.commit()        
48
        
51 49
        # On obtient les variables de sessions comme si on était loggué
52 50
        # en tant que manager
53 51

  
54 52
        environ = {'REMOTE_USER': 'manager'}
55 53
        response = self.app.get('/', extra_environ=environ)
56 54
        tg.request = response.request
57

  
55
        
58 56
        # On récupère la liste des groups auquel on appartient
59

  
57
        
60 58
        grp = get_user_groups()
61 59

  
62 60
        # On vérifi que la liste est correcte (vérifi la gestion des
63 61
        # groupes sous forme d'arbre)
64

  
65
        assert_true( 'hostmanagers' in grp and 'hosteditors' in grp)
66

  
62
        
63
        assert_true( 'hostmanagers' in grp and 'hosteditors' in grp ,
64
            msg = "il est dans %s" % grp)
65
        
67 66
        # On recommence pour l'utilisateur editor
68

  
67
        
69 68
        environ = {'REMOTE_USER': 'editor'}
70 69
        response = self.app.get('/', extra_environ=environ)
71 70
        tg.request = response.request
71
        
72 72
        grp = get_user_groups()
73
        assert_true( not('hostmanagers' in grp) and 'hosteditors' in grp)
73
        
74
        assert_true( not('hostmanagers' in grp) and 'hosteditors' in grp,
75
            msg = "il est dans %s" % grp)
vigiboard/tests/functional/test_vigiboardrequest.py
14 14
import tg
15 15
import transaction
16 16

  
17
#Create an empty database before we start our tests for this module
18
def setup():
19
    """Function called by nose on module load"""
20
    setup_db()
21

  
22
#Teardown that database 
23
def teardown():
24
    """Function called by nose after all tests in this module ran"""
25
    teardown_db()
26 17

  
27 18
class TestVigiboardRequest(TestController):
28 19
    """Test de la classe Vigiboard Request"""
29 20

  
21
    def tearDown(self):
22
        DBSession.rollback()
23
        transaction.begin()
24
        teardown_db()
25

  
30 26
    def test_creation_requete(self):
31 27
        """
32 28
        Génération d'une requête avec application d'un plugin et
33 29
        des permissions
34 30
        """
35

  
36 31
        # On commence par peupler la base de donnée actuellement vide
37 32

  
38 33
        # les groups et leurs dépendances
......
92 87
        DBSession.add(ServiceGroups(servicename = "monserviceuser",
93 88
            groupname = "hosteditors"))
94 89
        DBSession.flush()
95
        
96 90
        # On commit tout car app.get fait un rollback ou équivalent
97 91
        transaction.commit()
98

  
99 92
        # On indique qui on est et on requête l'index pour obtenir
100 93
        # toutes les variables de sessions
101 94
        environ = {'REMOTE_USER': 'editor'}

Also available in: Unified diff