示例#1
0
    def test_export_works_if_no_version_value_provided_in_submission(self):
        submissions = self.asset.deployment._get_submissions()

        for submission in submissions:
            del submission['__version__']

        values = report_data.data_by_identifiers(self.asset,
                                                 field_names=['Date', 'Decimal'],
                                                 submission_stream=submissions)

        (date_stats, decimal_stats) = values
        self.assertEqual(date_stats['data'], {
          'provided': 4,
          'total_count': 4,
          'stdev': 0.9574271077563381,
          'median': 3.0,
          'show_graph': False,
          'mode': 3.5,
          'not_provided': 0,
          'mean': 2.75,
        })
        self.assertEqual(decimal_stats['data'], {
            u'provided': 4,
            u'frequencies': (1, 1, 1, 1),
            u'show_graph': True,
            u'not_provided': 0,
            u'total_count': 4,
            u'responses': (u'2016-06-01', u'2016-06-02', u'2016-06-03', u'2016-06-05'),
            u'percentages': (25.0, 25.0, 25.0, 25.0),
        })
示例#2
0
 def test_kobo_apps_reports_report_data_split_by(self):
     values = report_data.data_by_identifiers(
         self.asset,
         split_by="Select_one",
         field_names=["Date"],
         submission_stream=self.submissions)
     self.assertEqual(values[0]['data']['values'], [
         (u'2016-06-01', {
             u'responses': (u'First option', u'Second option'),
             u'frequencies': (1, 0),
             u'percentages': (25.0, 0.0)
         }),
         (u'2016-06-02', {
             u'responses': (u'First option', u'Second option'),
             u'frequencies': (1, 0),
             u'percentages': (25.0, 0.0)
         }),
         (u'2016-06-03', {
             u'responses': (u'First option', u'Second option'),
             u'frequencies': (0, 1),
             u'percentages': (0.0, 25.0)
         }),
         (u'2016-06-05', {
             u'responses': (u'First option', u'Second option'),
             u'frequencies': (1, 0),
             u'percentages': (25.0, 0.0)
         }),
     ])
示例#3
0
    def test_export_works_if_no_version_value_provided_in_submission(self):
        submissions = self.asset.deployment._get_submissions()

        for submission in submissions:
            del submission['__version__']

        values = report_data.data_by_identifiers(self.asset,
                                                 field_names=['Date', 'Decimal'],
                                                 submission_stream=submissions)

        (date_stats, decimal_stats) = values
        self.assertEqual(date_stats['data'], {
          'provided': 4,
          'total_count': 4,
          'stdev': 0.9574271077563381,
          'median': 3.0,
          'show_graph': False,
          'mode': 3.5,
          'not_provided': 0,
          'mean': 2.75,
        })
        self.assertEqual(decimal_stats['data'], {
            u'provided': 4,
            u'frequencies': (1, 1, 1, 1),
            u'show_graph': True,
            u'not_provided': 0,
            u'total_count': 4,
            u'responses': (u'2016-06-01', u'2016-06-02', u'2016-06-03', u'2016-06-05'),
            u'percentages': (25.0, 25.0, 25.0, 25.0),
        })
示例#4
0
 def test_kobo_apps_reports_report_data_subset(self):
     values = report_data.data_by_identifiers(self.asset,
                                              field_names=('Select_one',),
                                              submission_stream=self.submissions)
     self.assertEqual(values[0]['data']['frequencies'], (3, 1))
     self.assertEqual(values[0]['row']['type'], 'select_one')
     self.assertEqual(values[0]['data']['percentages'], (75, 25))
     self.assertEqual(values[0]['data']['responses'], (u'First option', u'Second option'))
示例#5
0
 def test_kobo_apps_reports_report_data_subset(self):
     values = report_data.data_by_identifiers(self.asset,
                                              field_names=('Select_one',),
                                              submission_stream=self.submissions)
     self.assertEqual(values[0]['data']['frequencies'], (3, 1))
     self.assertEqual(values[0]['row']['type'], 'select_one')
     self.assertEqual(values[0]['data']['percentages'], (75, 25))
     self.assertEqual(values[0]['data']['responses'], (u'First option', u'Second option'))
示例#6
0
 def test_kobo_apps_reports_report_data(self):
     values = report_data.data_by_identifiers(self.asset,
                                       submission_stream=self.submissions)
     expected_names = ["start", "end", "Select_one", "Select_Many", "Text",
                       "Number", "Decimal", "Date", "Time", "Date_and_time",
                       "GPS", "Photo", "Audio", "Video", "Barcode",
                       "Acknowledge", "calculation"]
     self.assertEqual([v['name'] for v in values], expected_names)
     self.assertEqual(len(values), 17)
