Esempio n. 1
0
 def summary(self):
     if getattr(self, '_summary', None) is None:
         answers = [s.answers for s in self.submissions.all()]
         if answers:
             df = pandas.DataFrame(answers)
             self._summary = analysis.count_submissions(df)
         else:
             self._summary = {'male': 0, 'female': 0, 'total': 0}
     return self._summary
Esempio n. 2
0
 def summary(self):
     if getattr(self, '_summary', None) is None:
         form, responses = self.get_survey()
         if responses:
             df = pandas.DataFrame(responses)
             self._summary = analysis.count_submissions(df)
         else:
             self._summary = {'male': 0, 'female': 0, 'total': 0}
     return self._summary
Esempio n. 3
0
def site_result(request, site_slug, result_id):
    result_set = get_object_or_404(
        CycleResultSet,
        id=result_id,
        site__slug__exact=site_slug
    )
    site_responses = [s.answers for s in result_set.submissions.all()]
    if site_responses:
        df = pandas.DataFrame(site_responses)
        form = result_set.survey.form
        site_totals = analysis.count_submissions(df)
        site_results = analysis.count_options(df, form['children'])
        site_results = analysis.calc_q_percents(site_results)
        prev_result_set = result_set.get_previous()
        if prev_result_set:
            prev_responses = [s.answers for s in prev_result_set.submissions.all()]
            if prev_responses:
                site_totals = analysis.count_submissions(
                    pandas.DataFrame(site_responses + prev_responses))
                prev_df = pandas.DataFrame(prev_responses)
                prev_form = prev_result_set.survey.form
                prev_results = analysis.count_options(prev_df, prev_form['children'])
                prev_results = analysis.calc_q_percents(prev_results)
            else:
                prev_results = None
        else:
            prev_results = None
        analysis.combine_curr_hist(site_results, prev_results)
    else:
        site_totals = {'male': 0, 'female': 0, 'total': 0}
        site_results = None

    return render(request, 'site_result_detail.html', {
        'active_tab': 'sites',
        'result_set': result_set,
        'results': {
            'questions_dict': site_results,
            'totals': site_totals,
        }
    })