Exemple #1
0
def newitemcopy(db, cl, nodeid, oldvalues):
    ''' Copy a message about new items to the dispatcher address.
    '''
    try:
        create_note = cl.generateCreateNote(nodeid)
    except AttributeError:
        create_note = generateCreateNote(db, cl, nodeid)

    try:
        dispatcher_email = getattr(db.config, 'DISPATCHER_EMAIL')
    except AttributeError:
        return

    try:
        msgids = cl.get(nodeid, 'messages')
    except KeyError:
        msgids = None

    if msgids:
        # send a copy to the dispatcher
        for msgid in msgids:
            try:
                cl.send_message(nodeid, msgid, create_note, [dispatcher_email])
            except roundupdb.MessageSendError as message:
                raise roundupdb.DetectorError(message)
    else:
        mailer = Mailer(db.config)
        subject = 'New %s%s' % (cl.classname, nodeid)
        mailer.standard_message([dispatcher_email], subject, create_note)
def notify (db, alarm, sensor, measurement, timestamp, is_lower) :
    sendto  = []
    for uid in db.user.getnodeids (retired = False) :
        adr = db.user.get (uid, 'address')
        if adr :
            sendto.append (adr)
    # do nothing if no addresses to notify
    if not adr :
        return
    _ = get_mail_translation (db).gettext
    overunder = _ (''"over")
    if is_lower :
        overunder = _ (''"under")
    dev = db.device.getnode (sensor.device)
    cname = sensor.name
    cadr  = sensor.adr
    dname = dev.name
    dadr  = dev.adr
    value = measurement.val
    threshold = alarm.val
    m = _ (msg) % locals ()
    mailer  = Mailer (db.config)
    subject = _ (''"Sensor alert")
    try :
        mailer.standard_message (sendto, subject, m)
    except MessageSendError, err :
        raise DetectorError, err
        create_note = cl.generateCreateNote(nodeid)
    except AttributeError:
        create_note = generateCreateNote(db, cl, nodeid)

    try:
        dispatcher_email = getattr(db.config, 'DISPATCHER_EMAIL')
    except AttributeError:
        return

    try:
        msgids = cl.get(nodeid, 'messages')
    except KeyError:
        msgids = None

    if msgids:
        # send a copy to the dispatcher
        for msgid in msgids:
            try:
                cl.send_message(nodeid, msgid, create_note, [dispatcher_email])
            except roundupdb.MessageSendError, message:
                raise roundupdb.DetectorError, message
    else:
        mailer = Mailer(db.config)
        subject = 'New %s%s' % (cl.classname, nodeid)
        mailer.standard_message([dispatcher_email], subject, create_note)

def init(db):
    for classname in db.getclasses():
        cl = db.getclass(classname)
        cl.react('create', newitemcopy)