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)