コード例 #1
0
    def test_export_csv_synonyms(self):
        """
        test exporting a place with synonyms
        """
        assert test_client_login(self.client,
                                 username='******',
                                 password='******') == True

        place_type = PlaceType.objects.get(slug='poi')
        place = Place(pretty_name='Donut Palace',
                      place_type=place_type,
                      address='100 Bubble Street',
                      location=geos.Point(1.0, 2.0))
        place.save()
        ps = PlaceSynonym(pretty_name='Donut Hole', place=place)
        ps.save()
        ps = PlaceSynonym(pretty_name='Donut Pally', place=place)
        ps.save()

        place = Place(pretty_name='Donut Sanctuary',
                      place_type=place_type,
                      address='101 Bubble Street',
                      location=geos.Point(3.0, 4.0),
                      url='http://www.example.org/bs')
        place.save()
        ps = PlaceSynonym(pretty_name='Sancy D', place=place)
        ps.save()
        ps = PlaceSynonym(pretty_name='D Sanc', place=place)
        ps.save()

        response = self.client.post(self.export_url,
                                    {'place_type': place_type.id})
        self.assertEqual(response.status_code, 200)

        rows = csv.reader(StringIO(response.content))

        count = 0
        for row in rows:
            self.assertEqual(len(row), 7)
            synonyms = set(row[5:])
            if row[0] == 'Donut Palace':
                self.assertEqual(row[1], '100 Bubble Street')
                self.assertEqual(row[2], '2.0')
                self.assertEqual(row[3], '1.0')
                self.assertEqual(row[4], '')
                assert 'Donut Hole' in synonyms
                assert 'Donut Pally' in synonyms
            elif row[0] == 'Donut Sanctuary':
                self.assertEqual(row[1], '101 Bubble Street')
                self.assertEqual(row[2], '4.0')
                self.assertEqual(row[3], '3.0')
                self.assertEqual(row[4], 'http://www.example.org/bs')
                assert 'Sancy D' in synonyms
                assert 'D Sanc' in synonyms
            else:
                self.fail('Unexpected Place!' % row[0])
            count += 1

        self.assertEqual(count, 2)
コード例 #2
0
ファイル: tests.py プロジェクト: peudadayusuf/openblock
    def test_export_csv(self):
        """
        test exporting a place type as csv
        """
        assert test_client_login(self.client,
                                 username='******',
                                 password='******') == True

        place_type = PlaceType.objects.get(slug='poi')
        place = Place(pretty_name='Donut Palace',
                      place_type=place_type,
                      address='100 Bubble Street',
                      location=geos.Point(1.0, 2.0))
        place.save()
        place = Place(pretty_name='Donut Sanctuary',
                      place_type=place_type,
                      address='101 Bubble Street',
                      location=geos.Point(3.0, 4.0),
                      url='http://www.example.org/bs')
        place.save()

        response = self.client.post(self.export_url,
                                    {'place_type': place_type.id})
        assert response.status_code == 200

        rows = csv.reader(StringIO(response.content))

        count = 0
        for row in rows:
            assert len(row) == 5
            if row[0] == 'Donut Palace':
                assert row[1] == '100 Bubble Street'
                assert row[2] == '2.0'
                assert row[3] == '1.0'
                assert row[4] == ''
            elif row[0] == 'Donut Sanctuary':
                assert row[1] == '101 Bubble Street'
                assert row[2] == '4.0'
                assert row[3] == '3.0'
                assert row[4] == 'http://www.example.org/bs'
            else:
                assert 0, 'Unexpected Place!'
            count += 1

        assert count == 2
コード例 #3
0
ファイル: admin.py プロジェクト: slinkp/openblock
        except Exception, e:
            message = "Stopped on line %d: %s" % (rows.line_num, e)
            context['errors'].append(message)
            return self._show_import_csv_results(request, context)

        # wonderful, now do something...
        for pretty_name, address, point, place_url, synonyms in validated_rows:
            normalized_name = normalize(pretty_name)

            try:
                place = Place.objects.get(normalized_name=normalized_name,
                                          location__distance_lte=(point,
                                                                  D(m=1)))
                created = False
            except Place.DoesNotExist:
                place = Place(normalized_name=normalized_name)
                created = True

            try:
                place.pretty_name = pretty_name
                place.address = address
                place.location = point
                place.url = place_url
                place.place_type = place_type
                place.save()

                if created:
                    message = 'Created new place %s' % (pretty_name)
                else:
                    message = 'Updated place %s' % (pretty_name)
                context['actions_taken'].append(message)