def send_report(scheduled_report, user): if isinstance(user, dict): user = CouchUser.wrap_correctly(user) try: report = ScheduledReportFactory.get_report(scheduled_report.report_slug) body = report.get_response(user, scheduled_report.domain) email = user.get_email() if email: send_HTML_email("%s [%s]" % (report.title, scheduled_report.domain), email, html2text(body), body) else: raise SMTPRecipientsRefused(None) except Http404: # Scenario: user has been removed from the domain that they have scheduled reports for. # Do a scheduled report cleanup user_id = unicode(user.get_id) domain = Domain.get_by_name(scheduled_report.domain) user_ids = [user.get_id for user in domain.all_users()] if user_id not in user_ids: # remove the offending user from the scheduled report scheduled_report.user_ids.remove(user_id) if len(scheduled_report.user_ids) == 0: # there are no users with appropriate permissions left in the scheduled report, # so remove it scheduled_report.delete() else: scheduled_report.save()
def emailtest(request, domain, report_slug): """ Test an email report """ # circular import from corehq.apps.reports.schedule.config import ScheduledReportFactory report = ScheduledReportFactory.get_report(report_slug) report.get_response(request.user, domain) return HttpResponse(report.get_response(request.user, domain))