コード例 #1
0
def delete_all_report_notifications():
    for report in ReportNotification.view(
            'reportconfig/all_notifications',
            include_docs=True,
            reduce=False,
    ).all():
        report.delete()
コード例 #2
0
def delete_all_report_notifications():
    for report in ReportNotification.view(
            'reportconfig/all_notifications',
            include_docs=True,
            reduce=False,
    ).all():
        report.delete()
コード例 #3
0
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
コード例 #4
0
ファイル: scheduled.py プロジェクト: lskdev/commcare-hq
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']
コード例 #5
0
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']
コード例 #6
0
ファイル: scheduled.py プロジェクト: dimagi/commcare-hq
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']