def get_statistics_for_exception_group(exception_group_id, days_back=0): exception_group_id = ServicesTools.convert_to_object_id(exception_group_id) statistics = Database.Instance().statistics() key_date = datetime.datetime.utcnow() - timedelta(days=days_back) - timedelta(hours=24) key_date_start = datetime.datetime(key_date.year, key_date.month, key_date.day, key_date.hour, 0, 0) key_date = datetime.datetime.utcnow() key_date_end = datetime.datetime(key_date.year, key_date.month, key_date.day, key_date.hour, 0, 0) results = list(statistics.find( {'exception_group_id': exception_group_id, 'date': {'$gt': key_date_start, '$lt': key_date_end } } ).sort('date', -1)) stats = [] sd = key_date_start for i in range(0, 24): s = [r for r in results if r['date'] == sd] if s: stats.append({'date': sd, 'count': s[0]['count'] }) else: stats.append({'date': sd, 'count': 0 }) sd = sd + timedelta(hours=1) return stats
def get_exceptions_groups( key, application, severity=None, status=False, start=0, maxrecs=20, since=None, sort="last_seen_on", sort_direction=-1, ): exception_groups = Database.Instance().exception_groups() application = ServicesTools.convert_to_object_id(application) query = {"key": key, "application": application, "status": status} if severity is not None: query["severity"] = severity if since: if type(since) != type(datetime.datetime.utcnow()): raise Exception('The value for the "since" parameter must be a datetime object') query["last_seen_on"] = {"$gt": since} group_exceptions = exception_groups.find(query).sort(sort, sort_direction).skip(start).limit(maxrecs) return group_exceptions
def get_statistics_for_application(application_id, severity=1, days_back=0): application_id = ServicesTools.convert_to_object_id(application_id) statistics = Database.Instance().statistics() key_date = datetime.datetime.utcnow() - timedelta(days=days_back) - timedelta(hours=24) key_date_start = datetime.datetime(key_date.year, key_date.month, key_date.day, key_date.hour, 0, 0) key_date = datetime.datetime.utcnow() key_date_end = datetime.datetime(key_date.year, key_date.month, key_date.day, key_date.hour, 0, 0) results = list( statistics.find( { "application_id": application_id, "severity": severity, "date": {"$gt": key_date_start, "$lt": key_date_end}, } ).sort("date", -1) ) stats = [] sd = key_date_start for i in range(0, 24): s = [r for r in results if r["date"] == sd] if s: stats.append({"date": sd, "count": s[0]["count"]}) else: stats.append({"date": sd, "count": 0}) sd = sd + timedelta(hours=1) return stats
def gex_exceptions_in_group(exception_group_id, start=0, maxrecs=10): exception_group_id = ServicesTools.convert_to_object_id(exception_group_id) exceptions = Database.Instance().exceptions() return ( exceptions.find({"exception_group_id": exception_group_id}).skip(start).limit(maxrecs).sort("insert_date", -1) )
def _validate_key(key): key = ServicesTools.convert_to_object_id(key) accounts = Database.Instance().accounts() account = accounts.find_one({'_id': key }) if not account: return False return True
def get_application_by_id(key, application_id): applications = Database.Instance().applications() application_id = ServicesTools.convert_to_object_id(application_id) d = {'key': key, '_id': application_id } app = applications.find_one(d) if not app: return None return app
def insert_application(key, application): applications = Database.Instance().applications() d = {'key': key, 'application': application, 'url_name': ServicesTools.normalize_text_for_url(application) } app = applications.find_one(d) if not app: d['count'] = 1 return applications.save(d) return app['_id']
def archive_all_exception_group(application_id): exception_groups = Database.Instance().exception_groups() application_id = ServicesTools.convert_to_object_id(application_id) exception_groups.update({"application": application_id, "status": False}, {"$set": {"status": True}}, multi=True) applications = Database.Instance().applications() application = applications.find_one({"_id": application_id}) application["count"] = 0 application["0"] = 0 application["1"] = 0 application["2"] = 0 application["3"] = 0 applications.save(application)
def archive_all_exception_group(application_id): exception_groups = Database.Instance().exception_groups() application_id = ServicesTools.convert_to_object_id(application_id) exception_groups.update({ 'application': application_id, 'status': False }, {'$set': {'status': True}}, multi=True) applications = Database.Instance().applications() application = applications.find_one({'_id': application_id }) application['count'] = 0 application['0'] = 0 application['1'] = 0 application['2'] = 0 application['3'] = 0 applications.save(application)
def get_exception_group(exception_group_id): exception_group_id = ServicesTools.convert_to_object_id(exception_group_id) exception_groups = Database.Instance().exception_groups() return exception_groups.find_one({'_id': exception_group_id})