def initialize(app): # Initialize the sources for source_name, source_details in app.config.get('REVERE_SOURCES', {}).items(): if source_details.get('enabled') is False: continue app.sources[source_name] = get_klass(source_details['type'])(description=source_details.get('description'), config=source_details['config']) # Initialize the alerts for alert_name, alert_details in app.config.get('REVERE_ALERTS', {}).items(): app.alerts[alert_name] = get_klass(alert_details['type'])(description=alert_details.get('description'), config=alert_details['config'], enabled_in_config=alert_details.get('enabled', True)) alert = Alert.query.filter_by(key=alert_name).first() if not alert: alert = Alert(key=alert_name) db.session.add(alert) Alert.query.filter(not_(Alert.key.in_(app.alerts.keys()))).delete(synchronize_session='fetch') db.session.commit() # Run the maintenance routine hourly scheduler.add_cron_job(monitor_maintenance, year="*", month="*", day="*", hour="*", minute="0") for monitor in Monitor.query.filter_by(active=True): update_monitor_scheduler(monitor) scheduler.start()
def create(): form = MonitorForm(request.form) if request.method == 'POST' and form.validate(): new_monitor = Monitor(state='INACTIVE') form.populate_obj(new_monitor) db.session.add(new_monitor) db.session.commit() update_monitor_scheduler(new_monitor) return redirect(url_for('monitor_detail', monitor_id=new_monitor.id)) return render_template('monitor_edit.html', form=form, sources=app.sources, create=True)
def monitor_edit(monitor_id): monitor = Monitor.query.get_or_404(monitor_id) form = MonitorForm(request.form, monitor) if form.validate_on_submit(): form.populate_obj(monitor) db.session.add(monitor) db.session.commit() if not monitor.active: monitor.record_run('INACTIVE', 'Monitor edited', None) update_monitor_scheduler(monitor) return redirect(url_for('monitor_detail', monitor_id=monitor.id)) return render_template('monitor_edit.html', form=form, sources=app.sources, monitor=monitor, create=False)
def initialize(app): # Initialize the sources for source_name, source_details in app.config.get('REVERE_SOURCES', {}).items(): if source_details.get('enabled') is False: continue app.sources[source_name] = get_klass(source_details['type'])( description=source_details.get('description'), config=source_details['config']) # Initialize the alerts for alert_name, alert_details in app.config.get('REVERE_ALERTS', {}).items(): app.alerts[alert_name] = get_klass(alert_details['type'])( description=alert_details.get('description'), config=alert_details['config'], enabled_in_config=alert_details.get('enabled', True)) alert = Alert.query.filter_by(key=alert_name).first() if not alert: alert = Alert(key=alert_name) db.session.add(alert) Alert.query.filter(not_(Alert.key.in_( app.alerts.keys()))).delete(synchronize_session='fetch') db.session.commit() # Run the maintenance routine hourly scheduler.add_cron_job(monitor_maintenance, year="*", month="*", day="*", hour="*", minute="0") for monitor in Monitor.query.filter_by(active=True): update_monitor_scheduler(monitor) scheduler.start()