示例#7
0
 def test_kobo_apps_reports_report_data(self):
     values = report_data.data_by_identifiers(self.asset,
                                       submission_stream=self.submissions)
     expected_names = ["start", "end", "Select_one", "Select_Many", "Text",
                       "Number", "Decimal", "Date", "Time", "Date_and_time",
                       "GPS", "Photo", "Audio", "Video", "Barcode",
                       "Acknowledge", "calculation"]
     self.assertEqual([v['name'] for v in values], expected_names)
     self.assertEqual(len(values), 17)
示例#8
0
 def test_kobo_apps_reports_report_data_translation(self):
     values = report_data.data_by_identifiers(self.asset,
                                       lang='Arabic',
                                       field_names=('Select_one',),
                                       submission_stream=self.submissions)
     self.assertEqual(values[0]['data']['responses'],
                      (  # response 1 in Arabic
                       u'\u0627\u0644\u062e\u064a\u0627\u0631 '
                       u'\u0627\u0644\u0623\u0648\u0644',
                       # response 2 in Arabic
                       u'\u0627\u0644\u062e\u064a\u0627\u0631 '
                       u'\u0627\u0644\u062b\u0627\u0646\u064a'))
示例#9
0
 def test_kobo_apps_reports_report_data_split_by_translated(self):
     values = report_data.data_by_identifiers(self.asset,
                                              split_by="Select_one",
                                              lang="Arabic",
                                              field_names=["Date"],
                                              submission_stream=self.submissions)
     responses = set()
     for rv in OrderedDict(values[0]['data']['values']).values():
         responses.update(rv.get('responses'))
     expected = set([u'\u0627\u0644\u062e\u064a\u0627\u0631 \u0627\u0644\u0623\u0648\u0644',
                          u'\u0627\u0644\u062e\u064a\u0627\u0631 \u0627\u0644\u062b\u0627\u0646\u064a'])
     self.assertEqual(responses, expected)
示例#10
0
 def test_kobo_apps_reports_report_data_translation(self):
     values = report_data.data_by_identifiers(self.asset,
                                       lang='Arabic',
                                       field_names=('Select_one',),
                                       submission_stream=self.submissions)
     self.assertEqual(values[0]['data']['responses'],
                      (  # response 1 in Arabic
                       u'\u0627\u0644\u062e\u064a\u0627\u0631 '
                       u'\u0627\u0644\u0623\u0648\u0644',
                       # response 2 in Arabic
                       u'\u0627\u0644\u062e\u064a\u0627\u0631 '
                       u'\u0627\u0644\u062b\u0627\u0646\u064a'))
示例#11
0
 def test_kobo_apps_reports_report_data_split_by_translated(self):
     values = report_data.data_by_identifiers(self.asset,
                                              split_by="Select_one",
                                              lang="Arabic",
                                              field_names=["Date"],
                                              submission_stream=self.submissions)
     responses = set()
     for rv in OrderedDict(values[0]['data']['values']).values():
         responses.update(rv.get('responses'))
     expected = set([u'\u0627\u0644\u062e\u064a\u0627\u0631 \u0627\u0644\u0623\u0648\u0644',
                          u'\u0627\u0644\u062e\u064a\u0627\u0631 \u0627\u0644\u062b\u0627\u0646\u064a'])
     self.assertEqual(responses, expected)
示例#12
0
文件: reports.py 项目: kimetrica/kpi
    def to_representation(self, obj):
        request = self.context['request']
        if 'names' in request.query_params:
            vnames = filter(lambda x: len(x) > 1,
                            request.query_params.get('names', '').split(','))
        else:
            vnames = None

        split_by = request.query_params.get('split_by', None)
        submission_stream = obj.deployment.get_submissions(request.user.id)
        _list = report_data.data_by_identifiers(
            obj,
            vnames,
            split_by=split_by,
            submission_stream=submission_stream)

        return {
            'url': reverse('asset-reports', args=(obj.uid, ), request=request),
            'count': len(_list),
            'list': _list,
        }
示例#13
0
 def test_kobo_apps_reports_report_data_split_by(self):
     values = report_data.data_by_identifiers(self.asset,
                                       split_by="Select_one",
                                       field_names=["Date"],
                                       submission_stream=self.submissions)
     self.assertEqual(values[0]['data']['values'], [
             (u'2016-06-01',
               {u'responses': (u'First option', u'Second option'),
                u'frequencies': (1,             0),
                u'percentages': (25.0,          0.0)}),
             (u'2016-06-02',
               {u'responses': (u'First option', u'Second option'),
                u'frequencies': (1,             0),
                u'percentages': (25.0,          0.0)}),
             (u'2016-06-03',
               {u'responses': (u'First option', u'Second option'),
                u'frequencies': (0,             1),
                u'percentages': (0.0,           25.0)}),
             (u'2016-06-05',
               {u'responses': (u'First option', u'Second option'),
                u'frequencies': (1,              0),
                u'percentages': (25.0,           0.0)}),
       ])