コード例 #1
0
ファイル: alerts.py プロジェクト: wcyn/aleph
def check_role_alerts(authz):
    alerts = Alert.by_role(authz.role).all()
    if not len(alerts):
        return
    log.info('Alerting %r, %d alerts...', authz.role, len(alerts))
    for alert in alerts:
        args = {
            'q': alert.query_text,
            'filter:entities.id': alert.entity_id,
            'limit': 50
        }
        state = QueryState(args, authz)
        results = documents_query(state, since=alert.notified_at)
        if results['total'] == 0:
            continue
        log.info('Found %d new results for: %r', results['total'], alert.label)
        alert.update()
        try:
            subject = '%s (%s new results)' % (alert.label, results['total'])
            html = render_template('email/alert.html',
                                   alert=alert,
                                   role=authz.role,
                                   total=results.get('total'),
                                   results=format_results(alert, results),
                                   app_title=app_title,
                                   app_url=app_url)
            notify_role(authz.role, subject, html)
        except Exception as ex:
            log.exception(ex)
    db.session.commit()
コード例 #2
0
def check_role_alerts(authz):
    alerts = Alert.by_role(authz.role).all()
    if not len(alerts):
        return
    log.info('Alerting %r, %d alerts...', authz.role, len(alerts))
    for alert in alerts:
        args = {'q': alert.query_text}
        entity = get_entity(alert.entity_id) if alert.entity_id else None
        state = SearchQueryParser(args, authz)
        query = AlertDocumentsQuery(state,
                                    entity=entity,
                                    since=alert.notified_at)
        results = query.search().get('hits')
        if results['total'] == 0:
            continue
        log.info('Found %d new results for: %r', results['total'], alert.label)
        alert.update()
        try:
            subject = '%s (%s new results)' % (alert.label, results['total'])
            html = render_template('email/alert.html',
                                   alert=alert,
                                   role=authz.role,
                                   total=results.get('total'),
                                   results=format_results(alert, results),
                                   app_title=app_title,
                                   ui_url=app_ui_url)
            notify_role(authz.role, subject, html)
        except Exception as ex:
            log.exception(ex)
    db.session.commit()
コード例 #3
0
ファイル: __init__.py プロジェクト: backgroundcheck/aleph
def check_role_alerts(role):
    alerts = Alert.by_role(role).all()
    if not len(alerts):
        return
    log.info('Alerting %r, %d alerts...', role, len(alerts))
    for alert in alerts:
        results = alert_query(alert)
        if results['total'] == 0:
            continue
        log.info('Found: %d new results for: %r', results['total'],
                 alert.label)
        alert.update()
        try:
            subject = '%s (%s new results)' % (alert.label, results['total'])
            html = render_template('alert.html',
                                   alert=alert,
                                   results=results,
                                   role=role,
                                   qs=make_document_query(alert),
                                   app_title=get_config('APP_TITLE'),
                                   app_url=get_app_url())
            notify_role(role, subject, html)
        except Exception as ex:
            log.exception(ex)
    db.session.commit()
コード例 #4
0
ファイル: __init__.py プロジェクト: CodeForAfrica/aleph
def check_role_alerts(role):
    alerts = Alert.by_role(role).all()
    if not len(alerts):
        return
    log.info('Alerting %r, %d alerts...', role, len(alerts))
    for alert in alerts:
        results = alert_query(alert)
        if results['total'] == 0:
            continue
        log.info('Found: %d new results for: %r', results['total'],
                 alert.label)
        alert.update()
        try:
            subject = '%s (%s new results)' % (alert.label, results['total'])
            html = render_template('alert.html', alert=alert, results=results,
                                   role=role, qs=make_document_query(alert),
                                   app_title=get_app_title(),
                                   app_url=get_app_url())
            notify_role(role, subject, html)
        except Exception as ex:
            log.exception(ex)
    db.session.commit()
コード例 #5
0
def index():
    require(request.authz.logged_in)
    query = Alert.by_role(request.authz.role)
    result = DatabaseQueryResult(request, query, schema=AlertSchema)
    return jsonify(result)
コード例 #6
0
def index():
    if request.authz.logged_in:
        alerts = Alert.by_role(request.authz.role).all()
        return jsonify({'results': alerts, 'total': len(alerts)})
    return jsonify({'results': [], 'total': 0})
コード例 #7
0
ファイル: alerts_api.py プロジェクト: CodeForAfrica/aleph
def index():
    if authz.logged_in():
        alerts = Alert.by_role(request.auth_role).all()
        return jsonify({'results': alerts, 'total': len(alerts)})
    return jsonify({'results': [], 'total': 0})
コード例 #8
0
def index():
    authz.require(authz.logged_in())
    alerts = Alert.by_role(request.auth_role).all()
    return jsonify({'results': alerts, 'total': len(alerts)})
コード例 #9
0
def check_alerts():
    """Go through all users and execute their alerts."""
    for role in Role.all():
        authz = Authz(role=role)
        for alert in Alert.by_role(role).all():
            check_alert(authz, alert)