Beispiel #1
0
def pf_swahili_sms(report_schedule, run_frequency):
    """ 
    Generates an sms report of the form:
    'Number of visits this week: DeRenzi(5), Jackson(3), Lesh(1)'
    """
    usr = report_schedule.recipient_user
    organization = report_schedule.organization
    org_domain = organization.domain
    transport = report_schedule.report_delivery
    if organization != None:
        from hq import reporter
        (startdate, enddate) = reporter.get_daterange(run_frequency)
        
        root_orgs = Organization.objects.filter(parent=None, domain=org_domain)
        # note: this pretty sneakily decides for you that you only care
        # about one root organization per domain.  should we lift this 
        # restriction?  otherwise this may hide data from you 
        root_org = root_orgs[0]
        # this call makes the meat of the report.
        report_payload = repinspector.get_data_below(root_org, startdate, enddate, 0)
        
        if transport == 'email':
            do_separate = True
        else:
            do_separate=False
            
        rendered_text = reporter.render_reportstring(org_domain, 
                   report_payload, 
                   run_frequency,
                   template_name="hq/reports/hack_sms_swahili.txt",                                       
                   transport=transport)
        reporter.deliver_report(usr, rendered_text, report_schedule.report_delivery,params={'startdate': startdate, 'enddate': enddate, 'frequency': run_frequency})                
Beispiel #2
0
def admin_per_form_report(report_schedule, run_frequency):
    # nothing calls this... which is good because it doesn't work
    org = report_schedule.organization
    transport = report_schedule.report_delivery   
    usr = report_schedule.recipient_user
    #report_txt = tree_report(organization, run_frequency, recipient=usr, transport=report.report_delivery)   
    
    from hq import reporter
    (startdate, enddate) = reporter.get_daterange(run_frequency)
    
    
    hierarchy = reporter.get_organizational_hierarchy(org.domain)
    
    defs = FormDefModel.objects.all().filter(domain=org.domain)
    
    fulltext = ''
    for fdef in defs:
        report_payload = repinspector.get_report_as_tuples_filtered(hierarchy, [fdef], startdate, enddate, 0)
        print "doing report for: " + str(fdef)
        if transport == 'email':
            do_separate = True
            params = {}
            heading = "Itemized report for " + fdef.form_display_name 
            params['heading'] = heading
            rendered_text = reporter.render_direct_email(report_payload, startdate, enddate, "hq/reports/email_hierarchy_report.txt", params)     
        else:
            do_separate=False
            
        fulltext += rendered_text
    newsubject = "[Commcare HQ] Itemized Report for: " + str(org)
    reporter.deliver_report(usr, fulltext, report_schedule.report_delivery,params={'startdate': startdate, 'enddate': enddate, 'frequency': run_frequency, 'email_subject': newsubject})
Beispiel #3
0
def _catch_all_report(report_schedule, run_frequency, domains, title):
    rendered_text = ''
    from hq import reporter
    # DAN HACK: everyone wants the daily reports to show the last week's worth of data
    # so change this 
    if run_frequency == 'daily':
        run_frequency='weekly'    
    (startdate, enddate) = reporter.get_daterange(run_frequency)
    
    for domain in domains:
        rendered_text += _get_catch_all_email_text(domain, startdate, enddate)
        
    if report_schedule.report_delivery == 'email':
        usr = report_schedule.recipient_user
        subject = "[CommCare HQ] %s report %s - %s :: %s" %\
                    (run_frequency, startdate.strftime('%m/%d/%Y'),
                     enddate.strftime('%m/%d/%Y'), title)
        reporter.transport_email(rendered_text, usr, params={"startdate":startdate,"enddate":enddate,"email_subject":subject})