##// END OF EJS Templates
Option to blacklist certain resources from AlertChannels
pagenoare -
Show More
@@ -0,0 +1,30 b''
1 """connect resources to alert_channels
2
3 Revision ID: e9fcfbdd9498
4 Revises: 55b6e612672f
5 Create Date: 2018-02-28 13:52:50.717217
6
7 """
8
9 # revision identifiers, used by Alembic.
10 revision = 'e9fcfbdd9498'
11 down_revision = '55b6e612672f'
12
13 from alembic import op
14 import sqlalchemy as sa
15
16
17 def upgrade():
18 op.create_table(
19 'channels_resources',
20 sa.Column('channel_pkey', sa.Integer,
21 sa.ForeignKey('alert_channels.pkey',
22 ondelete='CASCADE', onupdate='CASCADE')),
23 sa.Column('resource_id', sa.Integer,
24 sa.ForeignKey('resources.resource_id',
25 ondelete='CASCADE', onupdate='CASCADE'))
26 )
27
28
29 def downgrade():
30 op.drop_table('channels_resources')
@@ -34,6 +34,14 b' channel_rules_m2m_table = sa.Table('
34 sa.ForeignKey('alert_channels_actions.pkey'))
34 sa.ForeignKey('alert_channels_actions.pkey'))
35 )
35 )
36
36
37 channel_resources_m2m_table = sa.Table(
38 'channels_resources', Base.metadata,
39 sa.Column('channel_pkey', sa.Integer,
40 sa.ForeignKey('alert_channels.pkey')),
41 sa.Column('resource_id', sa.Integer,
42 sa.ForeignKey('resources.resource_id'))
43 )
44
37 DATE_FRMT = '%Y-%m-%dT%H:%M'
45 DATE_FRMT = '%Y-%m-%dT%H:%M'
38
46
39
47
@@ -70,6 +78,12 b' class AlertChannel(Base, BaseModel):'
70 passive_updates=True,
78 passive_updates=True,
71 secondary=channel_rules_m2m_table,
79 secondary=channel_rules_m2m_table,
72 backref='channels')
80 backref='channels')
81 resources = sa.orm.relationship('Resource',
82 cascade="all, delete-orphan",
83 passive_deletes=True,
84 passive_updates=True,
85 secondary=channel_resources_m2m_table,
86 backref='resources')
73
87
74 @property
88 @property
75 def channel_visible_value(self):
89 def channel_visible_value(self):
@@ -92,7 +92,12 b' class Event(Base, BaseModel):'
92 users = set([p.user for p in resource.users_for_perm('view')])
92 users = set([p.user for p in resource.users_for_perm('view')])
93 for user in users:
93 for user in users:
94 for channel in user.alert_channels:
94 for channel in user.alert_channels:
95 if not channel.channel_validated or not channel.send_alerts:
95 matches_resource = not channel.resources or resource in [r.resource_id for r in channel.resources]
96 if (
97 not channel.channel_validated or
98 not channel.send_alerts or
99 not matches_resource
100 ):
96 continue
101 continue
97 else:
102 else:
98 try:
103 try:
General Comments 2
Under Review
author

Auto status change to "Under Review"

Rejected

Please use: https://github.com/Appenlight/appenlight to contribute :) Thanks !

You need to be logged in to leave comments. Login now