Revision 9c0dbb6a
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
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