def send_clinic_reports(period):
    '''
    handle sending of clinic report by given period
    '''
    clinics = Clinic.objects.all()
    for clinic in clinics:
        clinic_report_settings = _get_clinic_report_setting(
                period=period, clinic=clinic)
        logger.info('**** clinic: %s - Handling %s clinic_report_settings...',
                    clinic, len(clinic_report_settings))
        reports_map = {}
        for report_setting in clinic_report_settings:
            clinic_user = report_setting.clinic_user
            email = clinic_user.user.email
            if not email:
                logger.warn('No entity_email for [%s]!', clinic_user)
                continue
            report = reports_map.get(report_setting.report_name, None)
            if not report:
                try:
                    ReportClass = ReportManager.get_report_cls(
                        CLINIC_REPORT_TYPE, name=report_setting.report_name)
                except InvalidReportException:
                    logger.warn('Unknown report [%s]!',
                                report_setting.report_name)
                    continue
                report = ReportClass(clinic=clinic, logger=logger)
                reports_map[report_setting.report_name] = report
            _send_report(report, email)
def send_referring_reports(period):
    '''
    handle sending of referring report by given report settings objects
    '''
    referring_report_settings = _get_referring_report_setting(period)
    logger.info('**** Handling %s referring_report_settings...',
                len(referring_report_settings))
    for report_setting in referring_report_settings:
        referring_entity = report_setting.referring_entity
        email = referring_entity.entity_email
        if not email:
            logger.warn('No entity_email for [%s]!', referring_entity)
            continue
        try:
            ReportClass = ReportManager.get_report_cls(
                REFERRING_REPORT_TYPE, name=report_setting.report_name)
        except InvalidReportException:
            logger.warn('Unknown report [%s]!', report_setting.report_name)
            continue

        report = ReportClass(referring_entity=report_setting.referring_entity,
                             logger=logger)
        _send_report(report, email)