Пример #1
0
def _migrate_report_filters(apps, schema_editor):
    """
        Migrates ReportConfig filters with multiple values from CHOICE_DELIMITER-delimited strings to lists.
    """
    key = ["name slug"]
    results = ReportConfig.get_db().view(
        "reportconfig/configs_by_domain",
        reduce=False,
        include_docs=True,
        startkey=key,
        endkey=key + [{}]
    )
    count = 0
    for result in results:
        dirty = False
        doc = result['doc']
        config = ReportConfig.wrap(doc)
        for name, value in config['filters'].items():
            if isinstance(value, str) and CHOICE_DELIMITER in value:
                print("Updating config {} filter {}".format(config._id, name))
                config['filters'][name] = value.split(CHOICE_DELIMITER)
                dirty = True
        if dirty:
            count = count + 1
            config.save()
    print("Updated {} configs".format(count))
Пример #2
0
    def test_saved_report_serialized_filters(self):
        report_config = ReportConfig.wrap({
            "domain": 'saved-report-tests',
            "report_slug": "worker_activity",
            "owner_id": '0123456789',
            "report_type": ConfigurableReportView.prefix,
            "filters": {
                "date-start": "2020-01-01",
                "date-end": "2020-12-31",
                "test-filter": "test"
            }
        })
        report_config._id = 'abc123'

        self.assertEqual(date, type(report_config.filters['date-start']))
        self.assertEqual(date, type(report_config.filters['date-end']))

        filters = report_config.serialized_filters

        expected_filters = {
            "date-start": "2020-01-01",
            "date-end": "2020-12-31",
            "test-filter": "test"
        }
        self.assertEqual(filters, expected_filters)
Пример #3
0
 def test_get_scheduled_report_response(self):
     domain = self.domain
     report_config = ReportConfig.wrap({
         "date_range": "last30",
         "days": 30,
         "domain": domain,
         "report_slug": "worker_activity",
         "report_type": "project_report",
         "owner_id": self.user._id,
     })
     report_config.save()
     report = ReportNotification(
         hour=12, minute=None, day=30, interval='monthly', config_ids=[report_config._id]
     )
     report.save()
     response = get_scheduled_report_response(
         couch_user=self.user, domain=domain, scheduled_report_id=report._id
     )[0]
     self.assertTrue(self.user.username in response.decode('utf-8'))
Пример #4
0
 def test_get_scheduled_report_response(self):
     domain = self.domain
     report_config = ReportConfig.wrap({
         "date_range": "last30",
         "days": 30,
         "domain": domain,
         "report_slug": "worker_activity",
         "report_type": "project_report",
         "owner_id": self.user._id,
     })
     report_config.save()
     report = ReportNotification(hour=12,
                                 minute=None,
                                 day=30,
                                 interval='monthly',
                                 config_ids=[report_config._id])
     report.save()
     response = get_scheduled_report_response(
         couch_user=self.user,
         domain=domain,
         scheduled_report_id=report._id)[0]
     self.assertTrue(self.user.username in response.decode('utf-8'))