def delete_all_report_notifications(): for report in ReportNotification.view( 'reportconfig/all_notifications', include_docs=True, reduce=False, ).all(): report.delete()
def get_reports_by_domain(domain): key = [domain] reports = ReportNotification.view('reportconfig/user_notifications', reduce=False, include_docs=True, startkey=key, endkey=key + [{}]) return reports
def get_scheduled_report_ids(period, as_of=None): as_of = as_of or datetime.utcnow() assert period in ('daily', 'weekly', 'monthly'), period def _keys(period, as_of): minute = guess_reporting_minute(as_of) if minute == 0: # for legacy purposes, on the hour also include reports that didn't have a minute set minutes = (None, minute) else: minutes = (minute, ) if period == 'daily': for minute in minutes: yield { 'startkey': [period, as_of.hour, minute], 'endkey': [period, as_of.hour, minute, {}], } elif period == 'weekly': for minute in minutes: yield { 'key': [period, as_of.hour, minute, as_of.weekday()], } else: # monthly for minute in minutes: yield {'key': [period, as_of.hour, minute, as_of.day]} if as_of.day == monthrange(as_of.year, as_of.month)[1]: for day in range(as_of.day + 1, 32): for minute in minutes: yield {'key': [period, as_of.hour, minute, day]} try: keys = _keys(period, as_of) except ValueError: _soft_assert( False, "Celery was probably down for a while. Lots of reports are getting dropped!" ) raise StopIteration for key in keys: for result in ReportNotification.view("reportconfig/all_notifications", reduce=False, include_docs=False, **key).all(): yield result['id']
def get_scheduled_report_ids(period, start_datetime=None, end_datetime=None): end_datetime = end_datetime or datetime.utcnow() assert period in ('daily', 'weekly', 'monthly'), period if not start_datetime: start_datetime = _get_default_start_datetime(end_datetime) for target_point_in_time in _iter_15_minute_marks_in_range( start_datetime, end_datetime): keys = _make_all_notification_view_keys(period, target_point_in_time) for key in keys: for result in ReportNotification.view( "reportconfig/all_notifications", reduce=False, include_docs=False, **key).all(): yield result['id']
def get_scheduled_report_ids(period, start_datetime=None, end_datetime=None): end_datetime = end_datetime or datetime.utcnow() assert period in ('daily', 'weekly', 'monthly'), period if not start_datetime: start_datetime = _get_default_start_datetime(end_datetime) for target_point_in_time in _iter_15_minute_marks_in_range(start_datetime, end_datetime): keys = _make_all_notification_view_keys(period, target_point_in_time) for key in keys: for result in ReportNotification.view( "reportconfig/all_notifications", reduce=False, include_docs=False, **key ).all(): yield result['id']