+
+def email_exception(content=None, title=None):
+ import config
+ from monitor.model import Message
+ import traceback
+ msg=traceback.format_exc()
+ if content:
+ msg = content + "\n" + msg
+
+ full_title = "exception running monitor"
+ if title:
+ full_title = "exception running monitor %s" % title
+
+ m=Message(full_title, msg, False)
+ m.send([config.exception_email])
+ return
+
+def changed_lessthan(last_changed, days):
+ if datetime.now() - last_changed <= timedelta(days):
+ #print "last changed less than %s" % timedelta(days)
+ return True
+ else:
+ #print "last changed more than %s" % timedelta(days)
+ return False
+
+def changed_greaterthan(last_changed, days):
+ if last_changed is None:
+ return False
+
+ if datetime.now() - last_changed > timedelta(days):
+ #print "last changed more than %s" % timedelta(days)
+ return True
+ else:
+ #print "last changed less than %s" % timedelta(days)
+ return False
+
+def found_between(recent_actions, action_type, lower, upper):
+ return found_before(recent_actions, action_type, upper) and found_within(recent_actions, action_type, lower)
+
+def found_before(recent_actions, action_type, within):
+ for action in recent_actions:
+ if action_type == action.action_type and \
+ action.date_created < (datetime.now() - timedelta(within)):
+ return True
+ return False
+
+def found_within(recent_actions, action_type, within):
+ for action in recent_actions:
+ #print "%s - %s %s > %s - %s (%s) ==> %s" % (action.loginbase, action.action_type, action.date_created, datetime.now(), timedelta(within), datetime.now()-timedelta(within), action.date_created > (datetime.now() - timedelta(within)) )
+ if action_type == action.action_type and \
+ action.date_created > (datetime.now() - timedelta(within)):
+ #datetime.now() - action.date_created < timedelta(within):
+ # recent action of given type.
+ #print "%s found_within %s in recent_actions from %s" % (action_type, timedelta(within), action.date_created)
+ return True
+
+ print "%s NOT found_within %s in recent_actions" % (action_type, timedelta(within) )
+ return False