def test_import_from_json_retrieve_desired_data(self, mocked_create_table):
        mocked_create_table.return_value = 42

        # import using filename
        rows.import_from_json(self.filename)
        call_args = mocked_create_table.call_args_list[0]
        self.assert_create_table_data(call_args, field_ordering=False)

        # import using fobj
        with open(self.filename) as fobj:
            rows.import_from_json(fobj)
            call_args = mocked_create_table.call_args_list[1]
            self.assert_create_table_data(call_args, field_ordering=False)
Exemple #2
0
    def test_import_from_json_retrieve_desired_data(self, mocked_create_table):
        mocked_create_table.return_value = 42

        # import using filename
        table_1 = rows.import_from_json(self.filename)
        call_args = mocked_create_table.call_args_list[0]
        self.assert_create_table_data(call_args, field_ordering=False)

        # import using fobj
        with open(self.filename) as fobj:
            table_2 = rows.import_from_json(fobj)
            call_args = mocked_create_table.call_args_list[1]
            self.assert_create_table_data(call_args, field_ordering=False)
 def test_export_to_json_filename(self):
     # TODO: may test file contents
     temp = tempfile.NamedTemporaryFile(delete=False, mode='wb')
     self.files_to_delete.append(temp.name)
     rows.export_to_json(utils.table, temp.name)
     table = rows.import_from_json(temp.name)
     self.assert_table_equal(table, utils.table)
Exemple #4
0
 def test_export_to_json_filename(self):
     # TODO: may test file contents
     temp = tempfile.NamedTemporaryFile(delete=False, mode="wb")
     self.files_to_delete.append(temp.name)
     rows.export_to_json(utils.table, temp.name)
     table = rows.import_from_json(temp.name)
     self.assert_table_equal(table, utils.table)
Exemple #5
0
    def test_export_to_json_fobj(self):
        # TODO: may test with codecs.open passing an encoding
        # TODO: may test file contents
        temp = tempfile.NamedTemporaryFile(delete=False)
        self.files_to_delete.append(temp.name)
        rows.export_to_json(utils.table, temp.file)

        table = rows.import_from_json(temp.name)
        self.assert_table_equal(table, utils.table)
Exemple #6
0
    def test_export_to_json_fobj(self):
        # TODO: may test with codecs.open passing an encoding
        # TODO: may test file contents
        temp = tempfile.NamedTemporaryFile(delete=False)
        self.files_to_delete.append(temp.name)
        rows.export_to_json(utils.table, temp.file)

        table = rows.import_from_json(temp.name)
        self.assert_table_equal(table, utils.table)
Exemple #7
0
    def test_import_from_json_uses_create_table(self, mocked_create_table):
        mocked_create_table.return_value = 42
        kwargs = {"some_key": 123, "other": 456}
        result = rows.import_from_json(self.filename, encoding=self.encoding, **kwargs)
        self.assertTrue(mocked_create_table.called)
        self.assertEqual(mocked_create_table.call_count, 1)
        self.assertEqual(result, 42)

        call = mocked_create_table.call_args
        kwargs["meta"] = {"imported_from": "json", "filename": self.filename, "encoding": self.encoding}
        self.assertEqual(call[1], kwargs)
Exemple #8
0
    def test_issue_168(self):
        temp = tempfile.NamedTemporaryFile(delete=False, mode="wb")
        filename = "{}.{}".format(temp.name, self.file_extension)
        self.files_to_delete.append(filename)

        table = rows.Table(fields=OrderedDict([("jsoncolumn", rows.fields.JSONField)]))
        table.append({"jsoncolumn": '{"python": 42}'})
        rows.export_to_json(table, filename)

        table2 = rows.import_from_json(filename)
        self.assert_table_equal(table, table2)
