Skip to content

Commit 35327b8

Browse files
committed
add active/inactive events
1 parent ccf6565 commit 35327b8

File tree

2 files changed

+35
-12
lines changed

2 files changed

+35
-12
lines changed

src/components/events/base/event.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class Event:
4242

4343
def __init__(self):
4444
self.name = self.get_name()
45+
self.active = True
4546
self.webhook = True # all events are webhooks by default
4647
self.key = f'{self.name}:{md5(f"{self.name + UNIQUE_KEY}".encode()).hexdigest()[:6]}'
4748
self._actions = []
@@ -70,15 +71,17 @@ def register_action(self, action):
7071
self._actions.append(action)
7172

7273
def trigger(self, *args, **kwargs):
73-
# handle logging
74-
logger.info(f'EVENT TRIGGERED --->\t{str(self)}')
75-
log_event = LogEvent(self.name, 'triggered', datetime.now(), f'{self.name} was triggered')
76-
log_event.write()
77-
78-
# pass data
79-
data = kwargs.get('data')
80-
81-
self.logs.append(log_event)
82-
for action in self._actions:
83-
action.set_data(data)
84-
action.run()
74+
if self.active:
75+
logger.info(f'EVENT TRIGGERED --->\t{str(self)}')
76+
log_event = LogEvent(self.name, 'triggered', datetime.now(), f'{self.name} was triggered')
77+
log_event.write()
78+
79+
# pass data
80+
data = kwargs.get('data')
81+
82+
self.logs.append(log_event)
83+
for action in self._actions:
84+
action.set_data(data)
85+
action.run()
86+
else:
87+
logger.info(f'EVENT NOT TRIGGERED (event is inactive) --->\t{str(self)}')

src/main.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,5 +85,25 @@ def get_logs():
8585
return jsonify([log.as_json() for log in logs])
8686

8787

88+
@app.route("/event/active", methods=["POST"])
89+
def activate_event():
90+
if request.method == 'POST':
91+
# get query parameters
92+
event_name = request.args.get('event', None)
93+
94+
# if event name is not provided, or cannot be found, 404
95+
if event_name is None:
96+
return Response(f'Event name cannot be empty ({event_name})', status=404)
97+
try:
98+
event = em.get(event_name)
99+
except ValueError:
100+
return Response(f'Cannot find event with name: {event_name}', status=404)
101+
102+
# set event to active or inactive, depending on current state
103+
event.active = request.args.get('active', True) == 'true'
104+
logger.info(f'Event {event.name} active set to: {event.active}, via POST request')
105+
return Response(response={event.name: {'active': event.active}}, status=200)
106+
107+
88108
if __name__ == '__main__':
89109
app.run(debug=True)

0 commit comments

Comments
 (0)