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))
def emaillist(request, domain): """ Test an email report """ # circular import from corehq.apps.reports.schedule.config import ScheduledReportFactory return render_to_response(request, "reports/email/report_list.html", {"domain": domain, "reports": ScheduledReportFactory.get_reports()})
def add_scheduled_report(request, domain, couch_user_id): if request.method == "POST": report_type = request.POST["report_type"] hour = request.POST["hour"] day = request.POST["day"] if day=="all": report = DailyReportNotification() else: report = WeeklyReportNotification() report.day_of_week = int(day) report.hours = int(hour) report.domain = domain report.report_slug = report_type report.user_ids = [couch_user_id] report.save() messages.success(request, "New scheduled report added!") return HttpResponseRedirect(reverse("user_account", args=(domain, couch_user_id ))) context = _users_context(request, domain) context.update({"hours": [(val, "%s:00" % val) for val in range(24)], "days": [(val, calendar.day_name[val]) for val in range(7)], "reports": dict([(key, value) for (key, value) in ScheduledReportFactory.get_reports(domain).items() if value.auth(request)])}) return render_to_response(request, "users/add_scheduled_report.html", context)