Exemple #9
0
    def test_import_from_json_uses_create_table(self, mocked_create_table):
        mocked_create_table.return_value = 42
        kwargs = {'encoding': 'iso-8859-15', 'some_key': 123, 'other': 456, }
        result = rows.import_from_json(self.filename, **kwargs)
        self.assertTrue(mocked_create_table.called)
        self.assertEqual(mocked_create_table.call_count, 1)
        self.assertEqual(result, 42)

        call = mocked_create_table.call_args
        kwargs['meta'] = {'imported_from': 'json', 'filename': self.filename, }
        self.assertEqual(call[1], kwargs)
    def test_issue_168(self):
        temp = tempfile.NamedTemporaryFile(delete=False, mode='wb')
        filename = '{}.{}'.format(temp.name, self.file_extension)
        self.files_to_delete.append(filename)

        table = rows.Table(fields=OrderedDict([('jsoncolumn',
                                                rows.fields.JSONField)]))
        table.append({'jsoncolumn': '{"python": 42}'})
        rows.export_to_json(table, filename)

        table2 = rows.import_from_json(filename)
        self.assert_table_equal(table, table2)
Exemple #11
0
def search_species(name):
    'Search species and return a `rows.Table` with results'

    response = requests.get(URL, params={'name': name, 'format': 'json'})
    json_result = response.json()
    if 'error_message' in json_result and \
            json_result['error_message'].strip() != '':
        raise RuntimeError(json_result['error_message'])

    # Need to dump again to JSON (to get a `bytes` object) and then import as
    # JSON, since there is a little bug on rows
    json_rows = json.dumps(json_result['results'])
    return rows.import_from_json(BytesIO(json_rows))
Exemple #12
0
    def parse(self, response):
        encoding = "utf-8"
        table = rows.import_from_json(
            io.BytesIO(response.body),
            encoding=encoding
        )

        # TODO - get last_date from another source at *.saude.ce.gov.br
        last_date = datetime.now().date()
        self.add_report(date=last_date, url=self.start_urls[0])

        total_confirmed = total_deaths = 0
        imported_confirmed = imported_deaths = 0

        cases = defaultdict(dict)
        for row in table:

            if row.tipo == 'Confirmado':
                cases[row.municipio]["confirmed"] = row.quantidade
            elif row.tipo == 'Óbito':
                cases[row.municipio]["deaths"] = row.quantidade
            else:
                raise ValueError(f'Unknown case type : "{row.tipo}"')

        for city, city_data in cases.items():
            confirmed = city_data["confirmed"]
            deaths = city_data.get("deaths", 0)

            try:
                self.get_city_id_from_name(city)
            except KeyError:
                imported_confirmed += confirmed
                imported_deaths += deaths
            else:
                self.add_city_case(city=city, confirmed=confirmed, deaths=deaths)

            total_confirmed += confirmed
            total_deaths += deaths

        if imported_confirmed == imported_deaths == 0:
            imported_confirmed = imported_deaths = None

        self.add_city_case(
            city="Importados/Indefinidos",
            confirmed=imported_confirmed,
            deaths=imported_deaths,
        )

        self.add_state_case(confirmed=total_confirmed, deaths=total_deaths)
Exemple #13
0
    def test_import_from_json_uses_create_table(self, mocked_create_table):
        mocked_create_table.return_value = 42
        kwargs = {"some_key": 123, "other": 456}
        result = rows.import_from_json(self.filename,
                                       encoding=self.encoding,
                                       **kwargs)
        self.assertTrue(mocked_create_table.called)
        self.assertEqual(mocked_create_table.call_count, 1)
        self.assertEqual(result, 42)

        call = mocked_create_table.call_args
        kwargs["meta"] = {
            "imported_from": "json",
            "filename": self.filename,
            "encoding": self.encoding,
        }
        self.assertEqual(call[1], kwargs)
Exemple #14
0
    def test_import_from_json_uses_create_table(self, mocked_create_table):
        mocked_create_table.return_value = 42
        kwargs = {
            'encoding': 'iso-8859-15',
            'some_key': 123,
            'other': 456,
        }
        result = rows.import_from_json(self.filename, **kwargs)
        self.assertTrue(mocked_create_table.called)
        self.assertEqual(mocked_create_table.call_count, 1)
        self.assertEqual(result, 42)

        call = mocked_create_table.call_args
        kwargs['meta'] = {
            'imported_from': 'json',
            'filename': self.filename,
        }
        self.assertEqual(call[1], kwargs)